activating change sets
This commit is contained in:
parent
755421706c
commit
ccd2cf1b99
5 changed files with 60 additions and 20 deletions
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-07-04 20:40
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('editor', '0012_remove_changeset_session_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='changesetupdate',
|
||||
name='session_user',
|
||||
),
|
||||
]
|
|
@ -244,8 +244,12 @@ class ChangeSet(models.Model):
|
|||
def proposed(self):
|
||||
return self.state not in ('unproposed', 'rejected')
|
||||
|
||||
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))
|
||||
|
||||
def can_see(self, request):
|
||||
return self.author == request.user or (not request.user.is_authenticated and self.author is None)
|
||||
return self.is_author(request)
|
||||
|
||||
@contextmanager
|
||||
def lock_to_edit(self, request=None):
|
||||
|
@ -268,7 +272,7 @@ class ChangeSet(models.Model):
|
|||
|
||||
def can_edit(self, request):
|
||||
if not self.proposed:
|
||||
return self.author == request.user or (self.author is None and not request.user.is_authenticated)
|
||||
return self.is_author(request)
|
||||
elif self.state == 'review':
|
||||
return self.assigned_to == request.user
|
||||
return False
|
||||
|
@ -299,6 +303,9 @@ class ChangeSet(models.Model):
|
|||
self.last_update = update.datetime
|
||||
self.save()
|
||||
|
||||
def activate(self, request):
|
||||
request.session['changeset'] = self.pk
|
||||
|
||||
"""
|
||||
Methods for display
|
||||
"""
|
||||
|
@ -352,4 +359,4 @@ class ChangeSet(models.Model):
|
|||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
if self._request is not None:
|
||||
self._request.session['changeset'] = self.pk
|
||||
self.activate(self._request)
|
||||
|
|
|
@ -15,7 +15,6 @@ class ChangeSetUpdate(models.Model):
|
|||
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, related_name='+')
|
||||
title = models.CharField(max_length=100, null=True)
|
||||
description = models.TextField(max_length=1000, null=True)
|
||||
session_user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, related_name='+')
|
||||
assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, related_name='+')
|
||||
objects_changed = models.BooleanField(default=False)
|
||||
|
||||
|
|
|
@ -82,19 +82,23 @@
|
|||
{% endfor %}
|
||||
|
||||
{% buttons %}
|
||||
{% if can_delete %}
|
||||
<button type="submit" class="btn btn-danger" name="delete" value="1">{% trans 'Delete' %}</button>
|
||||
{% if editing %}
|
||||
{% if can_delete %}
|
||||
<button type="submit" class="btn btn-danger" name="delete" value="1">{% trans 'Delete' %}</button>
|
||||
{% endif %}
|
||||
<div class="pull-right">
|
||||
{% if can_edit %}
|
||||
<a href="{% url 'editor.changesets.edit' pk=changeset.pk %}" class="btn btn-default">{% trans 'Edit' %}</a>
|
||||
{% endif %}
|
||||
{% if can_edit and not changeset.proposed %}
|
||||
<button type="submit" class="btn btn-primary" name="propose" value="1">{% trans 'Propose' %}</button>
|
||||
{% endif %}
|
||||
{% if can_unpropose %}
|
||||
<button type="submit" class="btn btn-default" name="unpropose" value="1">{% trans 'Unpropose' %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% elif can_edit %}
|
||||
<button type="submit" class="btn btn-primary pull-right" name="activate" value="1">{% trans 'Activate' %}</button>
|
||||
{% endif %}
|
||||
<div class="pull-right">
|
||||
{% if can_edit %}
|
||||
<a href="{% url 'editor.changesets.edit' pk=changeset.pk %}" class="btn btn-default">{% trans 'Edit' %}</a>
|
||||
{% endif %}
|
||||
{% if can_edit and not changeset.proposed %}
|
||||
<button type="submit" class="btn btn-primary" name="propose" value="1">{% trans 'Propose' %}</button>
|
||||
{% endif %}
|
||||
{% if can_unpropose %}
|
||||
<button type="submit" class="btn btn-default" name="unpropose" value="1">{% trans 'Unpropose' %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
|
|
|
@ -46,7 +46,17 @@ def changeset_detail(request, pk):
|
|||
changed_object.save(standalone=True)
|
||||
messages.success(request, _('Object has been successfully restored.'))
|
||||
except PermissionDenied:
|
||||
messages.error(request, _('You can not edit changes on this changeset.'))
|
||||
messages.error(request, _('You can not edit changes on this change set.'))
|
||||
|
||||
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):
|
||||
changeset.activate(request)
|
||||
messages.success(request, _('You activated this change set.'))
|
||||
else:
|
||||
messages.error(request, _('You can not activate this change set.'))
|
||||
|
||||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
|
@ -60,7 +70,7 @@ def changeset_detail(request, pk):
|
|||
changeset.propose(request.user)
|
||||
messages.success(request, _('You proposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot propose this changeset.'))
|
||||
messages.error(request, _('You cannot propose this change set.'))
|
||||
|
||||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
|
@ -70,7 +80,7 @@ def changeset_detail(request, pk):
|
|||
changeset.unpropose(request.user)
|
||||
messages.success(request, _('You unproposed your changes.'))
|
||||
else:
|
||||
messages.error(request, _('You cannot unpropose this changeset.'))
|
||||
messages.error(request, _('You cannot unpropose this change set.'))
|
||||
|
||||
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||
|
||||
|
@ -254,6 +264,7 @@ def changeset_detail(request, pk):
|
|||
'can_edit': can_edit,
|
||||
'can_delete': can_delete,
|
||||
'can_unpropose': changeset.can_unpropose(request),
|
||||
'editing': editing,
|
||||
'changed_objects': changed_objects_data,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue