diff --git a/finances/templates/finances/_subsidy_card.html b/finances/templates/finances/_subsidy_card.html index bace5687ab21895a9e2eec449043a6b22ea062e1..8cfdee9cc2ce3aeed540b4784cd2a0f81f6201de 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 1d85d1dd24f33bda72d50d5b3b7ac304feb62497..ed97e7ef0f29570ec4265c19eac6368d2571a371 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 4addb6a7e4b0655d8dc31cce92bd4ebb086c1984..0b7939f46885888b3e1c55659a60118293425990 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.