From 0401fe596342dec570eba8a3d1c2a0cd606eb2fb Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Sun, 27 Sep 2020 17:26:43 +0200
Subject: [PATCH] Finish removal of discipline and expertises for profiles

---
 profiles/admin.py                             |  2 +-
 profiles/factories.py                         |  3 +--
 profiles/forms.py                             |  1 -
 .../migrations/0033_auto_20200927_1658.py     | 21 +++++++++++++++++++
 profiles/models.py                            |  9 ++------
 .../templates/profiles/_profile_card.html     | 11 +++++-----
 profiles/views.py                             |  4 ++--
 7 files changed, 33 insertions(+), 18 deletions(-)
 create mode 100644 profiles/migrations/0033_auto_20200927_1658.py

diff --git a/profiles/admin.py b/profiles/admin.py
index 5f6cbe7b2..8c1094bba 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 0ff040835..0d5d0cf1e 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 dfacc22bc..84363c735 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 000000000..f59e35895
--- /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 683807d5d..ae67c9c77 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 9c3aa6209..0a7d8253c 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 efad548f0..bb6cbb41a 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)
-- 
GitLab