proposed change sets can be activated, too
This commit is contained in:
parent
d8694a0290
commit
81ab6b19d2
3 changed files with 14 additions and 10 deletions
|
@ -8,6 +8,7 @@ from django.db import models, transaction
|
|||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ungettext_lazy
|
||||
from rest_framework.exceptions import PermissionDenied
|
||||
|
||||
from c3nav.editor.models.changedobject import ChangedObject
|
||||
from c3nav.editor.utils import is_created_pk
|
||||
|
@ -244,6 +245,10 @@ class ChangeSet(models.Model):
|
|||
def proposed(self):
|
||||
return self.state not in ('unproposed', 'rejected')
|
||||
|
||||
@property
|
||||
def closed(self):
|
||||
return self.state in ('finallyrejected', 'applied')
|
||||
|
||||
def is_author(self, request):
|
||||
return (self.author == request.user or (self.author is None and not request.user.is_authenticated and
|
||||
request.session.get('changeset', None) == self.pk))
|
||||
|
@ -257,7 +262,7 @@ class ChangeSet(models.Model):
|
|||
if self.pk is not None:
|
||||
changeset = ChangeSet.objects.select_for_update().get(pk=self.pk)
|
||||
if request is not None and not changeset.can_edit(request):
|
||||
raise PermissionError
|
||||
raise PermissionDenied
|
||||
|
||||
self._object_changed = False
|
||||
yield changeset
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
{% endfor %}
|
||||
|
||||
{% buttons %}
|
||||
{% if editing %}
|
||||
{% if active %}
|
||||
{% if can_delete %}
|
||||
<button type="submit" class="btn btn-danger" name="delete" value="1">{% trans 'Delete' %}</button>
|
||||
{% endif %}
|
||||
|
@ -97,7 +97,7 @@
|
|||
<button type="submit" class="btn btn-default" name="unpropose" value="1">{% trans 'Unpropose' %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% elif can_edit %}
|
||||
{% elif not changeset.closed %}
|
||||
<button type="submit" class="btn btn-primary pull-right" name="activate" value="1">{% trans 'Activate' %}</button>
|
||||
{% endif %}
|
||||
{% endbuttons %}
|
||||
|
|
|
@ -19,9 +19,9 @@ from c3nav.mapdata.models.locations import LocationRedirect, LocationSlug
|
|||
@sidebar_view
|
||||
def changeset_detail(request, pk):
|
||||
changeset = request.changeset
|
||||
editing = True
|
||||
active = True
|
||||
if str(pk) != str(request.changeset.pk):
|
||||
editing = False
|
||||
active = False
|
||||
changeset = get_object_or_404(ChangeSet.qs_for_request(request), pk=pk)
|
||||
|
||||
if not changeset.can_see(request):
|
||||
|
@ -29,7 +29,6 @@ def changeset_detail(request, pk):
|
|||
|
||||
can_edit = changeset.can_edit(request)
|
||||
can_delete = changeset.can_delete(request)
|
||||
editing = editing and can_edit
|
||||
|
||||
if request.method == 'POST':
|
||||
restore = request.POST.get('restore')
|
||||
|
@ -51,8 +50,8 @@ def changeset_detail(request, pk):
|
|||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
elif request.POST.get('activate') == '1':
|
||||
with changeset.lock_to_edit(request) as changeset:
|
||||
if changeset.can_edit(request):
|
||||
with changeset.lock_to_edit() as changeset:
|
||||
if not changeset.closed:
|
||||
changeset.activate(request)
|
||||
messages.success(request, _('You activated this change set.'))
|
||||
else:
|
||||
|
@ -136,7 +135,7 @@ def changeset_detail(request, pk):
|
|||
obj_still_exists = pk not in changeset.deleted_existing.get(obj.__class__, ())
|
||||
|
||||
edit_url = None
|
||||
if obj_still_exists and editing and not isinstance(obj, LocationRedirect):
|
||||
if obj_still_exists and active and can_edit and not isinstance(obj, LocationRedirect):
|
||||
reverse_kwargs = {'pk': obj.pk}
|
||||
if hasattr(obj, 'level_id'):
|
||||
reverse_kwargs['level'] = obj.level_id
|
||||
|
@ -264,7 +263,7 @@ def changeset_detail(request, pk):
|
|||
'can_edit': can_edit,
|
||||
'can_delete': can_delete,
|
||||
'can_unpropose': changeset.can_unpropose(request),
|
||||
'editing': editing,
|
||||
'active': active,
|
||||
'changed_objects': changed_objects_data,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue