From 6d2a89c1e8d2c0e03b94074c2374facb5cea4472 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Sat, 24 Jun 2017 19:41:46 +0200
Subject: [PATCH] Improve information on templates

---
 partners/managers.py                          |  3 +
 partners/models.py                            |  2 +-
 .../templates/partners/_agreement_card.html   | 20 ++++++
 .../templates/partners/_agreement_table.html  |  4 +-
 partners/templates/partners/dashboard.html    | 68 +++++++++++--------
 partners/views.py                             |  6 +-
 6 files changed, 72 insertions(+), 31 deletions(-)
 create mode 100644 partners/templates/partners/_agreement_card.html

diff --git a/partners/managers.py b/partners/managers.py
index fd9f6980b..243dbf81f 100644
--- a/partners/managers.py
+++ b/partners/managers.py
@@ -11,3 +11,6 @@ class ProspectivePartnerManager(models.Manager):
 class MembershipAgreementManager(models.Manager):
     def submitted(self):
         return self.filter(status=MEMBERSHIP_SUBMITTED)
+
+    def open_to_partner(self):
+        return self.exclude(status=MEMBERSHIP_SUBMITTED)
diff --git a/partners/models.py b/partners/models.py
index 8381b61e0..8b75ce274 100644
--- a/partners/models.py
+++ b/partners/models.py
@@ -170,7 +170,7 @@ class Contact(models.Model):
     @property
     def kind_display(self):
         """
-        Due to a lack of support of to use get_FOO_display in a ArrayField, one has to create
+        Due to a lack of support to use get_FOO_display in a ArrayField, one has to create
         one 'manually'.
         """
         choices = dict(CONTACT_TYPES)
diff --git a/partners/templates/partners/_agreement_card.html b/partners/templates/partners/_agreement_card.html
new file mode 100644
index 000000000..5e014103f
--- /dev/null
+++ b/partners/templates/partners/_agreement_card.html
@@ -0,0 +1,20 @@
+<div class="card-block">
+  <div class="row">
+    <div class="col-md-4">
+      <address>
+            <h3>{{ agreement.partner.institution.name }}</h3>
+            <strong>{{ agreement.partner.institution.acronym }} ({{ agreement.partner.institution.get_kind_display }})</strong><br>
+            {{ agreement.partner.institution.address|linebreaks }}
+            {{ agreement.partner.institution.get_country_display }}
+      </address>
+    </div>
+    <div class="col-md-4">
+        <p>Agreement Status: <span class="label label-sm label-secondary">{{ agreement.get_status_display }}</span></p>
+        <p>Yearly Contribution: € {{ agreement.offered_yearly_contribution }}</p>
+    </div>
+    <div class="col-md-4">
+        <p>Start Date: {{ agreement.start_date }}</p>
+        <p>Duration: {{ agreement.get_duration_display }}</p>
+    </div>
+  </div>
+</div>
diff --git a/partners/templates/partners/_agreement_table.html b/partners/templates/partners/_agreement_table.html
index 8a878dfe5..5b6c9abae 100644
--- a/partners/templates/partners/_agreement_table.html
+++ b/partners/templates/partners/_agreement_table.html
@@ -1,8 +1,8 @@
-<table class="table">
+<table class="table mt-2">
     <tr><td>Partner: </td><td><a href="{{agreement.partner.get_absolute_url}}">{{ agreement.partner }}</a></td></tr>
     <tr><td>Status: </td><td>{{ agreement.status }}</td></tr>
     <tr><td>Request date: </td><td>{{ agreement.date_requested }}</td></tr>
     <tr><td>Start date: </td><td>{{ agreement.start_date }}</td></tr>
-    <tr><td>Duration: </td><td>{{ agreement.duration }}</td></tr>
+    <tr><td>Duration: </td><td>{{ agreement.get_duration_display }}</td></tr>
     <tr><td>Yearly contribution: </td><td>€ {{ agreement.offered_yearly_contribution }}</td></tr>
 </table>
diff --git a/partners/templates/partners/dashboard.html b/partners/templates/partners/dashboard.html
index b75ed6418..596c20e84 100644
--- a/partners/templates/partners/dashboard.html
+++ b/partners/templates/partners/dashboard.html
@@ -66,15 +66,6 @@
                     {% endfor %}
                 </ul>
 
