From e9f073bc9250e173c0dbcfbd59f089eeee802575 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Thu, 2 Nov 2017 08:31:45 +0100
Subject: [PATCH] Rename Affiliation model

---
 affiliations/admin.py                         |  4 +-
 affiliations/apps.py                          |  2 +-
 affiliations/constants.py                     |  6 +-
 affiliations/forms.py                         | 16 ++---
 affiliations/migrations/0001_initial.py       |  2 +-
 .../migrations/0002_affiliation_acronym.py    |  2 +-
 .../migrations/0003_auto_20171101_2022.py     |  8 +--
 .../migrations/0004_auto_20171101_2208.py     |  2 +-
 affiliations/models.py                        |  9 ++-
 affiliations/signals.py                       |  2 +-
 affiliations/urls.py                          | 10 ++--
 affiliations/views.py                         | 30 +++++-----
 scipost/forms.py                              | 58 +++++++++----------
 .../0066_contributor__affiliation.py          |  2 +-
 scipost/migrations/0067_auto_20171101_2132.py |  2 +-
 scipost/models.py                             |  2 +-
 scipost/templates/scipost/personal_page.html  |  2 +-
 17 files changed, 79 insertions(+), 80 deletions(-)

diff --git a/affiliations/admin.py b/affiliations/admin.py
index a02dea12a..7d69fafdb 100644
--- a/affiliations/admin.py
+++ b/affiliations/admin.py
@@ -1,6 +1,6 @@
 from django.contrib import admin
 
