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