From d4d6d522e0ca5c515f172615d1072a109473bdca Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Sun, 10 Feb 2019 13:49:27 +0000
Subject: [PATCH] GH-877: Allow to find newer comments easily

---
 opentech/apply/activity/models.py |  3 +++
 opentech/apply/funds/api_views.py | 13 +++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/opentech/apply/activity/models.py b/opentech/apply/activity/models.py
index ea3e71013..159bd219c 100644
--- a/opentech/apply/activity/models.py
+++ b/opentech/apply/activity/models.py
@@ -41,6 +41,9 @@ class BaseActivityQuerySet(models.QuerySet):
     def visible_to(self, user):
         return self.filter(visibility__in=self.model.visibility_for(user))
 
+    def newer(self, activity):
+        return self.filter(timestamp__gt=activity.timestamp)
+
 
 class ActivityQuerySet(BaseActivityQuerySet):
     def comments(self):
diff --git a/opentech/apply/funds/api_views.py b/opentech/apply/funds/api_views.py
index ece53fb38..cb989821e 100644
--- a/opentech/apply/funds/api_views.py
+++ b/opentech/apply/funds/api_views.py
@@ -108,13 +108,22 @@ class RoundLabList(generics.ListAPIView):
     pagination_class = StandardResultsSetPagination
 
 
+class NewerThanFilter(filters.ModelChoiceFilter):
+    def filter(self, qs, value):
+        if not value:
+            return qs
+
+        return qs.newer(value)
+
+
 class CommentFilter(filters.FilterSet):
     since = filters.DateTimeFilter(field_name="timestamp", lookup_expr='gte')
     before = filters.DateTimeFilter(field_name="timestamp", lookup_expr='lte')
+    newer = NewerThanFilter(queryset=Activity.comments.all())
 
     class Meta:
         model = Activity
-        fields = ['submission', 'visibility', 'since', 'before']
+        fields = ['submission', 'visibility', 'since', 'before', 'newer']
 
 
 class CommentList(generics.ListAPIView):
@@ -138,7 +147,7 @@ class CommentListCreate(generics.ListCreateAPIView):
         permissions.IsAuthenticated, IsApplyStaffUser,
     )
     filter_backends = (filters.DjangoFilterBackend,)
-    filter_fields = ('visibility',)
+    filter_class = CommentFilter
     pagination_class = StandardResultsSetPagination
 
     def get_queryset(self):
-- 
GitLab