From d0a3166c886a5b71a57368a91cb9f4d729ab7c76 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Tue, 7 Jul 2020 17:19:40 +0200
Subject: [PATCH] Remove authorship claims for publications

---
 commentaries/forms.py                         |  6 ++--
 journals/admin.py                             | 17 +++++++---
 .../migrations/0088_auto_20200707_1542.py     | 21 ++++++++++++
 journals/models/publication.py                |  6 ----
 scipost/admin.py                              |  1 -
 scipost/forms.py                              |  8 -----
 ...0036_remove_authorshipclaim_publication.py | 17 ++++++++++
 scipost/models.py                             |  3 --
 scipost/urls.py                               |  2 --
 scipost/views.py                              | 34 -------------------
 10 files changed, 52 insertions(+), 63 deletions(-)
 create mode 100644 journals/migrations/0088_auto_20200707_1542.py
 create mode 100644 scipost/migrations/0036_remove_authorshipclaim_publication.py

diff --git a/commentaries/forms.py b/commentaries/forms.py
index 316847b53..5f653a0aa 100644
--- a/commentaries/forms.py
+++ b/commentaries/forms.py
@@ -293,8 +293,8 @@ class CommentarySearchForm(forms.Form):
 
 class CommentSciPostPublication(CommentForm):
     """
-    This Form will let authors of an SciPost publication comment on their Publication
-    using the Commentary functionalities. It will create an Commentary page if it does not
+    This Form will let authors of a SciPost publication comment on their Publication
+    using the Commentary functionalities. It will create a Commentary page if it does not
     exist yet.
 
     It inherits from ModelForm: CommentForm and thus will, by default, return a Comment!
@@ -341,8 +341,6 @@ class CommentSciPostPublication(CommentForm):
             commentary.parse_links_into_urls(commit=False)
             commentary.save()
             commentary.authors.add(*self.publication.authors.all())
-            commentary.authors_claims.add(*self.publication.authors_claims.all())
-            commentary.authors_false_claims.add(*self.publication.authors_false_claims.all())
 
         # Original saving steps
         comment = super().save(commit=False)
diff --git a/journals/admin.py b/journals/admin.py
index 14de85ac9..dd9883eb2 100644
--- a/journals/admin.py
+++ b/journals/admin.py
@@ -63,14 +63,15 @@ class OrgPubFractionInline(admin.TabularInline):
 
 class PublicationAdmin(admin.ModelAdmin):
     search_fields = ['title', 'author_list', 'doi_label']
-    list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date', 'status']
+    list_display = [
+        'title', 'author_list',
+        'in_issue', 'doi_string',
+        'publication_date', 'status']
     date_hierarchy = 'publication_date'
     list_filter = ['in_issue']
     inlines = [AuthorsInline, ReferenceInline, OrgPubFractionInline]
     autocomplete_fields = [
         'accepted_submission',
-        'authors_claims',
-        'authors_false_claims',
         'grants',
         'funders_generic',
         'topics',
@@ -81,7 +82,10 @@ admin.site.register(Publication, PublicationAdmin)
 
 class PublicationProxyMetadata(Publication):
     search_fields = ['title', 'author_list', 'doi_label']
-    list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date', 'status']
+    list_display = [
+        'title', 'author_list',
+        'in_issue', 'doi_string',
+        'publication_date', 'status']
 
     class Meta:
         proxy = True
@@ -92,7 +96,10 @@ class PublicationProxyMetadata(Publication):
 class PublicationProxyMetadataAdmin(admin.ModelAdmin):
     fields = ['metadata', 'metadata_xml', 'metadata_DOAJ', 'BiBTeX_entry']
     search_fields = ['title', 'author_list', 'doi_label']
-    list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date', 'status']
+    list_display = [
+        'title', 'author_list',
+        'in_issue', 'doi_string',
+        'publication_date', 'status']
 
 
 admin.site.register(PublicationProxyMetadata, PublicationProxyMetadataAdmin)
diff --git a/journals/migrations/0088_auto_20200707_1542.py b/journals/migrations/0088_auto_20200707_1542.py
new file mode 100644
index 000000000..5761d5926
--- /dev/null
+++ b/journals/migrations/0088_auto_20200707_1542.py
@@ -0,0 +1,21 @@
+# Generated by Django 2.2.11 on 2020-07-07 13:42
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('journals', '0087_auto_20200506_2115'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='publication',
+            name='authors_claims',
+        ),
+        migrations.RemoveField(
+            model_name='publication',
+            name='authors_false_claims',
+        ),
+    ]
diff --git a/journals/models/publication.py b/journals/models/publication.py
index 53e95e9a5..3302c7e43 100644
--- a/journals/models/publication.py
+++ b/journals/models/publication.py
@@ -104,12 +104,6 @@ class Publication(models.Model):
         models.CharField(max_length=24, choices=SCIPOST_APPROACHES),
         blank=True, null=True, verbose_name='approach(es) [optional]')
 
-    # Authors
-    authors_claims = models.ManyToManyField('scipost.Contributor', blank=True,
-                                            related_name='claimed_publications')
-    authors_false_claims = models.ManyToManyField('scipost.Contributor', blank=True,
-                                                  related_name='false_claimed_publications')
-
     cc_license = models.CharField(max_length=32, choices=CC_LICENSES, default=CCBY4)
 
     # Funders
diff --git a/scipost/admin.py b/scipost/admin.py
index 76c7eea0c..db84bfffa 100644
--- a/scipost/admin.py
+++ b/scipost/admin.py
@@ -144,7 +144,6 @@ admin.site.register(Remark, RemarkAdmin)
 class AuthorshipClaimAdmin(admin.ModelAdmin):
     autocomplete_fields = [
         'claimant',
-        'publication',
         'submission',
         'commentary',
         'thesislink',
diff --git a/scipost/forms.py b/scipost/forms.py
index ea22a1192..c2d6a724a 100644
--- a/scipost/forms.py
+++ b/scipost/forms.py
@@ -556,14 +556,6 @@ class ContributorMergeForm(forms.Form):
         for commentary in commentaries:
             commentary.authors_false_claims.remove(contrib_from)
             commentary.authors_false_claims.add(contrib_into)
-        publications = Publication.objects.filter(authors_claims__in=[contrib_from,]).all()
-        for publication in publications:
-            publication.authors_claims.remove(contrib_from)
-            publication.authors_claims.add(contrib_into)
-        publications = Publication.objects.filter(authors_false_claims__in=[contrib_from,]).all()
-        for publication in publications:
-            publication.authors_false_claims.remove(contrib_from)
-            publication.authors_false_claims.add(contrib_into)
         submissions = Submission.objects.filter(authors__in=[contrib_from,]).all()
         for submission in submissions:
             submission.authors.remove(contrib_from)
diff --git a/scipost/migrations/0036_remove_authorshipclaim_publication.py b/scipost/migrations/0036_remove_authorshipclaim_publication.py
new file mode 100644
index 000000000..71433ed09
--- /dev/null
+++ b/scipost/migrations/0036_remove_authorshipclaim_publication.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.11 on 2020-07-07 15:18
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0035_auto_20191123_1341'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='authorshipclaim',
+            name='publication',
+        ),
+    ]
diff --git a/scipost/models.py b/scipost/models.py
index 9f72ae82b..a30b0f54f 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -268,9 +268,6 @@ class AuthorshipClaim(models.Model):
     claimant = models.ForeignKey('scipost.Contributor',
                                  on_delete=models.CASCADE,
                                  related_name='claimant')
-    publication = models.ForeignKey('journals.Publication',
-                                    on_delete=models.CASCADE,
-                                    blank=True, null=True)
     submission = models.ForeignKey('submissions.Submission',
                                    on_delete=models.CASCADE,
                                    blank=True, null=True)
diff --git a/scipost/urls.py b/scipost/urls.py
index 4e8d9b343..3b15542a9 100644
--- a/scipost/urls.py
+++ b/scipost/urls.py
@@ -192,8 +192,6 @@ urlpatterns = [
 
     # Authorship claims
     url(r'^claim_authorships$', views.claim_authorships, name="claim_authorships"),
-    url(r'^claim_pub_authorship/(?P<publication_id>[0-9]+)/(?P<claim>[0-1])$',
-        views.claim_pub_authorship, name='claim_pub_authorship'),
     url(r'^claim_sub_authorship/(?P<submission_id>[0-9]+)/(?P<claim>[0-1])$',
         views.claim_sub_authorship, name='claim_sub_authorship'),
     url(r'^claim_com_authorship/(?P<commentary_id>[0-9]+)/(?P<claim>[0-1])$',
diff --git a/scipost/views.py b/scipost/views.py
index b36f5b267..e941bc745 100644
--- a/scipost/views.py
+++ b/scipost/views.py
@@ -966,12 +966,6 @@ def claim_authorships(request):
     """
     contributor = Contributor.objects.get(user=request.user)
 
