diff --git a/partners/constants.py b/partners/constants.py index d5f0a97a1a562b45e0c843b1244dab68886ed263..a00f453a7dafe9df8dd6283377d5fffd55909b98 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 588c3ca2d19c398334acd27b41f6a3aad5fbd432..87322b2d67118443949252cdcdfd3d7e6c3d8faf 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 abd47528ec58a4c2cc8203cc742ab7710fbae32a..2b3e4b390a9ce49512f1a0dc01783ea7c582a968 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 0000000000000000000000000000000000000000..43aa365b6900fa00684bbd430f8b52ac85fcd7ea --- /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 3a2451424bffc50c4b972cc5926cf78c6861b809..441d7f3d33b557f45c54ee436ddd1d9760a559cf 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 2c0d931cf4eda4a2eab1dba6112cfa39cdcdc7f4..abe9cf28b9012c14c9f798734ddcf33d3090272a 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 e49685e993b0f2de273000c3d41b18fbabfe899a..04a4c5f1ef0615d1310fb3d420d3a764aad27fe6 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')