-from .models import Affiliation
+from .models import Institute
 
 
-admin.site.register(Affiliation)
+admin.site.register(Institute)
diff --git a/affiliations/apps.py b/affiliations/apps.py
index 3b0241f47..f0e52fdbc 100644
--- a/affiliations/apps.py
+++ b/affiliations/apps.py
@@ -10,4 +10,4 @@ class AffiliationsConfig(AppConfig):
 
         from . import models, signals
         post_save.connect(signals.notify_new_affiliation,
-                          sender=models.Affiliation)
+                          sender=models.Institute)
diff --git a/affiliations/constants.py b/affiliations/constants.py
index ca4187a78..d1da522fd 100644
--- a/affiliations/constants.py
+++ b/affiliations/constants.py
@@ -1,4 +1,4 @@
-AFFILIATION_UNIVERSITY = 'university'
-AFFILIATION_TYPES = (
-    (AFFILIATION_UNIVERSITY, 'University'),
+TYPE_UNIVERSITY = 'university'
+INSTITUTE_TYPES = (
+    (TYPE_UNIVERSITY, 'University'),
  )
diff --git a/affiliations/forms.py b/affiliations/forms.py
index 5fc623c48..dd8879a61 100644
--- a/affiliations/forms.py
+++ b/affiliations/forms.py
@@ -1,22 +1,22 @@
 from django import forms
 
-from .models import Affiliation
+from .models import Institute
 
 
-class AffiliationMergeForm(forms.ModelForm):
-    affiliation = forms.ModelChoiceField(queryset=Affiliation.objects.none())
+class InstituteMergeForm(forms.ModelForm):
+    institute = forms.ModelChoiceField(queryset=Institute.objects.none())
 
     class Meta:
-        model = Affiliation
+        model = Institute
         fields = []
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields['affiliation'].queryset = Affiliation.objects.exclude(id=self.instance.id)
+        self.fields['institute'].queryset = Institute.objects.exclude(id=self.instance.id)
 
     def save(self, commit=True):
-        old_affiliation = self.cleaned_data['affiliation']
+        old_institute = self.cleaned_data['institute']
         if commit:
-            old_affiliation.contributors.update(affiliation=self.instance)
-            old_affiliation.delete()
+            old_institute.contributors.update(institute=self.instance)
+            old_institute.delete()
         return self.instance
diff --git a/affiliations/migrations/0001_initial.py b/affiliations/migrations/0001_initial.py
index 6d291410d..c6f23fbf3 100644
--- a/affiliations/migrations/0001_initial.py
+++ b/affiliations/migrations/0001_initial.py
@@ -15,7 +15,7 @@ class Migration(migrations.Migration):
 
     operations = [
         migrations.CreateModel(
-            name='Affiliation',
+            name='Institute',
             fields=[
                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                 ('name', models.CharField(max_length=255)),
diff --git a/affiliations/migrations/0002_affiliation_acronym.py b/affiliations/migrations/0002_affiliation_acronym.py
index 7220e8e52..01d4fb277 100644
--- a/affiliations/migrations/0002_affiliation_acronym.py
+++ b/affiliations/migrations/0002_affiliation_acronym.py
@@ -13,7 +13,7 @@ class Migration(migrations.Migration):
 
     operations = [
         migrations.AddField(
-            model_name='affiliation',
+            model_name='institute',
             name='acronym',
             field=models.CharField(blank=True, max_length=16),
         ),
diff --git a/affiliations/migrations/0003_auto_20171101_2022.py b/affiliations/migrations/0003_auto_20171101_2022.py
index d7fc6c115..65eda86a2 100644
--- a/affiliations/migrations/0003_auto_20171101_2022.py
+++ b/affiliations/migrations/0003_auto_20171101_2022.py
@@ -5,11 +5,11 @@ from __future__ import unicode_literals
 from django.db import migrations
 
 
-def fill_affiliations(apps, schema_editor):
+def fill_institutes(apps, schema_editor):
     Contributor = apps.get_model('scipost', 'Contributor')
-    Affiliation = apps.get_model('affiliations', 'Affiliation')
+    Institute = apps.get_model('affiliations', 'Institute')
     for contributor in Contributor.objects.all():
-        affiliation, __ = Affiliation.objects.get_or_create(
+        affiliation, __ = Institute.objects.get_or_create(
             name=contributor.affiliation, country=contributor.country_of_employment)
         contributor._affiliation = affiliation
         contributor.save()
@@ -27,5 +27,5 @@ class Migration(migrations.Migration):
     ]
 
     operations = [
-        migrations.RunPython(fill_affiliations, return_none),
+        migrations.RunPython(fill_institutes, return_none),
     ]
diff --git a/affiliations/migrations/0004_auto_20171101_2208.py b/affiliations/migrations/0004_auto_20171101_2208.py
index 4b85c2f77..be2b86fd2 100644
--- a/affiliations/migrations/0004_auto_20171101_2208.py
+++ b/affiliations/migrations/0004_auto_20171101_2208.py
@@ -13,7 +13,7 @@ class Migration(migrations.Migration):
 
     operations = [
         migrations.AlterModelOptions(
-            name='affiliation',
+            name='institute',
             options={'ordering': ['country']},
         ),
     ]
diff --git a/affiliations/models.py b/affiliations/models.py
index 37d2365ca..feb9bd1d0 100644
--- a/affiliations/models.py
+++ b/affiliations/models.py
@@ -3,19 +3,18 @@ from django.urls import reverse
 
 from django_countries.fields import CountryField
 
-from .constants import AFFILIATION_TYPES, AFFILIATION_UNIVERSITY
+from .constants import INSTITUTE_TYPES, TYPE_UNIVERSITY
 
 
-class Affiliation(models.Model):
+class Institute(models.Model):
     """
-    Any Scientific affiliation in the world should ideally have a SciPost registration.
+    Any (scientific) Institute in the world should ideally have a SciPost registration.
     """
     name = models.CharField(max_length=255)
     acronym = models.CharField(max_length=16, blank=True)
     # address = models.TextField(blank=True)
     country = CountryField()
-    type = models.CharField(max_length=16, choices=AFFILIATION_TYPES,
-                            default=AFFILIATION_UNIVERSITY)
+    type = models.CharField(max_length=16, choices=INSTITUTE_TYPES, default=TYPE_UNIVERSITY)
 
     class Meta:
         default_related_name = 'affiliations'
diff --git a/affiliations/signals.py b/affiliations/signals.py
index c0e02335c..2d583e8df 100644
--- a/affiliations/signals.py
+++ b/affiliations/signals.py
@@ -13,5 +13,5 @@ def notify_new_affiliation(sender, instance, created, **kwargs):
         actor, __ = FakeActors.objects.get_or_create(name='A SciPost user')
         for user in administrators:
             notify.send(sender=sender, recipient=user, actor=actor,
-                        verb=' created a new Affiliation instance. You may want to validate it.',
+                        verb=' created a new Institute instance. You may want to validate it.',
                         target=instance)
diff --git a/affiliations/urls.py b/affiliations/urls.py
index d08a94ae5..6cc8b42ba 100644
--- a/affiliations/urls.py
+++ b/affiliations/urls.py
@@ -3,9 +3,9 @@ from django.conf.urls import url
 from . import views
 
 urlpatterns = [
-    url(r'^$', views.AffiliationListView.as_view(), name='affiliations'),
-    url(r'^(?P<affiliation_id>[0-9]+)/$', views.AffiliationUpdateView.as_view(),
-        name='affiliation_details'),
-    url(r'^(?P<affiliation_id>[0-9]+)/merge$', views.merge_affiliations,
-        name='merge_affiliations'),
+    url(r'^$', views.InstituteListView.as_view(), name='institutes'),
+    url(r'^(?P<institute_id>[0-9]+)/$', views.InstituteUpdateView.as_view(),
+        name='institute_details'),
+    url(r'^(?P<institute_id>[0-9]+)/merge$', views.merge_institutes,
+        name='merge_institutes'),
 ]
diff --git a/affiliations/views.py b/affiliations/views.py
index 09167354f..dd028053c 100644
--- a/affiliations/views.py
+++ b/affiliations/views.py
@@ -7,20 +7,20 @@ from django.views.generic.edit import UpdateView
 from django.views.generic.list import ListView
 from django.shortcuts import get_object_or_404
 
-from .forms import AffiliationMergeForm
-from .models import Affiliation
+from .forms import InstituteMergeForm
+from .models import Institute
 
 
 @method_decorator(permission_required('scipost.can_manage_affiliations'), name='dispatch')
-class AffiliationListView(ListView):
-    model = Affiliation
+class InstituteListView(ListView):
+    model = Institute
     paginate_by = 100
 
 
 @method_decorator(permission_required('scipost.can_manage_affiliations'), name='dispatch')
-class AffiliationUpdateView(UpdateView):
-    model = Affiliation
-    pk_url_kwarg = 'affiliation_id'
+class InstituteUpdateView(UpdateView):
+    model = Institute
+    pk_url_kwarg = 'institute_id'
     fields = [
         'name',
         'acronym',
@@ -29,24 +29,24 @@ class AffiliationUpdateView(UpdateView):
 
     def get_context_data(self, *args, **kwargs):
         context = super().get_context_data(*args, **kwargs)
-        context['merge_form'] = AffiliationMergeForm()
+        context['merge_form'] = InstituteMergeForm()
         return context
 
     def form_valid(self, *args, **kwargs):
-        messages.success(self.request, 'Affiliation saved')
+        messages.success(self.request, 'Institute saved')
         return super().form_valid(*args, **kwargs)
 
 
 @permission_required('scipost.can_manage_affiliations')
-def merge_affiliations(request, affiliation_id):
+def merge_institutes(request, institute_id):
     """
     Merge Affiliation (affiliation_id) into the Affliation chosen in the form.
     """
-    affiliation = get_object_or_404(Affiliation, id=affiliation_id)
-    form = AffiliationMergeForm(request.POST or None, instance=affiliation)
+    institute = get_object_or_404(Institute, id=institute_id)
+    form = InstituteMergeForm(request.POST or None, instance=institute)
     if form.is_valid():
         form.save()
-        messages.success(request, 'Affiliation {a} merged into {b}'.format(
-            a=form.cleaned_data.get('affiliation', '?'), b=affiliation))
+        messages.success(request, 'Institute {a} merged into {b}'.format(
+            a=form.cleaned_data.get('institute', '?'), b=institute))
 
-    return redirect(reverse('affiliations:affiliation_details', args=(affiliation.id,)))
+    return redirect(reverse('affiliations:institute_details', args=(institute.id,)))
diff --git a/scipost/forms.py b/scipost/forms.py
index b0164430e..ed25e5e0b 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -24,7 +24,7 @@ from .decorators import has_contributor
 from .models import Contributor, DraftInvitation, RegistrationInvitation,\
                     UnavailabilityPeriod, PrecookedEmail
 
-from affiliations.models import Affiliation
+from affiliations.models import Institute
 from common.forms import MonthYearWidget
 from partners.decorators import has_contact
 
@@ -58,12 +58,12 @@ class RegistrationForm(forms.Form):
                                widget=forms.TextInput(
                                     {'placeholder': 'Recommended. Get one at orcid.org'}))
     discipline = forms.ChoiceField(choices=SCIPOST_DISCIPLINES, label='* Main discipline')
-    country_of_employment = LazyTypedChoiceField(
-        choices=countries, label='* Country of employment', initial='NL',
-        widget=CountrySelectWidget(layout=(
-            '{widget}<img class="country-select-flag" id="{flag_id}"'
-            ' style="margin: 6px 4px 0" src="{country.flag}">')))
-    affiliation = forms.CharField(label='* Affiliation', max_length=300)
+    # country_of_employment = LazyTypedChoiceField(
+    #     choices=countries, label='* Country of employment', initial='NL',
+    #     widget=CountrySelectWidget(layout=(
+    #         '{widget}<img class="country-select-flag" id="{flag_id}"'
+    #         ' style="margin: 6px 4px 0" src="{country.flag}">')))
+    # affiliation = forms.CharField(label='* Affiliation', max_length=300)
     address = forms.CharField(
         label='Address', max_length=1000,
         widget=forms.TextInput({'placeholder': 'For postal correspondence'}),
@@ -116,17 +116,17 @@ class RegistrationForm(forms.Form):
             'password': self.cleaned_data['password'],
             'is_active': False
         })
-        affiliation, __ = Affiliation.objects.get_or_create(
-            country=self.cleaned_data['country_of_employment'],
-            name=self.cleaned_data['affiliation'],
-        )
+        # institute, __ = Institute.objects.get_or_create(
+        #     country=self.cleaned_data['country_of_employment'],
+        #     name=self.cleaned_data['affiliation'],
+        # )
         contributor, new = Contributor.objects.get_or_create(**{
             'user': user,
             'invitation_key': self.cleaned_data.get('invitation_key', ''),
             'title': self.cleaned_data['title'],
             'orcid_id': self.cleaned_data['orcid_id'],
             'address': self.cleaned_data['address'],
-            'affiliation': affiliation,
+            # 'affiliation': institute,
             'personalwebpage': self.cleaned_data['personalwebpage'],
         })
 
@@ -261,8 +261,8 @@ class UpdateUserDataForm(forms.ModelForm):
 
 
 class UpdatePersonalDataForm(forms.ModelForm):
-    country_of_employment = LazyTypedChoiceField(choices=countries, widget=CountrySelectWidget())
-    affiliation = forms.CharField(max_length=300)
+    # country_of_employment = LazyTypedChoiceField(choices=countries, widget=CountrySelectWidget())
+    # affiliation = forms.CharField(max_length=300)
 
     class Meta:
         model = Contributor
@@ -277,24 +277,24 @@ class UpdatePersonalDataForm(forms.ModelForm):
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields['country_of_employment'].initial = self.instance.affiliation.country
-        self.fields['affiliation'].initial = self.instance.affiliation.name
+        # self.fields['country_of_employment'].initial = self.instance.affiliation.country
+        # self.fields['affiliation'].initial = self.instance.affiliation.name
 
     def save(self, commit=True):
         contributor = super().save(commit)
-        if commit:
-            if contributor.affiliation.contributors.count() == 1:
-                # Just update if there are no other people using this Affiliation
-                affiliation = contributor.affiliation
-                affiliation.name = self.cleaned_data['affiliation']
-                affiliation.country = self.cleaned_data['country_of_employment']
-                affiliation.save()
-            else:
-                affiliation, __ = Affiliation.objects.get_or_create(
-                    name=self.cleaned_data['affiliation'],
-                    country=self.cleaned_data['country_of_employment'])
-                contributor.affiliation = affiliation
-                contributor.save()
+        # if commit:
+        #     if contributor.affiliation.contributors.count() == 1:
+        #         # Just update if there are no other people using this Affiliation
+        #         affiliation = contributor.affiliation
+        #         affiliation.name = self.cleaned_data['affiliation']
+        #         affiliation.country = self.cleaned_data['country_of_employment']
+        #         affiliation.save()
+        #     else:
+        #         affiliation, __ = Affiliation.objects.get_or_create(
+        #             name=self.cleaned_data['affiliation'],
+        #             country=self.cleaned_data['country_of_employment'])
+        #         contributor.affiliation = affiliation
+        #         contributor.save()
         return contributor
 
     def sync_lists(self):
diff --git a/scipost/migrations/0066_contributor__affiliation.py b/scipost/migrations/0066_contributor__affiliation.py
index 16d37b67b..345021dd9 100644
--- a/scipost/migrations/0066_contributor__affiliation.py
+++ b/scipost/migrations/0066_contributor__affiliation.py
@@ -17,6 +17,6 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='contributor',
             name='_affiliation',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='affiliations.Affiliation'),
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='affiliations.Institute'),
         ),
     ]
