Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

failed to create an analysisspec with ResultsRange field by jsonapi #2428

Closed
fengyundeng opened this issue Nov 19, 2023 · 0 comments
Closed

Comments

@fengyundeng
Copy link
Contributor

fengyundeng commented Nov 19, 2023

Description

create an analysisspec by JSONAPI with ResultsRange field by jsonapi,
POST Method, data =
{
"title": "spec_name",
"description": "desc. of analysisspec",
"ResultsRange": [

        {
              "keyword": "kw-01",
              "min": "700",
              "max": "1000"
        },
        {
              "keyword": "kw-02",
              "min": "600",
              "max": "900",                  
        }

  ],
"portal_type": "AnalysisSpec",
"SampleType": uid_sampletype",
"parent_path": "/senaite/bika_setup/bika_analysisspecs"

}
the create cannot success.

<>

Reproduction guide

<>

Observed behaviour

feedback message " 'NoneType' object has no attribute 'get' "
but when the data remove the "ResultsRange", the create is success.

<>

Expected behaviour

could create analysisspec by JSONAPI and set "ResultsRange" field at the same time.
<>

Versions

  • OS: Linux

  • senaite.core: master

  • senaite.impress: master

  • senaite.core.listing: master

  • senaite.core.supermodel: master

Traceback

Traceback (most recent call last):
  File "/home/senaite/buildout-cache/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/decorators.py", line 23, in decorator
    return f(*args, **kwargs)
  File "/home/senaite/buildout-cache/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/api.py", line 57, in to_json
    return self.dispatch()
  File "/home/senaite/buildout-cache/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/api.py", line 51, in dispatch
    return router(self.context, self.request, path)
  File "/home/senaite/buildout-cache/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/router.py", line 150, in __call__
    return self.view_functions[endpoint](context, request, **values)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.jsonapi-2.4.0-py2.7.egg/senaite/jsonapi/v1/routes/content.py", line 105, in action
    items = action_func(portal_type=portal_type, uid=uid)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.jsonapi-2.4.0-py2.7.egg/senaite/jsonapi/api.py", line 158, in create_items
    obj = create_object(container, portal_type, **record)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.jsonapi-2.4.0-py2.7.egg/senaite/jsonapi/api.py", line 1419, in create_object
    update_object_with_data(obj, data)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.jsonapi-2.4.0-py2.7.egg/senaite/jsonapi/api.py", line 1495, in update_object_with_data
    invalid = validate_object(content, record)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.jsonapi-2.4.0-py2.7.egg/senaite/jsonapi/api.py", line 1524, in validate_object
    return obj.validate(data=data)
  File "/home/senaite/buildout-cache/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py", line 517, in validate
    errors=errors, data=data, metadata=metadata)
  File "/home/senaite/buildout-cache/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/Schema/__init__.py", line 629, in validate
    REQUEST=REQUEST)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/senaite/core/browser/fields/records.py", line 173, in validate
    ), None)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/senaite/core/browser/fields/records.py", line 169, in <genexpr>
    result
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/senaite/core/browser/fields/records.py", line 165, in <genexpr>
    for record
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/senaite/core/browser/fields/record.py", line 390, in validate
    res = self.validate_validators(value, instance, errors, **kwargs)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/senaite/core/browser/fields/record.py", line 407, in validate_validators
    **kwargs
  File "/home/senaite/buildout-cache/eggs/cp27mu/Products.validation-2.1.3-py2.7.egg/Products/validation/chain.py", line 137, in __call__
    result = validator(value, *args, **kwargs)
  File "/home/senaite/buildout-cache/eggs/cp27mu/senaite.core-2.4.1-py2.7.egg/bika/lims/validators.py", line 845, in __call__
    service_uids = request.get("uids", [])
AttributeError: 'NoneType' object has no attribute 'get'
<<BACKTRACE IF RELEVANT>>

Screenshot

fengyundeng added a commit to fengyundeng/senaite.core that referenced this issue Nov 23, 2023
xispa added a commit that referenced this issue Nov 26, 2023
…JSONAPI (#2431)

* Update validators.py

* #2428 Fix error raise when create analysisspec with resultsrange by JSONAPI

---------

Co-authored-by: Jordi Puiggené <jp@naralabs.com>
@xispa xispa closed this as completed Nov 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants