From 6b01e13b9bd6cf3ddb29b1ddbe8a74ac88e534a1 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Tue, 15 Aug 2017 10:38:10 +0200
Subject: [PATCH] Submission Admin overhaul

---
 scipost/admin.py      | 10 ++++++
 submissions/admin.py  | 75 ++++++++++++++++++++++++++++++++++++++++---
 submissions/models.py |  6 ++++
 3 files changed, 86 insertions(+), 5 deletions(-)

diff --git a/scipost/admin.py b/scipost/admin.py
index 368312840..c9c588627 100644
--- a/scipost/admin.py
+++ b/scipost/admin.py
@@ -19,6 +19,15 @@ from submissions.models import Submission
 admin.site.register(UnavailabilityPeriod)
 
 
+class ContributorAdmin(admin.ModelAdmin):
+    search_fields = [
+        'user__first_name',
+        'user__last_name',
+        'user__email',
+        'orcid_id',
+        'affiliation']
+
+
 class ContributorInline(admin.StackedInline):
     model = Contributor
     extra = 0
@@ -34,6 +43,7 @@ class UserAdmin(UserAdmin):
 
 
 admin.site.unregister(User)
+admin.site.register(Contributor, ContributorAdmin)
 admin.site.register(User, UserAdmin)
 
 
diff --git a/submissions/admin.py b/submissions/admin.py
index fc25f4403..252b1d19b 100644
--- a/submissions/admin.py
+++ b/submissions/admin.py
@@ -47,13 +47,78 @@ class SubmissionAdminForm(forms.ModelForm):
 
 
 class SubmissionAdmin(GuardedModelAdmin):
-    search_fields = ['submitted_by__user__last_name', 'title', 'author_list', 'abstract']
-    list_display = ('title', 'author_list', 'status', 'submission_date', 'publication',)
     date_hierarchy = 'submission_date'
-    list_filter = ('status', 'discipline', 'submission_type',)
     form = SubmissionAdminForm
-    # inlines = (CommentsGenericInline,)
-    exclude = ('comments', 'comments_old')
+    list_display = ('title', 'author_list', 'status', 'submission_date', 'publication',)
+    list_filter = ('status', 'discipline', 'submission_type',)
+    search_fields = ['submitted_by__user__last_name', 'title', 'author_list', 'abstract']
+    raw_id_fields = ('editor_in_charge', 'submitted_by')
+    readonly_fields = ('arxiv_identifier_w_vn_nr', 'publication')
+
+    # Admin fields should be added in the fieldsets
+    radio_fields = {
+        "discipline": admin.VERTICAL,
+        "submitted_to_journal": admin.VERTICAL,
+        "refereeing_cycle": admin.HORIZONTAL,
+        "submission_type": admin.VERTICAL
+    }
+    fieldsets = (
+        (None, {
+            'fields': (
+                'publication',
+                'title',
+                'abstract',
+                'submission_type',
+                ('arxiv_identifier_wo_vn_nr', 'arxiv_vn_nr', 'arxiv_identifier_w_vn_nr'),
+                'arxiv_link'
+                ),
+        }),
+        ('Versioning', {
+            'fields': (
+                'is_current',
+                'is_resubmission',
+                'list_of_changes'),
+        }),
+        ('Submission details', {
+            'classes': ('collapse',),
+            'fields': (
+                'author_comments',
+                'discipline',
+                'domain',
+                'subject_area',
+                'secondary_areas'),
+        }),
+        ('Authors', {
+            'classes': ('collapse',),
+            'fields': (
+                'submitted_by',
+                'author_list',
+                'authors',
+                'authors_claims',
+                'authors_false_claims'),
+        }),
+        ('Refereeing', {
+            'classes': ('collapse',),
+            'fields': (
+                'editor_in_charge',
+                'status',
+                'refereeing_cycle',
+                ('open_for_commenting', 'open_for_reporting'),
+                'reporting_deadline',
+                'acceptance_date',
+                'referees_flagged',
+                'referees_suggested',
+                'remarks_for_editors',
+                'submitted_to_journal',
+                'pdf_refereeing_pack',
+                'plagiarism_report'),
+        }),
+        ('Meta', {
+            'classes': ('collapse',),
+            'fields': ('metadata', 'submission_date'),
+        }),
+
+    )
 
 
 admin.site.register(Submission, SubmissionAdmin)
diff --git a/submissions/models.py b/submissions/models.py
index 6603cf007..4c69c9e70 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -113,6 +113,12 @@ class Submission(models.Model):
         self._update_cycle()
 
     def save(self, *args, **kwargs):
+        # Fill `arxiv_identifier_w_vn_nr` as a dummy field for convenience
+        arxiv_w_vn = '{arxiv}v{version}'.format(
+            arxiv=self.arxiv_identifier_wo_vn_nr,
+            version=self.arxiv_vn_nr)
+        self.arxiv_identifier_w_vn_nr = arxiv_w_vn
+
         super().save(*args, **kwargs)
         self._update_cycle()
 
-- 
GitLab