diff --git a/affiliations/admin.py b/affiliations/admin.py index a02dea12a64e4ad47d9026a8b06851f68424e043..7d69fafdbd7a4a548ded801972c0279ec1bc0ce0 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 3b0241f47f2c626e9b2d1007395a6d85bbc807df..f0e52fdbca89da2fb6af3a3f746f97a019459e75 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 ca4187a784c82b55c01a7cd87e9f9b66afc9b485..d1da522fd4d6cc9dad61d159d840fb114ef05d7a 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 5fc623c480c74f0134b0276d160155534806d354..dd8879a61fe348dc1661bb25d37fc63514ca515c 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 6d291410d725247c39e6504db6e6501bad258dd2..c6f23fbf3012655430243cadf43e90b45ba37f55 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 7220e8e5236440b6e338b778767e68c85e4741a2..01d4fb2775e7a720a601742f3cbbec47857629af 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 d7fc6c11547f8e8cc07691900a82324596d1efdb..65eda86a2566d86f96ad9d7cadda678b4c865b39 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 4b85c2f77dc99947cd550ea8af9dc2872820b34c..be2b86fd29e02e05d65e33b75b6c5b1672f57ef9 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 37d2365ca2c3a3307d1cbc345475313842741b20..feb9bd1d060374fa357ed5060d101f6cea4ee836 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 c0e02335c15e91d132934a83a4eb13c32a20585b..2d583e8df78604bb2c2cef5cdb9d3c7737db6902 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 d08a94ae59c2fa3f3180eaba9c3ccf5ca9cc96eb..6cc8b42ba3ce945719a8b6ca27bfd52eb9f2da1a 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 09167354f58b745ab7a43d2adee91e568f5d8517..dd028053c37ba0fb1c8e77d1b463ad6a16155854 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 b0164430eff527a90985a8b5d64c007441e6ebd7..ed25e5e0bb1ff9cbae2b0fbecc86cf2b74cd2bb0 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 16d37b67baf431c938447a3b21052cc8375a6242..345021dd99dabb24f7eaebd34da3c943d0aa9ee4 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 a202ec2ae8d6b264c5c6aec50d234aa31c718eda..43e5ed004e74df1fcd53f6e1044a92cb8b98a43f 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 d16a28a8b92f3d10b845df871426b84a6aefb06c..0fdd695cf594644929a243bbd9539451ae7a3554 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 f6626aed77a85f9d974f49f28d8db2bf7a342165..90218f977a81b0820918adf894cdf10e7f7e6835 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 %}