Fix WrongType on object creation/update via jsonapi #2822
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of the issue/feature this PR addresses
UIDReferenceFieldfields internally rely onASCIILine, which only accepts nativestrvalues in Python 2. However, due to legacy Archetypes behavior and the JSONAPI request handling pipeline, incoming field values are always decoded as unicode before validation. As a result, JSONAPI delivers unicode UIDs while the underlying zope.schema validation layer expects str bytes, causing a WrongType error. This mismatch does not occur in standard UI forms because Archetypes/Dexterity widgets convert or coerce values differently, but JSONAPI exposes the type inconsistency directly.Current behavior before PR
Validator rises a
WrongTypeerror when aunicodevalue is set forUIDReferenceFieldtype fields.Desired behavior after PR is merged
Validator does not fail when a
unicodeis set forUIDReferenceFieldtype fields via jsonapi.--
I confirm I have tested this PR thoroughly and coded it according to PEP8
and Plone's Python styleguide standards.