From b52818b41aa00cd551bce72f5894f19663701bfd Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 18 Mar 2021 14:31:55 +0100 Subject: [PATCH] pickup: Fix datetime / timezone conversion --- models/shipcloud_pickup.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/models/shipcloud_pickup.py b/models/shipcloud_pickup.py index 12ebe1c..3923bb4 100644 --- a/models/shipcloud_pickup.py +++ b/models/shipcloud_pickup.py @@ -1,5 +1,6 @@ from openerp import api, fields, models import logging +import pytz from openerp.exceptions import Warning from shipcloud_delivery_carrier import build_sc_addr @@ -38,6 +39,12 @@ class SCPickup(models.Model): @api.one def button_request(self): + def field_to_datetime(self, dtfield): + tz_name = self._context.get('tz') or self.env.user.tz + tz = pytz.timezone(tz_name) + dt = fields.Datetime.from_string(dtfield) + return fields.Datetime.context_timestamp(self, dt) + # consistency check for p in self.pickings: if p.carrier_id.delivery_type != 'sc': @@ -51,9 +58,9 @@ class SCPickup(models.Model): for p in self.pickings: sc_ship_ids.append({'id': p.sc_shipment_id}) sc_addr = build_sc_addr(self.address) - sc_earliest = fields.Datetime.from_string(self.earliest).astimezone().isoformat() + sc_earliest = field_to_datetime(self, self.earliest).isoformat() + sc_latest = field_to_datetime(self, self.latest).isoformat() _logger.info("earliest: %s -> %s" % (self.earliest, sc_earliest)) - sc_latest = fields.Datetime.from_string(self.latest).astimezone().isoformat() sc_pickup = shipcloud.gen_pickup(sc_addr, sc_earliest, sc_latest, sc_ship_ids, self.carrier) # actually use the SC API to request the pickup api = self._shipcloud_api()