From bdad58558ed1ace75e7cea2b594b6cdf40276113 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Tue, 26 Feb 2019 08:41:50 +0100 Subject: [PATCH] Add method to toggle Subsidy amount public visibility --- finances/templates/finances/_subsidy_card.html | 2 +- finances/urls.py | 3 +++ finances/views.py | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/finances/templates/finances/_subsidy_card.html b/finances/templates/finances/_subsidy_card.html index bace5687a..8cfdee9cc 100644 --- a/finances/templates/finances/_subsidy_card.html +++ b/finances/templates/finances/_subsidy_card.html @@ -27,7 +27,7 @@ <td>Description:</td><td>{{ subsidy.description }}</td> </tr> <tr> - <td>Amount:</td><td>{% if subsidy.amount_publicly_shown or perms.scipost.can_manage_subsidies %}€{{ subsidy.amount }}{% else %}-{% endif %}{% if perms.scipost.can_manage_subsidies or "can_view_org_contacts" in user_org_perms %} <span class="text-muted">[publicly {% if subsidy.amount_publicly_shown %}visible{% else %}invisible{% endif %}]</span>{% endif %}</td> + <td>Amount:</td><td>{% if subsidy.amount_publicly_shown or perms.scipost.can_manage_subsidies or "can_view_org_contacts" in user_org_perms %}€{{ subsidy.amount }}{% else %}-{% endif %}{% if perms.scipost.can_manage_subsidies or "can_view_org_contacts" in user_org_perms %} {% if subsidy.amount_publicly_shown %}<span class="text-success">publicly visible</span>{% else %}<span class="text-danger">publicly invisible</span>{% endif %} <a href="{% url 'finances:subsidy_toggle_amount_public_visibility' subsidy_id=subsidy.id %}" class="small">Make it {% if subsidy.amount_publicly_shown %}in{% endif %}visible</a>{% endif %}</td> </tr> <tr> <td>Date:</td><td>{{ subsidy.date }}</td> diff --git a/finances/urls.py b/finances/urls.py index 1d85d1dd2..ed97e7ef0 100644 --- a/finances/urls.py +++ b/finances/urls.py @@ -18,6 +18,9 @@ urlpatterns = [ url(r'^subsidies/(?P<pk>[0-9]+)/delete/$', views.SubsidyDeleteView.as_view(), name='subsidy_delete'), url(r'^subsidies/(?P<pk>[0-9]+)/$', views.SubsidyDetailView.as_view(), name='subsidy_details'), + url(r'^subsidies/(?P<subsidy_id>[0-9]+)/toggle_amount_visibility/$', + views.subsidy_toggle_amount_public_visibility, + name='subsidy_toggle_amount_public_visibility'), url(r'^subsidies/(?P<subsidy_id>[0-9]+)/attachments/add/$', views.SubsidyAttachmentCreateView.as_view(), name='subsidyattachment_create'), diff --git a/finances/views.py b/finances/views.py index 4addb6a7e..0b7939f46 100644 --- a/finances/views.py +++ b/finances/views.py @@ -88,6 +88,21 @@ class SubsidyDetailView(DetailView): model = Subsidy +def subsidy_toggle_amount_public_visibility(request, subsidy_id): + """ + Method to toggle the public visibility of the amount of a Subsidy. + Callable by Admin and Contacts for the relevant Organization. + """ + subsidy = get_object_or_404(Subsidy, pk=subsidy_id) + if not (request.user.has_perm('scipost.can_manage_subsidies') or + request.user.has_perm('can_view_org_contacts', subsidy.organization)): + raise PermissionDenied + subsidy.amount_publicly_shown = not subsidy.amount_publicly_shown + subsidy.save() + messages.success(request, 'Amount visibility set to %s' % subsidy.amount_publicly_shown) + return redirect(subsidy.get_absolute_url()) + + class SubsidyAttachmentCreateView(PermissionsMixin, CreateView): """ Create a new SubsidyAttachment. -- GitLab