From 9d0a229fa32ae6a1019f15dd4d8ce787020c17ce Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Wed, 19 Jul 2017 21:25:09 +0200 Subject: [PATCH] Add public partners list --- partners/constants.py | 9 +++++--- partners/forms.py | 2 ++ partners/managers.py | 8 +++++++ .../0027_membershipagreement_end_date.py | 22 +++++++++++++++++++ partners/models.py | 1 + .../partners/supporting_partners.html | 20 +++++++++++++++++ partners/views.py | 5 ++++- 7 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 partners/migrations/0027_membershipagreement_end_date.py diff --git a/partners/constants.py b/partners/constants.py index d5f0a97a1..a00f453a7 100644 --- a/partners/constants.py +++ b/partners/constants.py @@ -91,12 +91,15 @@ CONTACT_TYPES = ( MEMBERSHIP_SUBMITTED = 'Submitted' +MEMBERSHIP_SIGNED = 'Signed' +MEMBERSHIP_HONOURED = 'Honoured' +MEMBERSHIP_COMPLETED = 'Completed' MEMBERSHIP_AGREEMENT_STATUS = ( (MEMBERSHIP_SUBMITTED, 'Request submitted by Partner'), ('Pending', 'Sent to Partner, response pending'), - ('Signed', 'Signed by Partner'), - ('Honoured', 'Honoured: payment of Partner received'), - ('Completed', 'Completed: agreement has been fulfilled'), + (MEMBERSHIP_SIGNED, 'Signed by Partner'), + (MEMBERSHIP_HONOURED, 'Honoured: payment of Partner received'), + (MEMBERSHIP_COMPLETED, 'Completed: agreement has been fulfilled'), ) MEMBERSHIP_DURATION = ( diff --git a/partners/forms.py b/partners/forms.py index 588c3ca2d..87322b2d6 100644 --- a/partners/forms.py +++ b/partners/forms.py @@ -28,11 +28,13 @@ class MembershipAgreementForm(forms.ModelForm): 'status', 'date_requested', 'start_date', + 'end_date', 'duration', 'offered_yearly_contribution' ) widgets = { 'start_date': forms.TextInput(attrs={'placeholder': 'YYYY-MM-DD'}), + 'end_date': forms.TextInput(attrs={'placeholder': 'YYYY-MM-DD'}), 'date_requested': forms.TextInput(attrs={'placeholder': 'YYYY-MM-DD'}), } diff --git a/partners/managers.py b/partners/managers.py index abd47528e..2b3e4b390 100644 --- a/partners/managers.py +++ b/partners/managers.py @@ -1,4 +1,6 @@ from django.db import models +from django.db.models import F +from django.utils import timezone from .constants import MEMBERSHIP_SUBMITTED, PROSPECTIVE_PARTNER_PROCESSED, REQUEST_INITIATED @@ -30,6 +32,12 @@ class MembershipAgreementManager(models.Manager): def open_to_partner(self): return self.exclude(status=MEMBERSHIP_SUBMITTED) + def now_active(self): + return self.filter(start_date__lte=timezone.now().date(), + end_date__gte=timezone.now().date()) + # start_date = models.DateField() + # duration = models.DurationField(choices=MEMBERSHIP_DURATION) + class PartnersAttachmentManager(models.Manager): def my_attachments(self, current_user): diff --git a/partners/migrations/0027_membershipagreement_end_date.py b/partners/migrations/0027_membershipagreement_end_date.py new file mode 100644 index 000000000..43aa365b6 --- /dev/null +++ b/partners/migrations/0027_membershipagreement_end_date.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-07-19 19:12 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('partners', '0026_auto_20170627_1809'), + ] + + operations = [ + migrations.AddField( + model_name='membershipagreement', + name='end_date', + field=models.DateField(default=django.utils.timezone.now), + preserve_default=False, + ), + ] diff --git a/partners/models.py b/partners/models.py index 3a2451424..441d7f3d3 100644 --- a/partners/models.py +++ b/partners/models.py @@ -266,6 +266,7 @@ class MembershipAgreement(models.Model): status = models.CharField(max_length=16, choices=MEMBERSHIP_AGREEMENT_STATUS) date_requested = models.DateField() start_date = models.DateField() + end_date = models.DateField() duration = models.DurationField(choices=MEMBERSHIP_DURATION) offered_yearly_contribution = models.SmallIntegerField(default=0, help_text="Yearly contribution in euro's (€)") diff --git a/partners/templates/partners/supporting_partners.html b/partners/templates/partners/supporting_partners.html index 2c0d931cf..abe9cf28b 100644 --- a/partners/templates/partners/supporting_partners.html +++ b/partners/templates/partners/supporting_partners.html @@ -117,6 +117,26 @@ </div> </div> +{% if current_agreements %} +<div class="row"> + <div class="col-12"> + <h1 class="highlight">Partners</h1> + <ul class="list-unstyled mb-5"> + {% for agreement in current_agreements %} + <li class="media mb-2"> + <img class="d-flex mr-3" width="64" src="{% if agreement.partner.institution.logo %}{{agreement.partner.institution.logo.url}}{% endif %}" alt="Partner Logo"> + <div class="media-body"> + <p> + <strong>{{agreement.partner.institution.name}}</strong><br> + {{agreement.partner.institution.get_country_display}} + </p> + </div> + </li> + {% endfor %} + </ul> + </div> +</div> +{% endif %} {% if perms.scipost.can_manage_SPB %} {% if prospective_partners %} diff --git a/partners/views.py b/partners/views.py index e49685e99..04a4c5f1e 100644 --- a/partners/views.py +++ b/partners/views.py @@ -26,7 +26,10 @@ from .utils import PartnerUtils def supporting_partners(request): - context = {} + current_agreements = MembershipAgreement.objects.now_active() + context = { + 'current_agreements': current_agreements + } if request.user.groups.filter(name='Editorial Administrators').exists(): # Show Agreements to Administrators only! prospective_agreements = MembershipAgreement.objects.submitted().order_by('date_requested') -- GitLab