diff --git a/addons/crm/i18n/crm.pot b/addons/crm/i18n/crm.pot index d2aa494e98c..8711a16f7eb 100644 --- a/addons/crm/i18n/crm.pot +++ b/addons/crm/i18n/crm.pot @@ -3560,8 +3560,7 @@ msgstr "" #. module: crm #: model:ir.actions.act_window,help:crm.crm_opportunity_report_action_lead -msgid "This report analyses the source of your leads\n" -"(including those converted into opportunities)." +msgid "This report analyses the source of your leads." msgstr "" #. module: crm diff --git a/addons/crm/report/crm_opportunity_report_views.xml b/addons/crm/report/crm_opportunity_report_views.xml index b8b934f7330..ba79798455c 100644 --- a/addons/crm/report/crm_opportunity_report_views.xml +++ b/addons/crm/report/crm_opportunity_report_views.xml @@ -77,8 +77,8 @@ [('probability', '=', 100)] {'col_group_by': ['create_date:month'], 'group_by': ['country_id']} - - Expected Revenus by Team + + Expected Revenue by Team crm.opportunity.report {'group_by': ['create_date:month', 'team_id'], 'measures': ['expected_revenue', '__count']} @@ -191,13 +191,12 @@ with the the sales channel. crm.opportunity.report form pivot,graph - {'search_default_current': True, 'active_test': True} + {'search_default_current': True, 'active_test': True, 'search_default_lead': True} - This report analyses the source of your leads -(including those converted into opportunities). + This report analyses the source of your leads. - + diff --git a/addons/payment_authorize/models/authorize_request.py b/addons/payment_authorize/models/authorize_request.py index f31cf45801a..1ae0e71b6ed 100644 --- a/addons/payment_authorize/models/authorize_request.py +++ b/addons/payment_authorize/models/authorize_request.py @@ -111,7 +111,7 @@ class AuthorizeAPI(): payment_profile = etree.SubElement(profile, "paymentProfiles") etree.SubElement(payment_profile, "customerType").text = 'business' if partner.is_company else 'individual' billTo = etree.SubElement(payment_profile, "billTo") - etree.SubElement(billTo, "address").text = (partner.street + (partner.street2 if partner.street2 else '')) or None + etree.SubElement(billTo, "address").text = (partner.street or '' + (partner.street2 if partner.street2 else '')) or None etree.SubElement(billTo, "city").text = partner.city etree.SubElement(billTo, "state").text = partner.state_id.name or None etree.SubElement(billTo, "zip").text = partner.zip diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index 32a9f584664..57d6eec92b1 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -915,7 +915,7 @@ class ProcurementOrder(models.Model): if self.purchase_line_id: if not self.move_ids: return False - return all(move.state == 'done' for move in self.move_ids) + return all(move.state in ('done', 'cancel') for move in self.move_ids) and any(move.state == 'done' for move in self.move_ids) return super(ProcurementOrder, self)._check() def _get_purchase_schedule_date(self): diff --git a/addons/web/static/src/js/framework/crash_manager.js b/addons/web/static/src/js/framework/crash_manager.js index af982ecd15d..efd4bcc979c 100644 --- a/addons/web/static/src/js/framework/crash_manager.js +++ b/addons/web/static/src/js/framework/crash_manager.js @@ -205,7 +205,7 @@ var RedirectWarningHandler = Dialog.extend(ExceptionHandler, { } }); -core.crash_registry.add('openerp.exceptions.RedirectWarning', RedirectWarningHandler); +core.crash_registry.add('odoo.exceptions.RedirectWarning', RedirectWarningHandler); return CrashManager; }); diff --git a/doc/cla/individual/vincentadriaensen.md b/doc/cla/individual/vincentadriaensen.md new file mode 100644 index 00000000000..3fcaa1d1352 --- /dev/null +++ b/doc/cla/individual/vincentadriaensen.md @@ -0,0 +1,11 @@ +Belgium, 19/07/2017 + +I hereby agree to the terms of the Odoo Individual Contributor License +Agreement v1.0. + +I declare that I am authorized and able to make this agreement and sign this +declaration. + +Signed, + +Vincent Adriaensen vincentadriaensen@users.noreply.github.com https://github.com/vincentadriaensen diff --git a/odoo/addons/test_converter/models.py b/odoo/addons/test_converter/models.py index b6251a5df3f..55938946b34 100644 --- a/odoo/addons/test_converter/models.py +++ b/odoo/addons/test_converter/models.py @@ -21,12 +21,12 @@ class test_model(models.Model): (4, "réponse "), ]) selection_str = fields.Selection([ - ('A', "Qu'il n'est pas arrivé à Toronto"), - ('B', "Qu'il était supposé arriver à Toronto"), - ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), - ('D', "La réponse D"), - ], string="Lorsqu'un pancake prend l'avion à destination de Toronto et " - "qu'il fait une escale technique à St Claude, on dit:") + ('A', u"Qu'il n'est pas arrivé à Toronto"), + ('B', u"Qu'il était supposé arriver à Toronto"), + ('C', u"Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), + ('D', u"La réponse D"), + ], string=u"Lorsqu'un pancake prend l'avion à destination de Toronto et " + u"qu'il fait une escale technique à St Claude, on dit:") html = fields.Html() text = fields.Text() diff --git a/odoo/netsvc.py b/odoo/netsvc.py index 3c0bac45274..ee961529c70 100644 --- a/odoo/netsvc.py +++ b/odoo/netsvc.py @@ -109,6 +109,7 @@ def init_logger(): _logger_init = True logging.addLevelName(25, "INFO") + logging.captureWarnings(True) from tools.translate import resetlocale resetlocale() diff --git a/odoo/service/server.py b/odoo/service/server.py index 5831bcef309..5078340b057 100644 --- a/odoo/service/server.py +++ b/odoo/service/server.py @@ -75,12 +75,11 @@ class BaseWSGIServerNoBind(LoggingBaseWSGIServerMixIn, werkzeug.serving.BaseWSGI use this class, sets the socket and calls the process_request() manually """ def __init__(self, app): - werkzeug.serving.BaseWSGIServer.__init__(self, "1", "1", app) - def server_bind(self): - # we dont bind beause we use the listen socket of PreforkServer#socket - # instead we close the socket + werkzeug.serving.BaseWSGIServer.__init__(self, "127.0.0.1", 0, app) + # Directly close the socket. It will be replaced by WorkerHTTP when processing requests if self.socket: self.socket.close() + def server_activate(self): # dont listen as we use PreforkServer#socket pass @@ -582,6 +581,7 @@ class PreforkServer(CommonServer): if self.address: # listen to socket + _logger.info('HTTP service (werkzeug) running on %s:%s', *self.address) self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.socket.setblocking(0)