From 7c7dc9c73d2902059d054f7bad32d17142e4537b Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Mon, 22 Jan 2018 19:51:15 +0100
Subject: [PATCH] Fix citation always returns None

---
 comments/models.py                            |  6 ++--
 submissions/admin.py                          |  2 +-
 submissions/models.py                         | 29 +++++++++----------
 .../templatetags/submissions_extras.py        |  4 +++
 4 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/comments/models.py b/comments/models.py
index 6a36fa055..afec36f91 100644
--- a/comments/models.py
+++ b/comments/models.py
@@ -234,19 +234,19 @@ class Comment(TimeStampedModel):
 
         return None
 
-
     @property
     def citation(self):
+        citation = ''
         if self.doi_string:
-            citation = ''
             if self.anonymous:
                 citation += 'Anonymous, '
             else:
                 citation += '%s %s, ' % (self.author.user.first_name, self.author.user.last_name)
+
             if self.is_authorreply:
                 citation += 'SciPost Author Replies '
             else:
                 citation += 'SciPost Comments '
             citation += '(%s), doi:' % self.date_submitted.strftime('%Y')
             citation += self.doi_string
-        return None
+        return citation
diff --git a/submissions/admin.py b/submissions/admin.py
index 0f52fe45e..0466fba0c 100644
--- a/submissions/admin.py
+++ b/submissions/admin.py
@@ -184,7 +184,7 @@ class ReportAdminForm(forms.ModelForm):
 
 class ReportAdmin(admin.ModelAdmin):
     search_fields = ['author__user__last_name', 'submission']
-    list_display = ('author', 'status', submission_short_title, 'date_submitted', )
+    list_display = ('author', 'status', 'doi_label', submission_short_title, 'date_submitted', )
     list_display_links = ('author',)
     date_hierarchy = 'date_submitted'
     list_filter = ('status',)
diff --git a/submissions/models.py b/submissions/models.py
index 88d66aace..6f951322d 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -452,16 +452,6 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
         return (self.author.user.first_name + ' ' + self.author.user.last_name + ' on ' +
                 self.submission.title[:50] + ' by ' + self.submission.author_list[:50])
 
-    def save(self, *args, **kwargs):
-        # Control Report count per Submission.
-        if not self.report_nr:
-            self.report_nr = self.submission.reports.count() + 1
-        return super().save(*args, **kwargs)
-
-    def create_doi_label(self):
-        self.doi_label = 'SciPost.Report.' + str(self.id)
-        self.save()
-
     def get_absolute_url(self):
         return self.submission.get_absolute_url() + '#report_' + str(self.report_nr)
 
@@ -473,8 +463,7 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
     def doi_string(self):
         if self.doi_label:
             return '10.21468/' + self.doi_label
-        else:
-            return None
+        return ''
 
     @cached_property
     def title(self):
@@ -484,7 +473,7 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
         """
         return self.submission.title
 
-    @cached_property
+    @property
     def is_followup_report(self):
         """
         Check if current Report is a `FollowupReport`. A Report is a `FollowupReport` if the
@@ -494,6 +483,16 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
             submission__arxiv_identifier_wo_vn_nr=self.submission.arxiv_identifier_wo_vn_nr,
             submission__arxiv_vn_nr__lt=self.submission.arxiv_vn_nr).exists())
 
+    def save(self, *args, **kwargs):
+        # Control Report count per Submission.
+        if not self.report_nr:
+            self.report_nr = self.submission.reports.count() + 1
+        return super().save(*args, **kwargs)
+
+    def create_doi_label(self):
+        self.doi_label = 'SciPost.Report.' + str(self.id)
+        self.save()
+
     def latest_report_from_series(self):
         """
         Get latest Report from the same author for the Submission series.
@@ -525,8 +524,8 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
 
     @property
     def citation(self):
+        citation = ''
         if self.doi_string:
-            citation = ''
             if self.anonymous:
                 citation += 'Anonymous, '
             else:
@@ -534,7 +533,7 @@ class Report(SubmissionRelatedObjectMixin, models.Model):
             citation += 'Report on %s, ' % self.submission.arxiv_identifier_w_vn_nr
             citation += 'SciPost Reports (%s), doi:' % self.date_submitted.strftime('%Y')
             citation += self.doi_string
-        return None
+        return citation
 
 
 ##########################
diff --git a/submissions/templatetags/submissions_extras.py b/submissions/templatetags/submissions_extras.py
index f7e9990c2..f63b5843f 100644
--- a/submissions/templatetags/submissions_extras.py
+++ b/submissions/templatetags/submissions_extras.py
@@ -24,11 +24,15 @@ def is_viewable_by_authors(recommendation):
 
 @register.filter
 def user_is_referee(submission, user):
+    if not user.is_authenticated:
+        return False
     return submission.referee_invitations.filter(referee__user=user).exists()
 
 
 @register.filter
 def is_voting_fellow(submission, user):
+    if not user.is_authenticated:
+        return False
     return submission.voting_fellows.filter(contributor__user=user).exists()
 
 
-- 
GitLab