diff --git a/submissions/managers.py b/submissions/managers.py
index 155f8b2437962c50960fafc0750a17fb75fda84c..3465c643a9d6c0accbaf9fafd86763e35c2474dc 100644
--- a/submissions/managers.py
+++ b/submissions/managers.py
@@ -1,5 +1,8 @@
+import datetime
+
 from django.db import models
 from django.db.models import Q
+from django.utils import timezone
 
 from .constants import SUBMISSION_STATUS_OUT_OF_POOL, SUBMISSION_STATUS_PUBLICLY_UNLISTED,\
                        SUBMISSION_STATUS_PUBLICLY_INVISIBLE, STATUS_UNVETTED, STATUS_VETTED,\
@@ -72,7 +75,7 @@ class SubmissionQuerySet(models.QuerySet):
         """
         return (self.exclude(is_current=False)
                     .exclude(status__in=SUBMISSION_STATUS_OUT_OF_POOL)
-                    .exclude(status=STATUS_UNASSIGNED))
+                    .exclude(status__in=[STATUS_UNASSIGNED, STATUS_ACCEPTED]))
 
     def public(self):
         """
@@ -134,6 +137,12 @@ class SubmissionEventQuerySet(models.QuerySet):
         """
         return self.filter(event__in=[EVENT_FOR_EIC, EVENT_GENERAL])
 
+    def last_hours(self, hours=24):
+        """
+        Return all events of the last `hours` hours.
+        """
+        return self.filter(created__gte=timezone.now() - datetime.timedelta(hours=hours))
+
 
 class EditorialAssignmentManager(models.Manager):
     def get_for_user_in_pool(self, user):
@@ -185,3 +194,20 @@ class ReportQuerySet(models.QuerySet):
 
     def non_draft(self):
         return self.exclude(status=STATUS_DRAFT)
+
+    def contributed(self):
+        return self.filter(invited=False)
+
+    def invited(self):
+        return self.filter(invited=True)
+
+
+class RefereeInvitationQuerySet(models.QuerySet):
+    def pending(self):
+        return self.filter(accepted=None)
+
+    def accepted(self):
+        return self.filter(accepted=True)
+
+    def declined(self):
+        return self.filter(accepted=False)
diff --git a/submissions/mixins.py b/submissions/mixins.py
index 133c88447706921daa9ef668d07473ae08d3985f..4bf8ee5953f1e2d70f5abc7911f9eafb59f8ee3b 100644
--- a/submissions/mixins.py
+++ b/submissions/mixins.py
@@ -26,7 +26,7 @@ class SubmissionAdminViewMixin(FriendlyPermissionMixin):
     administrational actions regarding Submissions.
 
     :editorial_page: Submission is element of the set pool() if False,
-                     else Submission is element of the subset editorial_page()
+                     else Submission is element of the subset: editorial_page()
     """
     editorial_page = False
     slug_field = 'arxiv_identifier_w_vn_nr'
diff --git a/submissions/models.py b/submissions/models.py
index 9f973237aa49f16dff0cd270684a4ff0f20dae02..87af26ed1eb3995690e592f803e259eea45b4594 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -15,7 +15,7 @@ from .constants import ASSIGNMENT_REFUSAL_REASONS, ASSIGNMENT_NULLBOOL,\
                        SUBMISSION_CYCLES, CYCLE_DEFAULT, CYCLE_SHORT, CYCLE_DIRECT_REC,\
                        EVENT_GENERAL, EVENT_TYPES, EVENT_FOR_AUTHOR, EVENT_FOR_EIC
 from .managers import SubmissionQuerySet, EditorialAssignmentManager, EICRecommendationManager,\
-                      ReportQuerySet, SubmissionEventQuerySet
+                      ReportQuerySet, SubmissionEventQuerySet, RefereeInvitationQuerySet
 from .utils import ShortSubmissionCycle, DirectRecommendationSubmissionCycle,\
                    GeneralSubmissionCycle
 
@@ -283,6 +283,8 @@ class RefereeInvitation(models.Model):
     fulfilled = models.BooleanField(default=False)  # True if a Report has been submitted
     cancelled = models.BooleanField(default=False)  # True if EIC has deactivated invitation
 
+    objects = RefereeInvitationQuerySet.as_manager()
+
     def __str__(self):
         return (self.first_name + ' ' + self.last_name + ' to referee ' +
                 self.submission.title[:30] + ' by ' + self.submission.author_list[:30] +
@@ -471,7 +473,7 @@ class EICRecommendation(models.Model):
     recommendation = models.SmallIntegerField(choices=REPORT_REC)
 
     # Editorial Fellows who have assessed this recommendation:
-    eligible_to_vote = models.ManyToManyField(Contributor, blank=True,
+    eligible_to_vote = models.ManyToManyField('scipost.Contributor', blank=True,
                                               related_name='eligible_to_vote')
     voted_for = models.ManyToManyField(Contributor, blank=True, related_name='voted_for')
     voted_against = models.ManyToManyField(Contributor, blank=True, related_name='voted_against')
@@ -503,3 +505,7 @@ class iThenticateReport(TimeStampedModel):
     processed_time = models.DateTimeField(null=True, blank=True)
     doc_id = models.IntegerField(primary_key=True)
     percent_match = models.IntegerField(null=True, blank=True)
+
+    @property
+    def score(self):
+        return self.percent_match