let's to allow_post and allow_delete differently
This commit is contained in:
parent
2113487c51
commit
0b6321c7e0
3 changed files with 10 additions and 10 deletions
|
@ -269,10 +269,13 @@ class EditorViewSet(ViewSet):
|
|||
|
||||
def __getattr__(self, name):
|
||||
# allow POST and DELETE methods for the editor API
|
||||
if name in ('post', 'delete'):
|
||||
if getattr(self.resolved.func, 'allow_'+name, False):
|
||||
if getattr(self, 'get', None).__name__ in ('list', 'retrieve'):
|
||||
return self.retrieve
|
||||
|
||||
if getattr(self, 'get', None).__name__ in ('list', 'retrieve'):
|
||||
if name == 'post' and (self.resolved.url_name.endswith('.create') or
|
||||
self.resolved.url_name.endswith('.edit')):
|
||||
return self.retrieve
|
||||
if name == 'delete' and self.resolved.url_name.endswith('.edit'):
|
||||
return self.retrieve
|
||||
raise AttributeError
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
|
|
|
@ -22,11 +22,10 @@ from c3nav.mapdata.models.base import SerializableMixin
|
|||
from c3nav.mapdata.utils.user import can_access_editor
|
||||
|
||||
|
||||
def sidebar_view(func=None, select_related=None, api_hybrid=False, allow_post=False, allow_delete=False):
|
||||
def sidebar_view(func=None, select_related=None, api_hybrid=False):
|
||||
if func is None:
|
||||
def wrapped(inner_func):
|
||||
return sidebar_view(inner_func, select_related=select_related, api_hybrid=api_hybrid,
|
||||
allow_post=allow_post, allow_delete=allow_delete)
|
||||
return sidebar_view(inner_func, select_related=select_related, api_hybrid=api_hybrid)
|
||||
return wrapped
|
||||
|
||||
@wraps(func)
|
||||
|
@ -67,8 +66,6 @@ def sidebar_view(func=None, select_related=None, api_hybrid=False, allow_post=Fa
|
|||
return response
|
||||
|
||||
wrapped.api_hybrid = api_hybrid
|
||||
wrapped.allow_post = allow_post
|
||||
wrapped.allow_delete = allow_delete
|
||||
|
||||
return wrapped
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ def get_changeset_exceeded(request):
|
|||
return request.user_permissions.max_changeset_changes <= request.changeset.changed_objects_count
|
||||
|
||||
|
||||
@sidebar_view(api_hybrid=True, allow_post=True, allow_delete=True)
|
||||
@sidebar_view(api_hybrid=True)
|
||||
@etag(etag_func)
|
||||
def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, explicit_edit=False):
|
||||
changeset_exceeded = get_changeset_exceeded(request)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue