Skip to content
Snippets Groups Projects
Commit cb19a679 authored by vimal1083's avatar vimal1083 Committed by Fredrik Jonsson
Browse files

Update filter Api

parent 41db2f7d
No related branches found
No related tags found
No related merge requests found
...@@ -44,19 +44,18 @@ class SubmissionsFilter(filters.FilterSet): ...@@ -44,19 +44,18 @@ class SubmissionsFilter(filters.FilterSet):
queryset=get_user_model().objects.all(), queryset=get_user_model().objects.all(),
) )
class Meta:
model = ApplicationSubmission
fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead')
class Meta: def filter_active(self, qs, name, value):
model = ApplicationSubmission if value is None:
fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead') return qs
def filter_active(self, qs, name, value):
if value is None:
return qs
if value: if value:
return qs.active() return qs.active()
else: else:
return qs.inactive() return qs.inactive()
class NewerThanFilter(filters.ModelChoiceFilter): class NewerThanFilter(filters.ModelChoiceFilter):
......
...@@ -14,7 +14,7 @@ from hypha.apply.activity.messaging import MESSAGES, messenger ...@@ -14,7 +14,7 @@ from hypha.apply.activity.messaging import MESSAGES, messenger
from hypha.apply.activity.models import COMMENT, Activity from hypha.apply.activity.models import COMMENT, Activity
from hypha.apply.determinations.views import DeterminationCreateOrUpdateView from hypha.apply.determinations.views import DeterminationCreateOrUpdateView
from hypha.apply.funds.models import ApplicationSubmission, RoundsAndLabs 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.funds.workflow import STATUSES
from hypha.apply.review.models import Review from hypha.apply.review.models import Review
...@@ -57,7 +57,9 @@ class SubmissionViewSet(viewsets.ReadOnlyModelViewSet): ...@@ -57,7 +57,9 @@ class SubmissionViewSet(viewsets.ReadOnlyModelViewSet):
class SubmissionFilters(APIView): class SubmissionFilters(APIView):
permission_classes = [permissions.IsAuthenticated] permission_classes = (
permissions.IsAuthenticated, IsApplyStaffUser,
)
def filter_unique_options(self, options): def filter_unique_options(self, options):
unique_items = [dict(item) for item in {tuple(option.items()) for option in options}] unique_items = [dict(item) for item in {tuple(option.items()) for option in options}]
...@@ -71,15 +73,14 @@ class SubmissionFilters(APIView): ...@@ -71,15 +73,14 @@ class SubmissionFilters(APIView):
} }
def get(self, request, format=None): def get(self, request, format=None):
submissions = ApplicationSubmission.objects.for_table(user=self.request.user)
filter_options = [ filter_options = [
self.format("fund", "Funds", [ self.format("fund", "Funds", [
{"key": submission.page.id, "label": submission.page.title} {"key": fund.get("id"), "label": fund.get("title")}
for submission in submissions.distinct('page') for fund in get_used_funds(request).values()
]), ]),
self.format("round", "Rounds", [ self.format("round", "Rounds", [
{"key": submission.round.id, "label": submission.round.title} {"key": round.get("id"), "label": round.get("title")}
for submission in submissions.distinct('round').exclude(round__isnull=True) for round in get_used_rounds(request).values()
]), ]),
self.format("status", "Statuses", [ self.format("status", "Statuses", [
{'key': list(STATUSES.get(label)), 'label': label} {'key': list(STATUSES.get(label)), 'label': label}
...@@ -87,12 +88,11 @@ class SubmissionFilters(APIView): ...@@ -87,12 +88,11 @@ class SubmissionFilters(APIView):
]), ]),
self.format("screening_statuses", "Screenings", self.filter_unique_options([ self.format("screening_statuses", "Screenings", self.filter_unique_options([
{"key": screening.get("id"), "label": screening.get("title")} {"key": screening.get("id"), "label": screening.get("title")}
for submission in submissions.distinct('screening_statuses') for screening in get_screening_statuses(request).values()
for screening in submission.screening_statuses.values()
])), ])),
self.format("lead", "Leads", [ self.format("lead", "Leads", [
{"key": submission.lead.id, "label": submission.lead.full_name} {"key": lead.get('id'), "label": lead.get('full_name') or lead.get('email')}
for submission in submissions.distinct('lead') for lead in get_round_leads(request).values()
]), ]),
self.format("reviewers", "Reviewers", self.filter_unique_options([ self.format("reviewers", "Reviewers", self.filter_unique_options([
{"key": reviewer.get('id'), "label": reviewer.get('full_name') or reviewer.get('email')} {"key": reviewer.get('id'), "label": reviewer.get('full_name') or reviewer.get('email')}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment