From cb19a679c43320808c00b547ddd8b3b3d6862f4d Mon Sep 17 00:00:00 2001 From: vimal1083 <vimal1083@gmail.com> Date: Fri, 8 Jan 2021 13:04:53 +0530 Subject: [PATCH] Update filter Api --- hypha/apply/api/v1/filters.py | 21 ++++++++++----------- hypha/apply/api/v1/views.py | 22 +++++++++++----------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/hypha/apply/api/v1/filters.py b/hypha/apply/api/v1/filters.py index 4613bc17d..df604c8f4 100644 --- a/hypha/apply/api/v1/filters.py +++ b/hypha/apply/api/v1/filters.py @@ -44,19 +44,18 @@ class SubmissionsFilter(filters.FilterSet): queryset=get_user_model().objects.all(), ) + class Meta: + model = ApplicationSubmission + fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead') -class Meta: - model = ApplicationSubmission - fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead') - - def filter_active(self, qs, name, value): - if value is None: - return qs + def filter_active(self, qs, name, value): + if value is None: + return qs - if value: - return qs.active() - else: - return qs.inactive() + if value: + return qs.active() + else: + return qs.inactive() class NewerThanFilter(filters.ModelChoiceFilter): diff --git a/hypha/apply/api/v1/views.py b/hypha/apply/api/v1/views.py index 0682fc87b..06da94457 100644 --- a/hypha/apply/api/v1/views.py +++ b/hypha/apply/api/v1/views.py @@ -14,7 +14,7 @@ from hypha.apply.activity.messaging import MESSAGES, messenger from hypha.apply.activity.models import COMMENT, Activity from hypha.apply.determinations.views import DeterminationCreateOrUpdateView from hypha.apply.funds.models import ApplicationSubmission, RoundsAndLabs -from hypha.apply.funds.tables import get_reviewers +from hypha.apply.funds.tables import get_reviewers, get_round_leads, get_screening_statuses, get_used_rounds, get_used_funds from hypha.apply.funds.workflow import STATUSES from hypha.apply.review.models import Review @@ -57,7 +57,9 @@ class SubmissionViewSet(viewsets.ReadOnlyModelViewSet): class SubmissionFilters(APIView): - permission_classes = [permissions.IsAuthenticated] + permission_classes = ( + permissions.IsAuthenticated, IsApplyStaffUser, + ) def filter_unique_options(self, options): unique_items = [dict(item) for item in {tuple(option.items()) for option in options}] @@ -71,15 +73,14 @@ class SubmissionFilters(APIView): } def get(self, request, format=None): - submissions = ApplicationSubmission.objects.for_table(user=self.request.user) filter_options = [ self.format("fund", "Funds", [ - {"key": submission.page.id, "label": submission.page.title} - for submission in submissions.distinct('page') + {"key": fund.get("id"), "label": fund.get("title")} + for fund in get_used_funds(request).values() ]), self.format("round", "Rounds", [ - {"key": submission.round.id, "label": submission.round.title} - for submission in submissions.distinct('round').exclude(round__isnull=True) + {"key": round.get("id"), "label": round.get("title")} + for round in get_used_rounds(request).values() ]), self.format("status", "Statuses", [ {'key': list(STATUSES.get(label)), 'label': label} @@ -87,12 +88,11 @@ class SubmissionFilters(APIView): ]), self.format("screening_statuses", "Screenings", self.filter_unique_options([ {"key": screening.get("id"), "label": screening.get("title")} - for submission in submissions.distinct('screening_statuses') - for screening in submission.screening_statuses.values() + for screening in get_screening_statuses(request).values() ])), self.format("lead", "Leads", [ - {"key": submission.lead.id, "label": submission.lead.full_name} - for submission in submissions.distinct('lead') + {"key": lead.get('id'), "label": lead.get('full_name') or lead.get('email')} + for lead in get_round_leads(request).values() ]), self.format("reviewers", "Reviewers", self.filter_unique_options([ {"key": reviewer.get('id'), "label": reviewer.get('full_name') or reviewer.get('email')} -- GitLab