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