Skip to content

Commit

Permalink
Merge pull request #12 from eea/develop
Browse files Browse the repository at this point in the history
Release
  • Loading branch information
avoinea authored Apr 11, 2023
2 parents e28ebeb + 1c8c62d commit 9a5d597
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 6 deletions.
5 changes: 5 additions & 0 deletions docs/HISTORY.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
Changelog
=========

2.1 - (2023-04-11)
---------------------------
* Bug fix: RestAPI fix DateTime timezone for ICoreMetadata fields serializer/deserializer
[avoinea refs #250368]

2.0 - (2023-04-10)
---------------------------
* Bug fix: RestAPI fix DateTime timezone for publication fields serializer/deserializer
Expand Down
14 changes: 11 additions & 3 deletions eea/volto/policy/restapi/deserializer/dxfields.py
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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())
Expand Down
10 changes: 8 additions & 2 deletions eea/volto/policy/restapi/serializer/dxfields.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion eea/volto/policy/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0
2.1

0 comments on commit 9a5d597

Please sign in to comment.