summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/delivery/models/delivery_carrier.py31
-rw-r--r--addons/delivery/views/delivery_view.xml8
2 files changed, 38 insertions, 1 deletions
diff --git a/addons/delivery/models/delivery_carrier.py b/addons/delivery/models/delivery_carrier.py
index 2001035868f..17466f93ef7 100644
--- a/addons/delivery/models/delivery_carrier.py
+++ b/addons/delivery/models/delivery_carrier.py
@@ -2,8 +2,9 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
+import psycopg2
-from odoo import api, fields, models, _
+from odoo import api, fields, models, registry, SUPERUSER_ID, _
_logger = logging.getLogger(__name__)
@@ -39,6 +40,7 @@ class DeliveryCarrier(models.Model):
delivery_type = fields.Selection([('fixed', 'Fixed Price')], string='Provider', default='fixed', required=True)
integration_level = fields.Selection([('rate', 'Get Rate'), ('rate_and_ship', 'Get Rate and Create Shipment')], string="Integration Level", default='rate_and_ship', help="Action while validating Delivery Orders")
prod_environment = fields.Boolean("Environment", help="Set to True if your credentials are certified for production.")
+ debug_logging = fields.Boolean('Debug logging', help="Log requests in order to ease debugging")
company_id = fields.Many2one('res.company', string='Company', related='product_id.company_id', store=True)
product_id = fields.Many2one('product.product', string='Delivery Product', required=True, ondelete='restrict')
@@ -59,6 +61,10 @@ class DeliveryCarrier(models.Model):
for c in self:
c.prod_environment = not c.prod_environment
+ def toggle_debug(self):
+ for c in self:
+ c.debug_logging = not c.debug_logging
+
@api.multi
def install_more_provider(self):
return {
@@ -154,6 +160,29 @@ class DeliveryCarrier(models.Model):
if hasattr(self, '%s_cancel_shipment' % self.delivery_type):
return getattr(self, '%s_cancel_shipment' % self.delivery_type)(pickings)
+ def log_xml(self, xml_string, func):
+ self.ensure_one()
+
+ if self.debug_logging:
+ db_name = self._cr.dbname
+
+ # Use a new cursor to avoid rollback that could be caused by an upper method
+ try:
+ db_registry = registry(db_name)
+ with db_registry.cursor() as cr:
+ env = api.Environment(cr, SUPERUSER_ID, {})
+ IrLogging = env['ir.logging']
+ IrLogging.sudo().create({'name': 'delivery.carrier',
+ 'type': 'server',
+ 'dbname': db_name,
+ 'level': 'DEBUG',
+ 'message': xml_string,
+ 'path': self.delivery_type,
+ 'func': func,
+ 'line': 1})
+ except psycopg2.Error:
+ pass
+
# ------------------------------------------------ #
# Fixed price shipping, aka a very simple provider #
# ------------------------------------------------ #
diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml
index bae05a5888f..e1bac19c89c 100644
--- a/addons/delivery/views/delivery_view.xml
+++ b/addons/delivery/views/delivery_view.xml
@@ -59,6 +59,14 @@
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button" options='{"terminology": "active"}'/>
</button>
+ <button name="toggle_debug" type="object" class="oe_stat_button" icon="fa-code" groups="base.group_no_one" attrs="{'invisible': ['|', ('delivery_type', '=', 'fixed'), ('delivery_type', '=', 'base_on_rule')]}">
+ <field name="debug_logging" widget="boolean_button" options='{"terminology": {
+ "string_true": "Debug requests",
+ "hover_true": "Disable debug",
+ "string_false": "No debug",
+ "hover_false": "Enable debug"
+ }}'/>
+ </button>
</div>
<div class="oe_title" name="title">
<label for="name" string="Name" class="oe_edit_only"/>