From 831e5c9a5a70b4f405f32c7dbd37781d28b07ee3 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Sun, 6 Sep 2020 14:36:59 +0200
Subject: [PATCH] Add college field to Fellowship

---
 colleges/admin.py                             |  2 +-
 .../migrations/0017_fellowship_college.py     | 19 ++++++++++++++
 .../migrations/0018_fellowship_set_college.py | 25 +++++++++++++++++++
 .../migrations/0019_auto_20200906_1436.py     | 19 ++++++++++++++
 colleges/models/fellowship.py                 | 14 +++++++++--
 5 files changed, 76 insertions(+), 3 deletions(-)
 create mode 100644 colleges/migrations/0017_fellowship_college.py
 create mode 100644 colleges/migrations/0018_fellowship_set_college.py
 create mode 100644 colleges/migrations/0019_auto_20200906_1436.py

diff --git a/colleges/admin.py b/colleges/admin.py
index 0e75922d4..f0f5c4466 100644
--- a/colleges/admin.py
+++ b/colleges/admin.py
@@ -16,7 +16,7 @@ def fellowhip_is_active(fellowship):
 
 class FellowshipAdmin(admin.ModelAdmin):
     search_fields = ['contributor__user__last_name', 'contributor__user__first_name']
-    list_display = ('__str__', 'guest', fellowhip_is_active, )
+    list_display = ('__str__', 'college', 'guest', fellowhip_is_active, )
     list_filter = ('guest',)
     fellowhip_is_active.boolean = True
     date_hierarchy = 'created'
diff --git a/colleges/migrations/0017_fellowship_college.py b/colleges/migrations/0017_fellowship_college.py
new file mode 100644
index 000000000..2f4b763f2
--- /dev/null
+++ b/colleges/migrations/0017_fellowship_college.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.11 on 2020-09-06 12:24
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('colleges', '0016_populate_colleges'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='fellowship',
+            name='college',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='fellowships', to='colleges.College'),
+        ),
+    ]
diff --git a/colleges/migrations/0018_fellowship_set_college.py b/colleges/migrations/0018_fellowship_set_college.py
new file mode 100644
index 000000000..ed506d06a
--- /dev/null
+++ b/colleges/migrations/0018_fellowship_set_college.py
@@ -0,0 +1,25 @@
+# Generated by Django 2.2.11 on 2020-09-06 12:25
+
+from django.db import migrations
+
+
+def assign_college(apps, schema_editor):
+    College = apps.get_model('colleges.College')
+    Fellowship = apps.get_model('colleges.Fellowship')
+
+    for f in Fellowship.objects.all():
+        college = College.objects.get(acad_field__slug=f.contributor.profile.discipline)
+        f.college = college
+        f.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('colleges', '0017_fellowship_college'),
+    ]
+
+    operations = [
+        migrations.RunPython(assign_college,
+                             reverse_code=migrations.RunPython.noop),
+    ]
diff --git a/colleges/migrations/0019_auto_20200906_1436.py b/colleges/migrations/0019_auto_20200906_1436.py
new file mode 100644
index 000000000..e40bd7ae5
--- /dev/null
+++ b/colleges/migrations/0019_auto_20200906_1436.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.11 on 2020-09-06 12:36
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('colleges', '0018_fellowship_set_college'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='fellowship',
+            name='college',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='fellowships', to='colleges.College'),
+        ),
+    ]
diff --git a/colleges/models/fellowship.py b/colleges/models/fellowship.py
index 9553161ce..138589125 100644
--- a/colleges/models/fellowship.py
+++ b/colleges/models/fellowship.py
@@ -23,8 +23,18 @@ class Fellowship(TimeStampedModel):
     Submission, so it has a direct effect on the submission date.
     """
 
-    contributor = models.ForeignKey('scipost.Contributor', on_delete=models.CASCADE,
-                                    related_name='fellowships')
+    college = models.ForeignKey(
+        'colleges.College',
+        on_delete=models.PROTECT,
+        related_name='fellowships'
+    )
+
+    contributor = models.ForeignKey(
+        'scipost.Contributor',
+        on_delete=models.CASCADE,
+        related_name='fellowships'
+    )
+
     start_date = models.DateField(null=True, blank=True)
     until_date = models.DateField(null=True, blank=True)
 
-- 
GitLab