From 20b7d891e4ff95f7148d3e2a0406a4b4cd628b73 Mon Sep 17 00:00:00 2001 From: EEA Jenkins <2368628+eea-jenkins@users.noreply.github.com> Date: Mon, 10 Apr 2023 19:56:23 +0300 Subject: [PATCH 1/2] Back to devel --- docs/HISTORY.txt | 3 +++ eea/volto/policy/version.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index 5338478..6375a71 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -1,6 +1,9 @@ Changelog ========= +2.1-dev0 - (unreleased) +--------------------------- + 2.0 - (2023-04-10) --------------------------- * Bug fix: RestAPI fix DateTime timezone for publication fields serializer/deserializer diff --git a/eea/volto/policy/version.txt b/eea/volto/policy/version.txt index cd5ac03..77a9f8e 100644 --- a/eea/volto/policy/version.txt +++ b/eea/volto/policy/version.txt @@ -1 +1 @@ -2.0 +2.1-dev0 From 1c8c62dd4ae27573feb02406456a950f0a58a06d Mon Sep 17 00:00:00 2001 From: Alin Voinea Date: Tue, 11 Apr 2023 14:54:10 +0300 Subject: [PATCH 2/2] fix(RestAPI): fix DateTime timezone for ICoreMetadata fields serializer/deserializer - refs #250368 --- docs/HISTORY.txt | 4 +++- eea/volto/policy/restapi/deserializer/dxfields.py | 14 +++++++++++--- eea/volto/policy/restapi/serializer/dxfields.py | 10 ++++++++-- eea/volto/policy/version.txt | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index 6375a71..cc0b28d 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -1,8 +1,10 @@ Changelog ========= -2.1-dev0 - (unreleased) +2.1 - (2023-04-11) --------------------------- +* Bug fix: RestAPI fix DateTime timezone for ICoreMetadata fields serializer/deserializer + [avoinea refs #250368] 2.0 - (2023-04-10) --------------------------- diff --git a/eea/volto/policy/restapi/deserializer/dxfields.py b/eea/volto/policy/restapi/deserializer/dxfields.py index f2e50bd..1f72abc 100644 --- a/eea/volto/policy/restapi/deserializer/dxfields.py +++ b/eea/volto/policy/restapi/deserializer/dxfields.py @@ -1,19 +1,25 @@ """ DXFields """ import dateutil -from pytz import timezone, utc -from eea.volto.policy.interfaces import IEeaVoltoPolicyLayer from plone.app.dexterity.behaviors.metadata import IPublication from plone.app.event.base import default_timezone from plone.dexterity.interfaces import IDexterityContent from plone.restapi.deserializer.dxfields import \ DatetimeFieldDeserializer as DefaultDatetimeFieldDeserializer from plone.restapi.interfaces import IFieldDeserializer +from pytz import timezone, utc from z3c.form.interfaces import IDataManager from zope.component import adapter, queryMultiAdapter from zope.interface import implementer from zope.schema.interfaces import IDatetime +from eea.volto.policy.interfaces import IEeaVoltoPolicyLayer +try: + from eea.coremetadata.metadata import ICoreMetadata +except ImportError: + # Fallback + ICoreMetadata = IPublication + @implementer(IFieldDeserializer) @adapter(IDatetime, IDexterityContent, IEeaVoltoPolicyLayer) @@ -22,7 +28,9 @@ class DatetimeFieldDeserializer(DefaultDatetimeFieldDeserializer): """ def __call__(self, value): # PATCH - is_publication_field = self.field.interface == IPublication + is_publication_field = self.field.interface in ( + IPublication, ICoreMetadata,) + if is_publication_field: # because IPublication datamanager strips timezones tzinfo = timezone(default_timezone()) diff --git a/eea/volto/policy/restapi/serializer/dxfields.py b/eea/volto/policy/restapi/serializer/dxfields.py index e2af093..01f4808 100644 --- a/eea/volto/policy/restapi/serializer/dxfields.py +++ b/eea/volto/policy/restapi/serializer/dxfields.py @@ -1,6 +1,5 @@ """ DXFields """ -from eea.volto.policy.interfaces import IEeaVoltoPolicyLayer from plone.app.dexterity.behaviors.metadata import IPublication from plone.dexterity.interfaces import IDexterityContent from plone.restapi.interfaces import IFieldSerializer @@ -9,6 +8,13 @@ from zope.interface import implementer from zope.schema.interfaces import IDatetime +from eea.volto.policy.interfaces import IEeaVoltoPolicyLayer +try: + from eea.coremetadata.metadata import ICoreMetadata +except ImportError: + # Fallback + ICoreMetadata = IPublication + @adapter(IDatetime, IDexterityContent, IEeaVoltoPolicyLayer) @implementer(IFieldSerializer) @@ -21,7 +27,7 @@ def get_value(self, default=None): value = getattr( self.field.interface(self.context), self.field.__name__, default ) - if value and self.field.interface == IPublication: + if value and self.field.interface in (IPublication, ICoreMetadata,): # the patch: we want the dates with full tz infos # default value is taken from # plone.app.dexterity.behaviors.metadata.Publication that escape diff --git a/eea/volto/policy/version.txt b/eea/volto/policy/version.txt index 77a9f8e..879b416 100644 --- a/eea/volto/policy/version.txt +++ b/eea/volto/policy/version.txt @@ -1 +1 @@ -2.1-dev0 +2.1