reimplement propose and unpropose with lock_for_update
This commit is contained in:
parent
ef3f4a979d
commit
b8be4a8105
3 changed files with 52 additions and 50 deletions
|
@ -7,7 +7,6 @@ from django.core.exceptions import PermissionDenied
|
|||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from c3nav.editor.forms import ChangeSetForm
|
||||
|
@ -26,17 +25,14 @@ def changeset_detail(request, pk):
|
|||
if not changeset.can_see(request):
|
||||
raise Http404
|
||||
|
||||
can_edit = changeset.can_edit_changes(request)
|
||||
can_edit = changeset.can_edit(request)
|
||||
can_delete = changeset.can_delete(request)
|
||||
|
||||
if request.method == 'POST':
|
||||
restore = request.POST.get('restore')
|
||||
if restore and restore.isdigit():
|
||||
if not can_edit:
|
||||
raise PermissionDenied
|
||||
|
||||
try:
|
||||
with changeset.lock_to_edit_changes(request):
|
||||
with changeset.lock_to_edit(request):
|
||||
try:
|
||||
changed_object = changeset.changed_objects_set.get(pk=restore)
|
||||
except:
|
||||
|
@ -56,25 +52,22 @@ def changeset_detail(request, pk):
|
|||
messages.info(request, _('You need to log in to propose changes.'))
|
||||
return redirect(reverse('editor.login')+'?redirect='+request.path)
|
||||
|
||||
if changeset.can_propose(request):
|
||||
changeset.proposed = timezone.now()
|
||||
changeset.session_id = None
|
||||
changeset.save()
|
||||
messages.success(request, _('You proposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot propose this changeset.'))
|
||||
with changeset.lock_to_edit() as changeset:
|
||||
if changeset.can_propose(request):
|
||||
changeset.propose(request.user)
|
||||
messages.success(request, _('You proposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot propose this changeset.'))
|
||||
|
||||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
elif request.POST.get('unpropose') == '1':
|
||||
if changeset.can_unpropose(request):
|
||||
changeset.proposed = None
|
||||
changeset.assigned_to = None
|
||||
changeset.session_id = None
|
||||
changeset.save()
|
||||
messages.success(request, _('You unproposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot unpropose this changeset.'))
|
||||
with changeset.lock_to_edit() as changeset:
|
||||
if changeset.can_unpropose(request):
|
||||
changeset.unpropose(request.user)
|
||||
messages.success(request, _('You unproposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot unpropose this changeset.'))
|
||||
|
||||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
|||
Level = request.changeset.wrap_model('Level')
|
||||
Space = request.changeset.wrap_model('Space')
|
||||
|
||||
can_edit = request.changeset.can_edit_changes(request)
|
||||
can_edit = request.changeset.can_edit(request)
|
||||
|
||||
obj = None
|
||||
if pk is not None:
|
||||
|
@ -175,7 +175,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
|||
# Delete this mapitem!
|
||||
if request.POST.get('delete_confirm') == '1':
|
||||
try:
|
||||
with request.changeset.lock_to_edit_changes(request):
|
||||
with request.changeset.lock_to_edit(request):
|
||||
obj.delete()
|
||||
except PermissionDenied:
|
||||
messages.error(request, _('You can not edit changes on this changeset.'))
|
||||
|
@ -212,7 +212,7 @@ def edit(request, pk=None, model=None, level=None, space=None, on_top_of=None, e
|
|||
obj.on_top_of = on_top_of
|
||||
|
||||
try:
|
||||
with request.changeset.lock_to_edit_changes(request):
|
||||
with request.changeset.lock_to_edit(request):
|
||||
obj.save()
|
||||
|
||||
if form.redirect_slugs is not None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue