diff --git a/profiles/admin.py b/profiles/admin.py index 5f6cbe7b2919734cc2aba9489410c421bf694373..8c1094bbae7f344fdc811309ab884fea32dee212 100644 --- a/profiles/admin.py +++ b/profiles/admin.py @@ -21,7 +21,7 @@ class AffiliationInline(admin.TabularInline): class ProfileAdmin(admin.ModelAdmin): - list_display = ['__str__', 'email', 'discipline', 'expertises', 'has_active_contributor'] + list_display = ['__str__', 'email', 'acad_field', 'has_active_contributor'] search_fields = ['first_name', 'last_name', 'emails__email', 'orcid_id'] inlines = [ProfileEmailInline, AffiliationInline] autocomplete_fields = [ diff --git a/profiles/factories.py b/profiles/factories.py index 0ff0408358f49a95ea5a1b5e5818a03b53f72b64..0d5d0cf1e24f058cfc285242689f4174867bd04f 100644 --- a/profiles/factories.py +++ b/profiles/factories.py @@ -6,13 +6,12 @@ import factory from .models import Profile -from scipost.constants import TITLE_CHOICES, SCIPOST_DISCIPLINES +from scipost.constants import TITLE_CHOICES class ProfileFactory(factory.django.DjangoModelFactory): title = factory.Iterator(TITLE_CHOICES, getter=lambda c: c[0]) first_name = factory.Faker('first_name') last_name = factory.Faker('last_name') - discipline = factory.Iterator(SCIPOST_DISCIPLINES[2][1], getter=lambda c: c[0]) class Meta: model = Profile diff --git a/profiles/forms.py b/profiles/forms.py index dfacc22bce8af612b184963528bafa83b64ac247..84363c7354f0703e2cd7a2471d038d6c4176b896 100644 --- a/profiles/forms.py +++ b/profiles/forms.py @@ -24,7 +24,6 @@ class ProfileForm(forms.ModelForm): class Meta: model = Profile fields = ['title', 'first_name', 'last_name', - 'discipline', 'expertises', 'orcid_id', 'webpage', 'acad_field', 'specialties', 'topics', 'accepts_SciPost_emails', 'accepts_refereeing_requests', diff --git a/profiles/migrations/0033_auto_20200927_1658.py b/profiles/migrations/0033_auto_20200927_1658.py new file mode 100644 index 0000000000000000000000000000000000000000..f59e358956d27d1b00ad80b1760d317cba9764c0 --- /dev/null +++ b/profiles/migrations/0033_auto_20200927_1658.py @@ -0,0 +1,21 @@ +# Generated by Django 2.2.16 on 2020-09-27 14:58 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('profiles', '0032_populate_profile_acad_field_specialties'), + ] + + operations = [ + migrations.RemoveField( + model_name='profile', + name='discipline', + ), + migrations.RemoveField( + model_name='profile', + name='expertises', + ), + ] diff --git a/profiles/models.py b/profiles/models.py index 683807d5da5f53c57d17363dcb4a5a01773ebd22..ae67c9c771b1a927d4375376698b02f34ddd41cf 100644 --- a/profiles/models.py +++ b/profiles/models.py @@ -8,8 +8,7 @@ from django.db.models.functions import Concat from django.shortcuts import get_object_or_404 from scipost.behaviors import orcid_validator -from scipost.constants import ( - TITLE_CHOICES, SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS) +from scipost.constants import TITLE_CHOICES from scipost.fields import ChoiceArrayField from scipost.models import Contributor @@ -51,11 +50,7 @@ class Profile(models.Model): title = models.CharField(max_length=4, choices=TITLE_CHOICES, blank=True, null=True) first_name = models.CharField(max_length=64) last_name = models.CharField(max_length=64) - discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, - default=DISCIPLINE_PHYSICS, verbose_name='Main discipline') - expertises = ChoiceArrayField( - models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS), - blank=True, null=True) + orcid_id = models.CharField(max_length=20, verbose_name="ORCID id", blank=True, validators=[orcid_validator]) webpage = models.URLField(max_length=300, blank=True) diff --git a/profiles/templates/profiles/_profile_card.html b/profiles/templates/profiles/_profile_card.html index 9c3aa6209718a7f5f812d3177a595c2057007d99..0a7d8253cdb46d0155fa90b0abc98a2acd4d39e8 100644 --- a/profiles/templates/profiles/_profile_card.html +++ b/profiles/templates/profiles/_profile_card.html @@ -74,13 +74,14 @@ </td> </tr> <tr> - <td>Discipline</td><td>{{ profile.get_discipline_display }}</td> + <td>Field</td><td>{{ profile.acad_field }}</td> </tr> <tr> - <td>Expertises</td> - <td>{% for expertise in profile.expertises %} - <div class="single d-inline" data-specialization="{{expertise|lower}}" data-toggle="tooltip" data-placement="bottom" title="{{expertise|get_specialization_display}}">{{ expertise|get_specialization_code }}</div> - {% endfor %} + <td>Specialties</td> + <td> + {% for specialty in profile.specialties.all %} + <div class="single d-inline" data-specialty="{{ specialty }}" data-toggle="tooltip" data-placement="bottom" title="{{ specialty }}">{{ specialty.code }}</div> + {% endfor %} </td> </tr> <tr><td>ORCID ID</td><td><a href="//orcid.org/{{ profile.orcid_id }}" target="_blank">{{ profile.orcid_id }}</a></td></tr> diff --git a/profiles/views.py b/profiles/views.py index efad548f0c345e4565aa4f8aca26285be7b02194..bb6cbb41a75a6c1d9ec7d9ddcc15e63b75c0a36d 100644 --- a/profiles/views.py +++ b/profiles/views.py @@ -121,8 +121,8 @@ class ProfileCreateView(PermissionsMixin, CreateView): 'first_name': refinv.first_name, 'last_name': refinv.last_name, 'email': refinv.email_address, - 'discipline': refinv.submission.discipline, - 'expertises': refinv.submission.secondary_areas, + 'acad_field': refinv.submission.acad_field.id, + 'specialties': [s.id for s in refinv.submission.specialties.all()], }) elif from_type == 'registrationinvitation': reginv = get_object_or_404(RegistrationInvitation, pk=pk)