-    publication_authorships_to_claim = (Publication.objects
-                                        .filter(author_list__contains=contributor.user.last_name)
-                                        .exclude(authors__profile=contributor.profile)
-                                        .exclude(authors_claims=contributor)
-                                        .exclude(authors_false_claims=contributor))
-    pub_auth_claim_form = AuthorshipClaimForm()
     submission_authorships_to_claim = (Submission.objects
                                        .filter(author_list__contains=contributor.user.last_name)
                                        .exclude(authors=contributor)
@@ -992,8 +986,6 @@ def claim_authorships(request):
     thesis_auth_claim_form = AuthorshipClaimForm()
 
     context = {
-        'publication_authorships_to_claim': publication_authorships_to_claim,
-        'pub_auth_claim_form': pub_auth_claim_form,
         'submission_authorships_to_claim': submission_authorships_to_claim,
         'sub_auth_claim_form': sub_auth_claim_form,
         'commentary_authorships_to_claim': commentary_authorships_to_claim,
@@ -1004,22 +996,6 @@ def claim_authorships(request):
     return render(request, 'scipost/claim_authorships.html', context)
 
 
-@login_required
-@is_contributor_user()
-def claim_pub_authorship(request, publication_id, claim):
-    if request.method == 'POST':
-        contributor = Contributor.objects.get(user=request.user)
-        publication = get_object_or_404(Publication, pk=publication_id)
-        if claim == '1':
-            publication.authors_claims.add(contributor)
-            newclaim = AuthorshipClaim(claimant=contributor, publication=publication)
-            newclaim.save()
-        elif claim == '0':
-            publication.authors_false_claims.add(contributor)
-        publication.save()
-    return redirect('scipost:claim_authorships')
-
-
 @login_required
 @is_contributor_user()
 def claim_sub_authorship(request, submission_id, claim):
@@ -1081,16 +1057,6 @@ def vet_authorship_claim(request, claim_id, claim):
         vetting_contributor = Contributor.objects.get(user=request.user)
         claim_to_vet = AuthorshipClaim.objects.get(pk=claim_id)
 
-        if claim_to_vet.publication:
-            claim_to_vet.publication.authors_claims.remove(claim_to_vet.claimant)
-            if claim == '1':
-                PublicationAuthorsTable.objects.create(
-                    publication=claim_to_vet.publication, contributor=claim_to_vet.claimant)
-                claim_to_vet.status = '1'
-            elif claim == '0':
-                claim_to_vet.publication.authors_false_claims.add(claim_to_vet.claimant)
-                claim_to_vet.status = '-1'
-            claim_to_vet.publication.save()
         if claim_to_vet.submission:
             claim_to_vet.submission.authors_claims.remove(claim_to_vet.claimant)
             if claim == '1':
-- 
GitLab