propose/unpropose

This commit is contained in:
Laura Klünder 2017-06-29 18:01:58 +02:00
parent 1180842c66
commit fb8abc91c6
3 changed files with 57 additions and 3 deletions

View file

@ -13,10 +13,28 @@
</h3>
<form method="post" action="{{ request.path }}">
{% csrf_token %}
<p class="text-muted">{{ created }}{% if changeset.author %} {{ changeset.author.username }}{% endif %}</p>
<p class="text-muted">
{{ created }}{% if changeset.author %} {{ changeset.author.username }}{% endif %}
{% if changeset.proposed %}
<br>{% with date=changeset.proposed|date:"DATETIME_FORMAT" %}{% blocktrans %}proposed at {{ date }}{% endblocktrans %}{% endwith %}
{% endif %}
</p>
{% if changeset.description %}
<p>{{ changeset.description }}</p>
{% endif %}
{% if changeset.author == request.user %}
{% if changeset.proposed and not changeset.applied %}
{% if not changeset.assigned_to %}
<p class="text-success">
{% blocktrans %}Your changes are currently waiting for review. As long as no reviewer has been assigned to your changes, you can still unpropose and edit them.{% endblocktrans %}
</p>
{% else %}
<p class="text-success">
{% blocktrans %}Your changes are currently being reviewed.{% endblocktrans %}
</p>
{% endif %}
{% endif %}
{% endif %}
{% bootstrap_messages %}
@ -64,7 +82,12 @@
{% if can_edit %}
<a href="{% url 'editor.changesets.edit' pk=changeset.pk %}" class="btn btn-default">{% trans 'Edit' %}</a>
{% endif %}
<button type="submit" class="btn btn-primary" name="propose" value="1">{% trans 'Propose' %}</button>
{% 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>

View file

@ -4,6 +4,8 @@
{% include 'editor/fragment_modal_close.html' %}
<h3>{% trans 'Log in' %}</h3>
{% bootstrap_messages %}
<form method="post" action="{{ request.path_info }}?{{ request.GET.urlencode }}">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -4,8 +4,10 @@ from operator import itemgetter
from django.conf import settings
from django.contrib import messages
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.formats import date_format
from django.utils.translation import ugettext_lazy as _
@ -39,7 +41,33 @@ def changeset_detail(request, pk):
if changed_object.deleted:
changed_object.deleted = False
changed_object.save(standalone=True)
messages.success(request, _('Object has been successfully restored!'))
messages.success(request, _('Object has been successfully restored.'))
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
elif request.POST.get('propose') == '1':
if not request.user.is_authenticated:
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.'))
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.session_id = None
changeset.save()
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}))
@ -228,6 +256,7 @@ def changeset_detail(request, pk):
'created': created,
'can_edit': can_edit,
'can_delete': can_delete,
'can_unpropose': changeset.can_unpropose(request),
'changed_objects': changed_objects_data,
}