-                <h3>My Agreements</h3>
-                <ul>
-                    {% for partner in request.user.partners.agreements.all %}
-                        <li>{{partner}}</li>
-                    {% empty %}
-                        <li>No active agreements found.</li>
-                    {% endfor %}
-                </ul>
-
                 <h3>Update your personal data or password</h3>
 
                 <ul>
@@ -93,10 +84,13 @@
             </div>
         </div>
         <div class="row">
-            <div class="col-12">
-                <h3>Your registered agreements</h3>
-                <p>None found.</p>
-            </div>
+          <div class="col-12">
+                <ul class="list-group list-group-flush">
+                  {% for agreement in personal_agreements %}
+                      <li class="list-group-item">{% include 'partners/_agreement_card.html' with agreement=agreement %}</li>
+                  {% endfor %}
+                </ul>
+          </div>
         </div>
     </div><!-- End tab -->
 
@@ -151,30 +145,50 @@
         	  <h2 class="highlight">Partners</h2>
         	</div>
           </div>
-          <ul class="list-group list-group-flush">
-        	{% for partner in partners %}
-        	<li class="list-group-item">{% include 'partners/_partner_card.html' with partner=partner %}</li>
-        	{% endfor %}
-          </ul>
+          <div class="row">
+        	<div class="col-12">
+              <ul class="list-group list-group-flush">
+            	{% for partner in partners %}
+            	<li class="list-group-item">{% include 'partners/_partner_card.html' with partner=partner %}</li>
+            	{% endfor %}
+              </ul>
+            </div>
+          </div>
       </div><!-- End tab -->
 
       <!-- Tab: Agreements -->
       <div class="tab-pane" id="global_agreements" role="tabpanel">
           <div class="row">
         	<div class="col-12">
-        	  <h2 class="highlight">Membership Agreements</h2>
+        	  <h2 class="highlight">SciPost's Membership Agreements</h2>
               <h3><a href="{% url 'partners:add_agreement' %}">Add Membership Agreement</a></h3>
         	</div>
           </div>
 
-          <h3>SciPost's Registered Membership Agreements</h3>
-          <ul class="mb-5">
-        	{% for agreement in agreements %}
-            	<li><a href="{{agreement.get_absolute_url}}">{{ agreement }}</a></li>
-            {% empty %}
-                <li>No Agreements found.</li>
-        	{% endfor %}
-          </ul>
+          <table class="table">
+              <thead>
+                  <tr>
+                      <th>Partner</th>
+                      <th>Status</th>
+                      <th>Duration</th>
+                      <th>Start Date</th>
+                  </tr>
+              </thead>
+              <tbody>
+            	{% for agreement in agreements %}
+                    <tr>
+                    	<td><a href="{{agreement.get_absolute_url}}">{{ agreement.partner }}</a></td>
+                        <td>{{ agreement.get_status_display }}</td>
+                        <td>{{ agreement.get_duration_display }}</td>
+                        <td>{{ agreement.start_date }}</td>
+                    </tr>
+                {% empty %}
+                    <tr>
+                        <td colspan="4">No Agreements found</td>
+                    </tr>
+            	{% endfor %}
+              </tbody>
+            </table>
       </div><!-- End tab -->
     {% endif %}
 </div>
diff --git a/partners/views.py b/partners/views.py
index 3b462697e..f0d8dfc60 100644
--- a/partners/views.py
+++ b/partners/views.py
@@ -38,7 +38,11 @@ def dashboard(request):
     This page is meant as a personal page for Partners, where they will for example be able
     to read their personal data and agreements.
     '''
-    context = {}
+    personal_agreements = (MembershipAgreement.objects.open_to_partner()
+                           .filter(partner__contact=request.user.partner_contact))
+    context = {
+        'personal_agreements': personal_agreements
+    }
     if request.user.has_perm('scipost.can_manage_SPB'):
         context['partners'] = Partner.objects.all()
         context['prospective_partners'] = (ProspectivePartner.objects.not_yet_partner()
-- 
GitLab