From e4543aed6299c8b28433900a90e6ae00e0e5a66c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-S=C3=A9bastien=20Caux?= <git@jscaux.org>
Date: Sun, 27 Feb 2022 06:32:42 +0100
Subject: [PATCH] Delete AffiliateJournalYearSubsidy facilities

---
 .../affiliates/affiliatejournal_detail.html          |  4 ++--
 .../affiliatejournal_organization_list.html          |  2 +-
 .../affiliates/affiliatejournal_subsidy_list.html    | 10 +++++++++-
 .../affiliates/affiliatepublication_detail.html      |  2 +-
 scipost_django/affiliates/urls.py                    |  7 ++++++-
 scipost_django/affiliates/views.py                   | 12 ++++++++++--
 6 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/scipost_django/affiliates/templates/affiliates/affiliatejournal_detail.html b/scipost_django/affiliates/templates/affiliates/affiliatejournal_detail.html
index 08e84b113..fbe111a72 100644
--- a/scipost_django/affiliates/templates/affiliates/affiliatejournal_detail.html
+++ b/scipost_django/affiliates/templates/affiliates/affiliatejournal_detail.html
@@ -128,7 +128,7 @@
 	  {% for organization in top_benefitting_organizations %}
 	    <tr>
 	      <td>
-		<a href="{% url 'affiliates:journal_organization_detail' journal_slug=object.slug organization_id=organization.id %}">{{ organization }}</a>
+		<a href="{% url 'affiliates:journal_organization_detail' slug=object.slug organization_id=organization.id %}">{{ organization }}</a>
 	      </td>
 	      <td align="right">{{ organization.sum_affiliate_pubfractions }}</td>
 	    </tr>
@@ -161,7 +161,7 @@
 	  {% for subsidy in subsidies_current_year %}
 	    <tr>
 	      <td>
-		<a href="{% url 'affiliates:journal_organization_detail' journal_slug=object.slug organization_id=subsidy.organization.id %}">
+		<a href="{% url 'affiliates:journal_organization_detail' slug=object.slug organization_id=subsidy.organization.id %}">
 		  {{ subsidy.organization }}
 		</a>
 	      </td>
diff --git a/scipost_django/affiliates/templates/affiliates/affiliatejournal_organization_list.html b/scipost_django/affiliates/templates/affiliates/affiliatejournal_organization_list.html
index 8e0be17f6..69ea27bb0 100644
--- a/scipost_django/affiliates/templates/affiliates/affiliatejournal_organization_list.html
+++ b/scipost_django/affiliates/templates/affiliates/affiliatejournal_organization_list.html
@@ -25,7 +25,7 @@
       {% for organization in object_list %}
 	<tr>
 	  <td>
-	    <a href="{% url 'affiliates:journal_organization_detail' journal_slug=journal.slug organization_id=organization.id %}">{{ organization }}</a>
+	    <a href="{% url 'affiliates:journal_organization_detail' slug=journal.slug organization_id=organization.id %}">{{ organization }}</a>
 	  </td>
 	  <td><img src="{{ organization.country.flag }}" alt="{{ organization.country }} flag"/>&nbsp;<span class="text-muted"><small>[{{ organization.country }}]</small></span>&nbsp;&nbsp;{{ organization.get_country_display }}</td>
 	  <td align="right">{{ organization.sum_affiliate_pubfractions }}</td>
diff --git a/scipost_django/affiliates/templates/affiliates/affiliatejournal_subsidy_list.html b/scipost_django/affiliates/templates/affiliates/affiliatejournal_subsidy_list.html
index 6bf75e459..fb3962c3b 100644
--- a/scipost_django/affiliates/templates/affiliates/affiliatejournal_subsidy_list.html
+++ b/scipost_django/affiliates/templates/affiliates/affiliatejournal_subsidy_list.html
@@ -40,17 +40,25 @@
 	<th>Country</th>
 	<th>Year</th>
 	<th align="right">Subsidy (&euro;)</th>
+	<th></th>
       </tr>
     </thead>
     <tbody>
       {% for subsidy in object_list %}
 	<tr>
 	  <td>
