From 0b5549ff9bf7f13b9ca4dc299dcac65f8ee5365f Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Sat, 24 Jun 2017 20:13:39 +0200
Subject: [PATCH] Minor improvements partners

---
 partners/forms.py                             | 23 +++++++++++--------
 .../migrations/0020_auto_20170624_2013.py     | 21 +++++++++++++++++
 partners/models.py                            |  5 ++--
 3 files changed, 36 insertions(+), 13 deletions(-)
 create mode 100644 partners/migrations/0020_auto_20170624_2013.py

diff --git a/partners/forms.py b/partners/forms.py
index c0cc8855b..09d849ca6 100644
--- a/partners/forms.py
+++ b/partners/forms.py
@@ -35,16 +35,19 @@ class MembershipAgreementForm(forms.ModelForm):
         }
 
     def save(self, current_user, commit=True):
-        agreement = super().save(commit)
-        if commit and agreement.partner and not self.instance.id:
-            # Create PartnerEvent if Agreement is new
-            event = PartnerEvent(
-                partner=agreement.partner,
-                event=PARTNER_STATUS_UPDATE,
-                comments='Membership Agreement added with start date %s' % agreement.start_date,
-                noted_by=current_user
-            )
-            event.save()
+        agreement = super().save(commit=False)
+        if commit:
+            if agreement.partner and not self.instance.id:
+                # Create PartnerEvent if Agreement is new
+                event = PartnerEvent(
+                    partner=agreement.partner,
+                    event=PARTNER_STATUS_UPDATE,
+                    comments='Membership Agreement added with start date %s' % agreement.start_date,
+                    noted_by=current_user
+                )
+                event.save()
+            # Save agreement afterwards to be able to detect edit/add difference
+            agreement.save()
         return agreement
 
 
diff --git a/partners/migrations/0020_auto_20170624_2013.py b/partners/migrations/0020_auto_20170624_2013.py
new file mode 100644
index 000000000..5a69c81a3
--- /dev/null
+++ b/partners/migrations/0020_auto_20170624_2013.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-06-24 18:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0019_auto_20170624_2003'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='partner',
+            name='main_contact',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='partner_main_contact', to='partners.Contact'),
+        ),
+    ]
diff --git a/partners/models.py b/partners/models.py
index 8b75ce274..89cd1660d 100644
--- a/partners/models.py
+++ b/partners/models.py
@@ -185,9 +185,8 @@ class Partner(models.Model):
     institution = models.ForeignKey('partners.Institution', 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.CASCADE,
-                                     blank=True, null=True,
-                                     related_name='partner_main_contact')
+    main_contact = models.ForeignKey('partners.Contact', on_delete=models.SET_NULL,
+                                     blank=True, null=True, related_name='partner_main_contact')
 
     def __str__(self):
         if self.institution:
-- 
GitLab