editor api DELETE support
This commit is contained in:
parent
0b6321c7e0
commit
8e15e7d0a4
2 changed files with 8 additions and 5 deletions
|
@ -36,6 +36,9 @@ def sidebar_view(func=None, select_related=None, api_hybrid=False):
|
||||||
if not can_access_editor(request):
|
if not can_access_editor(request):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
|
||||||
|
if api_hybrid and api and func.__name__ == 'edit':
|
||||||
|
kwargs['delete'] = request.method == 'DELETE'
|
||||||
|
|
||||||
request.changeset = ChangeSet.get_for_request(request, select_related)
|
request.changeset = ChangeSet.get_for_request(request, select_related)
|
||||||
|
|
||||||
if api:
|
if api:
|
||||||
|
@ -110,7 +113,7 @@ class APIHybridMessageRedirectResponse(APIHybridResponse):
|
||||||
def __init__(self, level, message, redirect_to):
|
def __init__(self, level, message, redirect_to):
|
||||||
self.level = level
|
self.level = level
|
||||||
self.message = message
|
self.message = message
|
||||||
self.redirect_to = self.redirect_to
|
self.redirect_to = redirect_to
|
||||||
|
|
||||||
def get_api_response(self, request):
|
def get_api_response(self, request):
|
||||||
return {self.level: self.message}
|
return {self.level: self.message}
|
||||||
|
|
|
@ -124,7 +124,7 @@ def get_changeset_exceeded(request):
|
||||||
|
|
||||||
@sidebar_view(api_hybrid=True)
|
@sidebar_view(api_hybrid=True)
|
||||||
@etag(etag_func)
|
@etag(etag_func)
|
||||||
def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, explicit_edit=False):
|
def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, explicit_edit=False, delete=True):
|
||||||
changeset_exceeded = get_changeset_exceeded(request)
|
changeset_exceeded = get_changeset_exceeded(request)
|
||||||
model_changes = {}
|
model_changes = {}
|
||||||
if changeset_exceeded:
|
if changeset_exceeded:
|
||||||
|
@ -281,7 +281,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
||||||
message=_('You need to log in to create Wifi Measurements.'))
|
message=_('You need to log in to create Wifi Measurements.'))
|
||||||
|
|
||||||
error = None
|
error = None
|
||||||
if request.method == 'POST':
|
if request.method == 'POST' or (not new and delete):
|
||||||
if nosave:
|
if nosave:
|
||||||
return APIHybridMessageRedirectResponse(
|
return APIHybridMessageRedirectResponse(
|
||||||
level='error', message=_('You can not edit this object because your changeset is full.'),
|
level='error', message=_('You can not edit this object because your changeset is full.'),
|
||||||
|
@ -294,7 +294,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
||||||
redirect_to=request.path
|
redirect_to=request.path
|
||||||
)
|
)
|
||||||
|
|
||||||
if not new and request.POST.get('delete') == '1':
|
if not new and ((request.POST.get('delete') == '1' and delete is not False) or delete):
|
||||||
# Delete this mapitem!
|
# Delete this mapitem!
|
||||||
try:
|
try:
|
||||||
if not request.changeset.get_changed_object(obj).can_delete():
|
if not request.changeset.get_changed_object(obj).can_delete():
|
||||||
|
@ -306,7 +306,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
||||||
redirect_to=request.path
|
redirect_to=request.path
|
||||||
)
|
)
|
||||||
|
|
||||||
if request.POST.get('delete_confirm') == '1':
|
if request.POST.get('delete_confirm') == '1' or delete:
|
||||||
with request.changeset.lock_to_edit(request) as changeset:
|
with request.changeset.lock_to_edit(request) as changeset:
|
||||||
if changeset.can_edit(request):
|
if changeset.can_edit(request):
|
||||||
obj.delete()
|
obj.delete()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue