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