Catch exception raised by reverse_delete_rule=DENY
Vayel opened this issue · 0 comments
Vayel commented
class Parent(Document):
ref = ReferenceField('Child', reverse_delete_rule=DENY)
DELETE /children/{id}/
raises an exception:
Traceback (most recent call last):
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/viewsets.py", line 86, in view
return self.dispatch(request, *args, **kwargs)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/views.py", line 489, in dispatch
response = self.handle_exception(exc)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/views.py", line 449, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/views.py", line 486, in dispatch
response = handler(request, *args, **kwargs)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/mixins.py", line 93, in destroy
self.perform_destroy(instance)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/mixins.py", line 97, in perform_destroy
instance.delete()
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/mongoengine/document.py", line 557, in delete
**self._object_key).delete(write_concern=write_concern, _from_doc_delete=True)
File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 445, in delete
% (document_cls.__name__, field_name)
mongoengine.errors.OperationError: Could not delete document (Post.document refers to it)
The API should return a 403
status code.