Skip to content

Commit

Permalink
Support Decimal fields while deserializing.
Browse files Browse the repository at this point in the history
  • Loading branch information
jensens committed Apr 7, 2020
1 parent 474aaa5 commit 10af83f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/plone/restapi/deserializer/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<adapter factory=".dxfields.TimedeltaFieldDeserializer" />
<adapter factory=".dxfields.NamedFieldDeserializer" />
<adapter factory=".dxfields.RichTextFieldDeserializer" />
<adapter factory=".dxfields.DecimalFieldDeserializer" />
<adapter factory=".blocks.BlocksJSONFieldDeserializer" />

<adapter factory=".local_roles.DeserializeFromJson"
Expand Down
13 changes: 13 additions & 0 deletions src/plone/restapi/deserializer/dxfields.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import timedelta
from decimal import Decimal
from plone.app.textfield.interfaces import IRichText
from plone.app.textfield.value import RichTextValue
from plone.dexterity.interfaces import IDexterityContent
Expand All @@ -17,6 +18,7 @@
from zope.schema.interfaces import IChoice
from zope.schema.interfaces import ICollection
from zope.schema.interfaces import IDatetime
from zope.schema.interfaces import IDecimal
from zope.schema.interfaces import IDict
from zope.schema.interfaces import IField
from zope.schema.interfaces import IFromUnicode
Expand Down Expand Up @@ -283,3 +285,14 @@ def __call__(self, value):
)
self.field.validate(value)
return value


@implementer(IFieldDeserializer)
@adapter(IDecimal, IDexterityContent, IBrowserRequest)
class DecimalFieldDeserializer(DefaultFieldDeserializer):

def __call__(self, value):
if not isinstance(value, Decimal):
value = Decimal(value)
self.field.validate(value)
return value

0 comments on commit 10af83f

Please sign in to comment.