From 5543320e0d0c22063fa279eef56a8006224a29de Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Sat, 3 Sep 2011 18:11:42 +0200 Subject: [PATCH] accept and reject links for applications --- openslides/application/models.py | 23 +++++++++++++++--- .../templates/application/view.html | 19 +++++++++++---- openslides/application/urls.py | 9 ++++++- openslides/application/views.py | 24 ++++++++++++++++++- 4 files changed, 66 insertions(+), 9 deletions(-) diff --git a/openslides/application/models.py b/openslides/application/models.py index 5158fcf3f..d947d7193 100644 --- a/openslides/application/models.py +++ b/openslides/application/models.py @@ -62,6 +62,23 @@ class Application(models.Model): except IndexError: return None + def accept_version(self, version): + """ + accept a Version + """ + if version.id > self.permitted.id: + self.permitted = version + self.save() + return True + return False + + def reject_version(self, version): + if version.id > self.permitted.id: + version.rejected = True + version.save() + return True + return False + @property def versions(self): """ @@ -99,11 +116,11 @@ class Application(models.Model): Return True if the application has unpermitted changes. The application has unpermitted changes, if the permitted-version - is not the lastone and the lastone is not abjected. + is not the lastone and the lastone is not rejected. TODO: rename the property in unchecked__changes """ if (self.last_version != self.permitted - and not self.last_version.abjected): + and not self.last_version.rejected): return True else: return False @@ -384,7 +401,7 @@ class AVersion(models.Model): title = models.CharField(max_length=100) text = models.TextField() reason = models.TextField(null=True, blank=True) - abjected = models.BooleanField() + rejected = models.BooleanField() time = models.DateTimeField(auto_now=True) application = models.ForeignKey(Application) diff --git a/openslides/application/templates/application/view.html b/openslides/application/templates/application/view.html index 08946e75e..80c7dcc3c 100644 --- a/openslides/application/templates/application/view.html +++ b/openslides/application/templates/application/view.html @@ -97,10 +97,10 @@ {% endwith %} - +

{% trans "Creation Time" %}:

{{ application.creation_time }} - +

{% if "edit" in actions %} @@ -132,7 +132,7 @@ {% if min_supporters > 0 %} * {% trans "minimum required supporters" %}: {{ min_supporters }} {% endif %} - +

{% if perms.application.can_manage_application %} @@ -239,7 +239,18 @@ {% for revision in application.versions %} - {{ revision.aid }} + {{ revision.aid }} + {% if revision.rejected %} + Version Abgelehnt + {% else %} + {% if revision == application.permitted %} + Akzeptierte Version + {% else %}{% if revision.id > application.permitted.id and perms.application.can_manage_application %} +
Akzeptieren
+ Ablehnen + {% endif %}{% endif %} + {% endif %} + {{ revision.time }} {% ifchanged %} diff --git a/openslides/application/urls.py b/openslides/application/urls.py index 13a342459..f86fd9fb4 100644 --- a/openslides/application/urls.py +++ b/openslides/application/urls.py @@ -38,6 +38,12 @@ urlpatterns = patterns('application.views', url(r'^application/(?P\d+)/permit$', 'permit', \ name='application_permit'), + url(r'^application/version/(?P\d+)/permit$', 'permit_version', \ + name='application_version_permit'), + + url(r'^application/version/(?P\d+)/reject$', 'reject_version', \ + name='application_version_reject'), + url(r'^application/(?P\d+)/notpermit$', 'notpermit', \ name='application_notpermit'), @@ -59,7 +65,8 @@ urlpatterns = patterns('application.views', url(r'^application/(?P\d+)/print$', 'print_application', \ name='print_application'), - url(r'^application/poll/(?P\d+)/print$', 'print_application_poll', name='print_application_poll'), + url(r'^application/poll/(?P\d+)/print$', 'print_application_poll', \ + name='print_application_poll'), url(r'^application/poll/(?P\d+)$', 'view_poll', \ name='application_poll_view'), diff --git a/openslides/application/views.py b/openslides/application/views.py index 8053ce6da..904f51e8e 100644 --- a/openslides/application/views.py +++ b/openslides/application/views.py @@ -16,7 +16,7 @@ from django.contrib.auth.decorators import login_required from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ -from openslides.application.models import Application +from openslides.application.models import Application, AVersion from openslides.application.forms import ApplicationForm, \ ApplicationManagerForm from openslides.poll.models import Poll @@ -351,3 +351,25 @@ def view_poll(request, poll_id): 'options': options, 'ballot': ballot, } + +@permission_required('application.can_manage_application') +def permit_version(request, aversion_id): + aversion = AVersion.objects.get(pk=aversion_id) + application = aversion.application + if application.accept_version(aversion): + messages.success(request, _("Version accepted") ) + else: + messages.error(request, _("ERROR by accepting the Version") ) + return redirect(reverse('application_view', args=[application.id])) + + +@permission_required('application.can_manage_application') +def reject_version(request, aversion_id): + aversion = AVersion.objects.get(pk=aversion_id) + application = aversion.application + if application.reject_version(aversion): + messages.success(request, _("Version rejected") ) + else: + messages.error(request, _("ERROR by rejecting the Version") ) + return redirect(reverse('application_view', args=[application.id])) +