From 15012f46463e5f425cacecdace8b69defa316b2a Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Wed, 20 Feb 2019 08:20:24 +0100
Subject: [PATCH] Improve SubsidyAttachment management

---
 finances/forms.py                              |  1 -
 finances/templates/finances/_subsidy_card.html |  5 +++++
 finances/templates/finances/subsidy_list.html  |  1 -
 finances/urls.py                               |  2 +-
 finances/views.py                              | 15 +++++++++++++--
 5 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/finances/forms.py b/finances/forms.py
index 309d50d23..6f39d10e3 100644
--- a/finances/forms.py
+++ b/finances/forms.py
@@ -39,7 +39,6 @@ class SubsidyAttachmentForm(forms.ModelForm):
         )
 
 
-
 #############
 # Work logs #
 #############
diff --git a/finances/templates/finances/_subsidy_card.html b/finances/templates/finances/_subsidy_card.html
index 238cf70a4..f0cad9eeb 100644
--- a/finances/templates/finances/_subsidy_card.html
+++ b/finances/templates/finances/_subsidy_card.html
@@ -42,6 +42,11 @@
   <div class="row">
     <div class="col-12">
       <h3>Attachments</h3>
+      {% if perms.scipost.can_manage_subsidies %}
+      <ul>
+	<li><a href="{% url 'finances:subsidyattachment_create' subsidy_id=subsidy.id %}">Add a SubsidyAttachment</a> to this Subsidy</li>
+      </ul>
+      {% endif %}
       <table class="table">
 	<tr>
 	  <th>File name</th>
diff --git a/finances/templates/finances/subsidy_list.html b/finances/templates/finances/subsidy_list.html
index 7a167e3d8..e8a11c932 100644
--- a/finances/templates/finances/subsidy_list.html
+++ b/finances/templates/finances/subsidy_list.html
@@ -29,7 +29,6 @@ $(document).ready(function($) {
     {% if perms.scipost.can_manage_subsidies %}
     <ul>
       <li><a href="{% url 'finances:subsidy_create' %}">Add a Subsidy</a></li>
-      <li><a href="{% url 'finances:subsidyattachment_create' %}">Add a SubsidyAttachment</a></li>
     </ul>
     {% endif %}
   </div>
diff --git a/finances/urls.py b/finances/urls.py
index 243d70235..dd19ee96e 100644
--- a/finances/urls.py
+++ b/finances/urls.py
@@ -20,7 +20,7 @@ urlpatterns = [
     url(r'^subsidies/(?P<pk>[0-9]+)/$', views.SubsidyDetailView.as_view(), name='subsidy_details'),
     url(r'^subsidies/(?P<subsidy_id>[0-9]+)/attachments/(?P<attachment_id>[0-9]+)$',
         views.subsidy_attachment, name='subsidy_attachment'),
-    url(r'^subsidies/attachments/add/$',
+    url(r'^subsidies/(?P<subsidy_id>[0-9]+)/attachments/add/$',
         views.SubsidyAttachmentCreateView.as_view(),
         name='subsidyattachment_create'),
     url(r'^subsidies/attachments/(?P<pk>[0-9]+)/update/$',
diff --git a/finances/views.py b/finances/views.py
index f8471a9e5..426053bdb 100644
--- a/finances/views.py
+++ b/finances/views.py
@@ -89,7 +89,13 @@ class SubsidyAttachmentCreateView(PermissionsMixin, CreateView):
     model = SubsidyAttachment
     form_class = SubsidyAttachmentForm
     template_name = 'finances/subsidyattachment_form.html'
-    success_url = reverse_lazy('finances:subsidies')
+
+    def get_success_url(self):
+        return reverse_lazy('finances:subsidy_details', kwargs={'pk': self.object.subsidy.id})
+
+    def get_initial(self):
+        subsidy = get_object_or_404(Subsidy, pk=self.kwargs.get('subsidy_id'))
+        return {'subsidy': subsidy}
 
 
 class SubsidyAttachmentUpdateView(PermissionsMixin, UpdateView):
@@ -102,6 +108,9 @@ class SubsidyAttachmentUpdateView(PermissionsMixin, UpdateView):
     template_name = 'finances/subsidyattachment_form.html'
     success_url = reverse_lazy('finances:subsidies')
 
+    def get_success_url(self):
+        return reverse_lazy('finances:subsidy_details', kwargs={'pk': self.object.subsidy.id})
+
 
 class SubsidyAttachmentDeleteView(PermissionsMixin, DeleteView):
     """
@@ -109,7 +118,9 @@ class SubsidyAttachmentDeleteView(PermissionsMixin, DeleteView):
     """
     permission_required = 'scipost.can_manage_subsidies'
     model = SubsidyAttachment
-    success_url = reverse_lazy('finances:subsidies')
+
+    def get_success_url(self):
+        return reverse_lazy('finances:subsidy_details', kwargs={'pk': self.object.subsidy.id})
 
 
 def subsidy_attachment(request, subsidy_id, attachment_id):
-- 
GitLab