inveniosoftware / invenio-app-rdm

Turn-key research data management platform.
https://inveniordm.docs.cern.ch
MIT License
100 stars 144 forks source link

REST API: Create Community Endpoint with Wrong Body Results in 500 Internal Server Error #2700

Open Samk13 opened 3 months ago

Samk13 commented 3 months ago

Package version (if known): V12rc2, and Zenodo

Describe the bug

in the docs owned_by is under access. looking here looks like it's been moved to parent. adding this body will result in 500 error.

{
    "parent": {
        "access": {
            "owned_by": [
                {
                    "user": "2"
                }
            ]
        }
    },
    "access": {
        "visibility": "public", 
        "member_policy": "open",
        "record_policy": "open",
        "review_policy": "closed", 
        "members_visibility": "restricted"

        // owned_by: Array of Objects of the form: {"user": <user_id> }. placing it here will not work as in the docs
    },
    "slug": "public-community-{{$randomProductAdjective}}-{{$randomVerb}}",
    "metadata": {
        "title": "public-community-{{$randomProductAdjective}}-{{$randomVerb}}",
        "description": "{{$randomCatchPhraseDescriptor}}",
        "type": {
            "id": "event"
        },
        "curation_policy": "This is the kind of records we accept.",
        "page": "{{$randomJobDescriptor}}",
        "website": "https://kth.se/",
        "organizations": [
            {
                "name": "KTH"
            }
        ]
    }
}

Steps to Reproduce

  1. POST {{baseURL}}/api/communities
  2. See error on Zenodo:
    {
    "error_id": "3b088207f14941f2b6fea6d7a7418946",
    "message": "The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
    "status": 500
    }

Expected behavior

gracefully reject the request

Screenshots (if applicable)

Additional context

logs:

response log ```log Traceback (most recent call last): File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 2552, in __call__ return self.wsgi_app(environ, start_response) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py", line 187, in __call__ return self.app(environ, start_response) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/werkzeug/middleware/dispatcher.py", line 78, in __call__ return app(environ, start_response) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 2552, in __call__ return self.wsgi_app(environ, start_response) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py", line 187, in __call__ return self.app(environ, start_response) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 2532, in wsgi_app response = self.handle_exception(e) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 2529, in wsgi_app response = self.full_dispatch_request() File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 1825, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request rv = self.dispatch_request() File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask_resources/resources.py", line 65, in view return view_meth() File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask_resources/content_negotiation.py", line 116, in inner_content_negotiation return f(*args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask_resources/parsers/decorators.py", line 51, in inner return f(self, *args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask_resources/parsers/decorators.py", line 90, in inner return f(self, *args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/flask_resources/responses.py", line 39, in inner res = f(*args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/resources/records/resource.py", line 93, in create item = self.service.create( File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/services/uow.py", line 376, in inner res = f(self, *args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/services/records/service.py", line 327, in create return self._create(self.record_cls, identity, data, uow=uow, expand=expand) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/services/uow.py", line 380, in inner return f(self, *args, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/services/records/service.py", line 342, in _create data, errors = self.schema.load( File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_records_resources/services/records/schema.py", line 90, in load valid_data = self.schema(context=context, **schema_args).load(data) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/marshmallow/schema.py", line 722, in load return self._do_load( File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/marshmallow/schema.py", line 897, in _do_load result = self._invoke_load_processors( File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/marshmallow/schema.py", line 1094, in _invoke_load_processors data = self._invoke_processors( File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/marshmallow/schema.py", line 1222, in _invoke_processors data = processor(data, original_data, many=many, **kwargs) File "/home/samk13/.pyenv/versions/3.9.19/envs/test-install/lib/python3.9/site-packages/invenio_communities/communities/schema.py", line 282, in filter_parent_id dict(id=original_data["parent"]["id"]) KeyError: 'id' ```
github-actions[bot] commented 1 month ago

This issue was automatically marked as stale.