Skip to content

Commit

Permalink
add missing deserializer
Browse files Browse the repository at this point in the history
  • Loading branch information
cekk committed Jul 26, 2024
1 parent 7d92e96 commit 6ae8a2f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/iosanita/contenttypes/restapi/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package="plone.restapi"
file="configure.zcml"
/>
<include package=".deserializers" />
<include package=".services" />
<include package=".serializers" />

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<configure xmlns="http://namespaces.zope.org/zope"
xmlns:zcml="http://namespaces.zope.org/zcml">

<adapter factory=".dxfields.GeolocationFieldDeserializer" />
</configure>
29 changes: 29 additions & 0 deletions src/iosanita/contenttypes/restapi/deserializers/dxfields.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
from iosanita.contenttypes import _
from iosanita.contenttypes.interfaces import IIosanitaContenttypesLayer
from plone.dexterity.interfaces import IDexterityContent
from plone.formwidget.geolocation.geolocation import Geolocation
from plone.formwidget.geolocation.interfaces import IGeolocationField
from plone.restapi.deserializer.dxfields import DefaultFieldDeserializer
from plone.restapi.interfaces import IFieldDeserializer
from zope.component import adapter
from zope.i18n import translate
from zope.interface import implementer


@implementer(IFieldDeserializer)
@adapter(IGeolocationField, IDexterityContent, IIosanitaContenttypesLayer)
class GeolocationFieldDeserializer(DefaultFieldDeserializer):
def __call__(self, value):
if "latitude" not in value or "longitude" not in value:
raise ValueError(
translate(
_(
"geolocation_field_validator_label",
default="Invalid geolocation data: ${value}. Provide latitude and longitude coordinates.", # noqa
mapping={"value": value},
),
context=self.request,
)
)
return Geolocation(latitude=value["latitude"], longitude=value["longitude"])

0 comments on commit 6ae8a2f

Please sign in to comment.