diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-07-28 17:25:45 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-07-28 17:25:45 +0200 |
| commit | c0ec09e9d56485f3c6a24593bbc0240f54e433c3 (patch) | |
| tree | c7b3f87cc278596366d7236065be45cf32b1625c | |
| parent | 681f03e30978af39e09bcad12e7a3d9392f23ccb (diff) | |
| parent | be77cf7f5fcb1f8cc080b8213b8474e1a6b75fd4 (diff) | |
[MERGE] forward port branch saas-14 up to be77cf7f5fc
| -rw-r--r-- | addons/crm/i18n/crm.pot | 3 | ||||
| -rw-r--r-- | addons/crm/report/crm_opportunity_report_views.xml | 9 | ||||
| -rw-r--r-- | addons/mrp/models/mrp_bom.py | 4 | ||||
| -rw-r--r-- | addons/mrp/views/mrp_production_views.xml | 2 | ||||
| -rw-r--r-- | addons/payment_authorize/models/authorize_request.py | 2 | ||||
| -rw-r--r-- | addons/purchase/models/purchase.py | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/framework/crash_manager.js | 2 | ||||
| -rw-r--r-- | doc/cla/individual/vincentadriaensen.md | 11 | ||||
| -rw-r--r-- | odoo/addons/test_converter/models.py | 12 | ||||
| -rw-r--r-- | odoo/netsvc.py | 1 | ||||
| -rw-r--r-- | odoo/service/server.py | 8 |
11 files changed, 33 insertions, 23 deletions
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 @@ <field name="domain">[('probability', '=', 100)]</field> <field name="context">{'col_group_by': ['create_date:month'], 'group_by': ['country_id']}</field> </record> - <record id="ir_filters_crm_opportunity_report_next_action" model="ir.filters"> - <field name="name">Expected Revenus by Team</field> + <record id="filter_opportunity_expected_revenue" model="ir.filters"> + <field name="name">Expected Revenue by Team</field> <field name="model_id">crm.opportunity.report</field> <field name="user_id" eval="False"/> <field name="context">{'group_by': ['create_date:month', 'team_id'], 'measures': ['expected_revenue', '__count']}</field> @@ -191,13 +191,12 @@ with the the sales channel.</field> <field name="res_model">crm.opportunity.report</field> <field name="view_type">form</field> <field name="view_mode">pivot,graph</field> - <field name="context">{'search_default_current': True, 'active_test': True}</field> + <field name="context">{'search_default_current': True, 'active_test': True, 'search_default_lead': True}</field> <field name="view_ids" eval="[(5, 0, 0), (0, 0, {'view_mode': 'pivot', 'view_id': ref('crm_opportunity_report_view_pivot_lead')}), (0, 0, {'view_mode': 'graph', 'view_id': ref('crm_opportunity_report_view_graph_lead')})]"/> - <field name="help">This report analyses the source of your leads -(including those converted into opportunities).</field> + <field name="help">This report analyses the source of your leads.</field> </record> <menuitem diff --git a/addons/mrp/models/mrp_bom.py b/addons/mrp/models/mrp_bom.py index de6fb661fea..ea74c32ff1f 100644 --- a/addons/mrp/models/mrp_bom.py +++ b/addons/mrp/models/mrp_bom.py @@ -53,9 +53,9 @@ class MrpBom(models.Model): default='asap', required=True) picking_type_id = fields.Many2one( 'stock.picking.type', 'Operation Type', domain=[('code', '=', 'mrp_operation')], - help="When a procurement has a ‘produce’ route with a operation type set, it will try to create " + help=u"When a procurement has a ‘produce’ route with a operation type set, it will try to create " "a Manufacturing Order for that product using a BoM of the same operation type. That allows " - "to define procurement rules which trigger different manufacturing orders with different BoMs. ") + "to define procurement rules which trigger different manufacturing orders with different BoMs.") company_id = fields.Many2one( 'res.company', 'Company', default=lambda self: self.env['res.company']._company_default_get('mrp.bom'), diff --git a/addons/mrp/views/mrp_production_views.xml b/addons/mrp/views/mrp_production_views.xml index 20140bdbae9..fb883572426 100644 --- a/addons/mrp/views/mrp_production_views.xml +++ b/addons/mrp/views/mrp_production_views.xml @@ -151,7 +151,7 @@ <page string="Miscellaneous"> <group> <group groups="stock.group_stock_multi_locations"> - <field name="picking_type_id" attrs="{'readonly': [('has_moves', '=', True)]}"/> + <field name="picking_type_id" domain="[('code', '=', 'mrp_operation')]" attrs="{'readonly': [('has_moves', '=', True)]}"/> <field name="location_src_id" domain="[('usage','=','internal')]" attrs="{'readonly': [('has_moves', '=', True)]}"/> <field name="location_dest_id" domain="[('usage','=','internal')]" attrs="{'readonly': [('has_moves', '=', True)]}"/> </group> 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 <D>"), ]) 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) |
