From 9bef0148c7a614f4ca073d6a32a0431d82835453 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Tue, 29 Sep 2020 10:16:35 +0200 Subject: [PATCH] Add acad_fields to PreprintServer; remove disciplines --- submissions/admin.py | 7 +++++- .../0098_preprintserver_acad_fields.py | 19 +++++++++++++++ ...99_populate_preprint_server_acad_fields.py | 23 +++++++++++++++++++ .../0100_remove_preprintserver_disciplines.py | 17 ++++++++++++++ submissions/models/preprint_server.py | 9 ++++---- submissions/views.py | 2 +- 6 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 submissions/migrations/0098_preprintserver_acad_fields.py create mode 100644 submissions/migrations/0099_populate_preprint_server_acad_fields.py create mode 100644 submissions/migrations/0100_remove_preprintserver_disciplines.py diff --git a/submissions/admin.py b/submissions/admin.py index 46f422730..78dcb301f 100644 --- a/submissions/admin.py +++ b/submissions/admin.py @@ -20,7 +20,12 @@ def submission_short_title(obj): return obj.submission.title[:30] -admin.site.register(PreprintServer) +class PreprintServerAdmin(admin.ModelAdmin): + autocomplete_fields = [ + 'acad_fields' + ] + +admin.site.register(PreprintServer, PreprintServerAdmin) class iThenticateReportAdmin(admin.ModelAdmin): diff --git a/submissions/migrations/0098_preprintserver_acad_fields.py b/submissions/migrations/0098_preprintserver_acad_fields.py new file mode 100644 index 000000000..69e555b66 --- /dev/null +++ b/submissions/migrations/0098_preprintserver_acad_fields.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.16 on 2020-09-29 07:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ontology', '0007_Branch_Field_Specialty'), + ('submissions', '0097_remove_submission_secondary_areas'), + ] + + operations = [ + migrations.AddField( + model_name='preprintserver', + name='acad_fields', + field=models.ManyToManyField(blank=True, related_name='preprint_servers', to='ontology.AcademicField'), + ), + ] diff --git a/submissions/migrations/0099_populate_preprint_server_acad_fields.py b/submissions/migrations/0099_populate_preprint_server_acad_fields.py new file mode 100644 index 000000000..cae3386f4 --- /dev/null +++ b/submissions/migrations/0099_populate_preprint_server_acad_fields.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.16 on 2020-09-29 07:57 + +from django.db import migrations + + +def populate_acad_fields(apps, schema_editor): + PreprintServer = apps.get_model('submissions.PreprintServer') + AcademicField = apps.get_model('ontology', 'AcademicField') + + for ps in PreprintServer.objects.all(): + ps.acad_fields.set(AcademicField.objects.filter(slug__in=ps.disciplines)) + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0098_preprintserver_acad_fields'), + ] + + operations = [ + migrations.RunPython(populate_acad_fields, + reverse_code=migrations.RunPython.noop), + ] diff --git a/submissions/migrations/0100_remove_preprintserver_disciplines.py b/submissions/migrations/0100_remove_preprintserver_disciplines.py new file mode 100644 index 000000000..9979edddd --- /dev/null +++ b/submissions/migrations/0100_remove_preprintserver_disciplines.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.16 on 2020-09-29 08:16 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0099_populate_preprint_server_acad_fields'), + ] + + operations = [ + migrations.RemoveField( + model_name='preprintserver', + name='disciplines', + ), + ] diff --git a/submissions/models/preprint_server.py b/submissions/models/preprint_server.py index 801d363d5..1bc91b548 100644 --- a/submissions/models/preprint_server.py +++ b/submissions/models/preprint_server.py @@ -4,9 +4,6 @@ __license__ = "AGPL v3" from django.db import models -from scipost.constants import SCIPOST_DISCIPLINES -from scipost.fields import ChoiceArrayField - class PreprintServer(models.Model): """ @@ -14,8 +11,10 @@ class PreprintServer(models.Model): """ name = models.CharField(max_length=256) url = models.URLField() - disciplines = ChoiceArrayField( - models.CharField(max_length=32, choices=SCIPOST_DISCIPLINES) + acad_fields = models.ManyToManyField( + 'ontology.AcademicField', + blank=True, + related_name='preprint_servers' ) class Meta: diff --git a/submissions/views.py b/submissions/views.py index d8a7966d0..f7743345d 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -159,7 +159,7 @@ def submit_choose_preprint_server(request, journal_doi_label): Choose a preprint server. If `thread_hash` is given as a GET parameter, this is a resubmission. """ journal = get_object_or_404(Journal, doi_label=journal_doi_label) - preprint_servers = PreprintServer.objects.filter(disciplines__contains=[journal.discipline]) + preprint_servers = PreprintServer.objects.filter(acad_fields=journal.college.acad_field) thread_hash = request.GET.get('thread_hash') or None # Each integrated preprint server has a prefill form: scipost_prefill_form = SciPostPrefillForm( -- GitLab