diff --git a/scipost/migrations/0067_auto_20171101_2132.py b/scipost/migrations/0067_auto_20171101_2132.py
index a202ec2ae..43e5ed004 100644
--- a/scipost/migrations/0067_auto_20171101_2132.py
+++ b/scipost/migrations/0067_auto_20171101_2132.py
@@ -26,6 +26,6 @@ class Migration(migrations.Migration):
         migrations.AlterField(
             model_name='contributor',
             name='_affiliation',
-            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contributors', to='affiliations.Affiliation'),
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contributors', to='affiliations.Institute'),
         ),
     ]
diff --git a/scipost/models.py b/scipost/models.py
index d16a28a8b..0fdd695cf 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -52,7 +52,7 @@ class Contributor(models.Model):
                                 blank=True)
     old_country_of_employment = CountryField()
     old_affiliation = models.CharField(max_length=300, verbose_name='affiliation')
-    affiliation = models.ForeignKey('affiliations.Affiliation', null=True, blank=True,
+    affiliation = models.ForeignKey('affiliations.Institute', null=True, blank=True,
                                     related_name='contributors')
     address = models.CharField(max_length=1000, verbose_name="address",
                                blank=True)
diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html
index f6626aed7..90218f977 100644
--- a/scipost/templates/scipost/personal_page.html
+++ b/scipost/templates/scipost/personal_page.html
@@ -317,7 +317,7 @@
 
                             <h3>SciPost Administation</h3>
                             <ul>
-                                <li><a href="{% url 'affiliations:affiliations' %}">Manage Affiliations database</a></li>
+                                <li><a href="{% url 'affiliations:institutes' %}">Manage Institutes database</a></li>
                             </ul>
                         {% endif %}
 
-- 
GitLab