-	    <a href="{% url 'affiliates:journal_organization_detail' journal_slug=journal.slug organization_id=subsidy.organization.id %}">{{ subsidy.organization }}</a>
+	    <a href="{% url 'affiliates:journal_organization_detail' slug=journal.slug organization_id=subsidy.organization.id %}">{{ subsidy.organization }}</a>
 	  </td>
 	  <td><img src="{{ subsidy.organization.country.flag }}" alt="{{ subsidy.organization.country }} flag"/>&nbsp;<span class="text-muted"><small>[{{ subsidy.organization.country }}]</small></span>&nbsp;&nbsp;{{ subsidy.organization.get_country_display }}</td>
 	  <td>{{ subsidy.year }}</td>
 	  <td align="right">{{ subsidy.amount }}</td>
+	  {% if 'manage_journal_content' in user_perms %}
+	    <td>
+	      <a href="{% url 'affiliates:journal_delete_subsidy' slug=journal.slug pk=subsidy.id %}">
+		<span class="text-danger">{% include 'bi/x-square-fill.html' %}</span>
+	      </a>
+	    </td>
+	  {% endif %}
 	</tr>
       {% empty %}
 	<tr>
diff --git a/scipost_django/affiliates/templates/affiliates/affiliatepublication_detail.html b/scipost_django/affiliates/templates/affiliates/affiliatepublication_detail.html
index 28735babe..9f50db405 100644
--- a/scipost_django/affiliates/templates/affiliates/affiliatepublication_detail.html
+++ b/scipost_django/affiliates/templates/affiliates/affiliatepublication_detail.html
@@ -70,7 +70,7 @@
 	<tbody>
 	  {% for pubfrac in object.pubfractions.all %}
 	    <tr>
-	      <td><a href="{% url 'affiliates:journal_organization_detail' journal_slug=object.journal.slug organization_id=pubfrac.organization.id %}">{{ pubfrac.organization }}</a></td>
+	      <td><a href="{% url 'affiliates:journal_organization_detail' slug=object.journal.slug organization_id=pubfrac.organization.id %}">{{ pubfrac.organization }}</a></td>
 	      <td align="right">{{ pubfrac.fraction }}</td>
 	      {% if 'manage_journal_content' in user_perms %}
 		<td>
diff --git a/scipost_django/affiliates/urls.py b/scipost_django/affiliates/urls.py
index 5df37d9b7..b4b5b2db9 100644
--- a/scipost_django/affiliates/urls.py
+++ b/scipost_django/affiliates/urls.py
@@ -67,7 +67,7 @@ urlpatterns = [
         name="journal_organizations",
     ),
     path(  # /affiliates/journals/<slug:slug>/organizations/<int:pk>
-        "journals/<slug:journal_slug>/organizations/<int:organization_id>",
+        "journals/<slug:slug>/organizations/<int:organization_id>",
         views.affiliatejournal_organization_detail,
         name="journal_organization_detail",
     ),
@@ -82,4 +82,9 @@ urlpatterns = [
         views.journal_add_subsidy,
         name="journal_add_subsidy",
     ),
+    path(  # /affiliates/journals/<slug:slug>/subsidies/<int:pk>/delete
+        "journals/<slug:slug>/subsidies/<int:pk>/delete",
+        views.journal_delete_subsidy,
+        name="journal_delete_subsidy",
+    ),
 ]
diff --git a/scipost_django/affiliates/views.py b/scipost_django/affiliates/views.py
index e6923ca54..8f38f9743 100644
--- a/scipost_django/affiliates/views.py
+++ b/scipost_django/affiliates/views.py
@@ -204,8 +204,8 @@ class AffiliateJournalOrganizationListView(PaginationMixin, ListView):
         return context
 
 
-def affiliatejournal_organization_detail(request, journal_slug, organization_id):
-    journal = get_object_or_404(AffiliateJournal, slug=journal_slug)
+def affiliatejournal_organization_detail(request, slug, organization_id):
+    journal = get_object_or_404(AffiliateJournal, slug=slug)
     organization = get_object_or_404(Organization, pk=organization_id)
     affiliatepubfractions = AffiliatePubFraction.objects.filter(
         organization=organization,
@@ -251,3 +251,11 @@ def journal_add_subsidy(request, slug):
         for error_messages in form.errors.values():
             messages.warning(request, *error_messages)
     return redirect(reverse("affiliates:journal_subsidies", kwargs={"slug": slug}))
+
+
+@permission_required_or_403(
+    "affiliates.change_affiliatejournal", (AffiliateJournal, "slug", "slug")
+)
+def journal_delete_subsidy(request, slug, pk):
+    AffiliateJournalYearSubsidy.objects.filter(pk=pk).delete()
+    return redirect(reverse("affiliates:journal_subsidies", kwargs={"slug": slug}))
-- 
GitLab