From f160ba01bf51cc1b3e7078b5c14823ac8134cb71 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Tue, 10 Jul 2018 10:17:53 +0200
Subject: [PATCH] Add Organization field to Partner

---
 partners/forms.py                             |  3 +++
 .../migrations/0007_partner_organization.py   | 21 +++++++++++++++
 partners/models.py                            |  2 ++
 .../partners/_organization_card.html          | 27 +++++++++++++++++++
 .../templates/partners/_partner_card.html     |  4 ++-
 partners/views.py                             |  3 ++-
 6 files changed, 58 insertions(+), 2 deletions(-)
 create mode 100644 partners/migrations/0007_partner_organization.py

diff --git a/partners/forms.py b/partners/forms.py
index d44fdf8db..82958e6d3 100644
--- a/partners/forms.py
+++ b/partners/forms.py
@@ -14,6 +14,8 @@ from django_countries import countries
 from django_countries.widgets import CountrySelectWidget
 from django_countries.fields import LazyTypedChoiceField
 
+from ajax_select.fields import AutoCompleteSelectField
+
 from .constants import PARTNER_KINDS, PROSPECTIVE_PARTNER_PROCESSED, CONTACT_TYPES,\
                        PARTNER_STATUS_UPDATE, REQUEST_PROCESSED, REQUEST_DECLINED, CONTACT_GENERAL
 from .models import Partner, ProspectivePartner, ProspectiveContact, ProspectivePartnerEvent,\
@@ -149,6 +151,7 @@ class PartnerForm(forms.ModelForm):
         model = Partner
         fields = (
             'institution',
+            'organization',
             'status',
             'main_contact'
         )
diff --git a/partners/migrations/0007_partner_organization.py b/partners/migrations/0007_partner_organization.py
new file mode 100644
index 000000000..173e7d95e
--- /dev/null
+++ b/partners/migrations/0007_partner_organization.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.4 on 2018-07-10 07:23
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0006_auto_20180708_2123'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='partner',
+            name='organization',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='partners.Organization'),
+        ),
+    ]
diff --git a/partners/models.py b/partners/models.py
index 1754be423..c51f57f5e 100644
--- a/partners/models.py
+++ b/partners/models.py
@@ -293,6 +293,8 @@ class Partner(models.Model):
     """
     institution = models.ForeignKey('partners.Institution', on_delete=models.CASCADE,
                                     blank=True, null=True)
+    organization = models.ForeignKey('partners.Organization', on_delete=models.CASCADE,
+                                     blank=True, null=True)
     status = models.CharField(max_length=16, choices=PARTNER_STATUS, default=PARTNER_INITIATED)
     main_contact = models.ForeignKey('partners.Contact', on_delete=models.SET_NULL,
                                      blank=True, null=True, related_name='partner_main_contact')
diff --git a/partners/templates/partners/_organization_card.html b/partners/templates/partners/_organization_card.html
index 4f65730d1..bd3306641 100644
--- a/partners/templates/partners/_organization_card.html
+++ b/partners/templates/partners/_organization_card.html
@@ -71,6 +71,33 @@
 
 	<div class="tab-pane pt-4" id="partnership-{{ org.id }}" role="tabpanel" aria-labelledby="partnership-{{ org.id }}-tab">
 	  <h3>Partnership history:</h3>
+	  {% if org.partner.agreements %}
+	  {% if org.partner.agreements.now_active %}
+	  <p>This organization is currently a SciPost Supporting Partner.</p>
+	  {% else %}
+	  <p>This organization is currently <span class="text-danger">not</span> a SciPost Supporting Partner.</p>
+	  {% endif %}
+	  <table class="table">
+	    <thead>
+	      <th>Status</th>
+	      <th>Duration</th>
+	      <th>Start date</th>
+	      <th>Contribution/year</th>
+	    </thead>
+	    <tbody>
+	      {% for agreement in org.partner.agreements %}
+	      <tr>
+		<td>{{ agreement.get_status_display }}</td>
+		<td>{{ agreement.get_duration_display }}</td>
+		<td>{{ agreement.start_date }}</td>
+		<td>{{ agreement.offered_yearly_contribution }}&euro;</td>
+	      </tr>
+	      {% endfor %}
+	    </tbody>
+	  </table>
+	  {% else %}
+	  <p>This organization has not yet become a SciPost Supporting Partner.</p>
+	  {% endif %}
 	</div>
 
 	<div class="tab-pane pt-4" id="manage-{{ org.id }}" role="tabpanel" aria-labelledby="manage-{{ org.id }}-tab">
diff --git a/partners/templates/partners/_partner_card.html b/partners/templates/partners/_partner_card.html
index 718c522db..c04961e67 100644
--- a/partners/templates/partners/_partner_card.html
+++ b/partners/templates/partners/_partner_card.html
@@ -26,7 +26,9 @@
     <div class="col-md-3">
         <h3>Actions</h3>
         <ul>
-            <li><a href="{% url 'partners:partner_edit' partner.id %}">Edit Partner</a></li>
+          <li><a href="{% url 'partners:partner_edit' partner.id %}">Edit Partner</a>
+	    {% if not partner.organization %}<span class="text-danger">please specify the Organization{% endif %}
+</li>
             <li><a href="{% url 'partners:institution_edit' partner.institution.id %}">Edit Institution</a></li>
             <li><a href="{% url 'partners:partner_add_contact' partner.id %}">Add Contact</a></li>
             <li><a href="{{partner.get_absolute_url}}">View events ({{partner.events.count}})</a></li>
diff --git a/partners/views.py b/partners/views.py
index 0643c0ccd..11b5e3769 100644
--- a/partners/views.py
+++ b/partners/views.py
@@ -34,7 +34,8 @@ from .forms import ProspectivePartnerForm, ProspectiveContactForm,\
     PartnerForm, ContactForm, ContactFormset, ContactModelFormset,\
     NewContactForm, InstitutionForm, ActivationForm, PartnerEventForm,\
     MembershipAgreementForm, RequestContactForm, RequestContactFormSet,\
-    ProcessRequestContactForm, PartnersAttachmentFormSet, PartnersAttachmentForm
+    ProcessRequestContactForm, PartnersAttachmentFormSet, PartnersAttachmentForm,\
+    PartnerSpecifyOrganizationForm
 
 from journals.models import Publication
 
-- 
GitLab