Skip to content
Snippets Groups Projects
Commit 041e7de3 authored by Vaibhav Mule's avatar Vaibhav Mule
Browse files

refactor admin dashboard view

parent 33af28b5
No related branches found
No related tags found
No related merge requests found
...@@ -23,27 +23,24 @@ from hypha.apply.projects.tables import ( ...@@ -23,27 +23,24 @@ from hypha.apply.projects.tables import (
from hypha.apply.utils.views import ViewDispatcher from hypha.apply.utils.views import ViewDispatcher
class AdminDashboardView(TemplateView): class BaseDashboardView(TemplateView):
template_name = 'dashboard/dashboard.html' template_name = 'dashboard/dashboard.html'
def get_context_data(self, **kwargs): def awaiting_reviews(self, submissions):
submissions = ApplicationSubmission.objects.all().for_table(self.request.user) submissions = submissions.in_review_for(self.request.user).order_by('-submit_time')
count = submissions.count()
extra_context = { limit = 5
'active_payment_requests': self.get_my_active_payment_requests(self.request.user), return {
'awaiting_reviews': self.get_my_awaiting_reviews(self.request.user, submissions), 'active_statuses_filter': ''.join(f'&status={status}' for status in review_filter_for_user(self.request.user)),
'my_reviewed': self.get_my_reviewed(self.request, submissions), 'count': count,
'projects': self.get_my_projects(self.request), 'display_more': count > limit,
'projects_to_approve': self.get_my_projects_to_approve(self.request.user), 'table': SummarySubmissionsTableWithRole(submissions[:limit], prefix='my-review-'),
'rounds': self.get_rounds(self.request.user),
'my_flagged': self.get_my_flagged(self.request, submissions),
} }
current_context = super().get_context_data(**kwargs)
return {**current_context, **extra_context}
def get_my_active_payment_requests(self, user): def active_payment_requests(self):
payment_requests = PaymentRequest.objects.filter( payment_requests = PaymentRequest.objects.filter(
project__lead=user, project__lead=self.request.user,
).in_progress() ).in_progress()
return { return {
...@@ -51,10 +48,11 @@ class AdminDashboardView(TemplateView): ...@@ -51,10 +48,11 @@ class AdminDashboardView(TemplateView):
'table': PaymentRequestsDashboardTable(payment_requests), 'table': PaymentRequestsDashboardTable(payment_requests),
} }
def get_my_projects(self, request): def projects(self):
projects = Project.objects.filter(lead=request.user).for_table() projects = Project.objects.filter(lead=self.request.user).for_table()
filterset = ProjectListFilter(data=request.GET or None, request=request, queryset=projects) filterset = ProjectListFilter(
data=self.request.GET or None, request=self.request, queryset=projects)
limit = 10 limit = 10
...@@ -66,8 +64,8 @@ class AdminDashboardView(TemplateView): ...@@ -66,8 +64,8 @@ class AdminDashboardView(TemplateView):
'url': reverse('apply:projects:all'), 'url': reverse('apply:projects:all'),
} }
def get_my_projects_to_approve(self, user): def projects_to_approve(self):
if not user.is_approver: if not self.request.user.is_approver:
return { return {
'count': None, 'count': None,
'table': None, 'table': None,
...@@ -80,55 +78,61 @@ class AdminDashboardView(TemplateView): ...@@ -80,55 +78,61 @@ class AdminDashboardView(TemplateView):
'table': ProjectsDashboardTable(data=to_approve), 'table': ProjectsDashboardTable(data=to_approve),
} }
def get_my_awaiting_reviews(self, user, qs): def my_reviewed(self, submissions):
"""Staff reviewer's current to-review submissions."""
qs = qs.in_review_for(user).order_by('-submit_time')
count = qs.count()
limit = 5
return {
'active_statuses_filter': ''.join(f'&status={status}' for status in review_filter_for_user(user)),
'count': count,
'display_more': count > limit,
'table': SummarySubmissionsTableWithRole(qs[:limit], prefix='my-review-'),
}
def get_my_reviewed(self, request, qs):
"""Staff reviewer's reviewed submissions for 'Previous reviews' block""" """Staff reviewer's reviewed submissions for 'Previous reviews' block"""
qs = qs.reviewed_by(request.user).order_by('-submit_time') submissions = submissions.reviewed_by(self.request.user).order_by('-submit_time')
filterset = SubmissionFilterAndSearch(data=request.GET or None, request=request, queryset=qs) filterset = SubmissionFilterAndSearch(
data=self.request.GET or None, request=self.request, queryset=submissions)
limit = 5 limit = 5
return { return {
'filterset': filterset, 'filterset': filterset,
'table': SummarySubmissionsTable(qs[:limit], prefix='my-reviewed-'), 'table': SummarySubmissionsTable(submissions[:limit], prefix='my-reviewed-'),
'display_more': qs.count() > limit, 'display_more': submissions.count() > limit,
'url': reverse('funds:submissions:list'), 'url': reverse('funds:submissions:list'),
} }
def get_rounds(self, user): def rounds(self):
limit = 6 limit = 6
qs = (RoundsAndLabs.objects.with_progress() rounds = (RoundsAndLabs.objects.with_progress()
.active() .active()
.order_by('-end_date') .order_by('-end_date')
.by_lead(user)) .by_lead(self.request.user))
return { return {
'closed': qs.closed()[:limit], 'closed': rounds.closed()[:limit],
'open': qs.open()[:limit], 'open': rounds.open()[:limit],
} }
def get_my_flagged(self, request, qs): def my_flagged(self, submissions):
qs = qs.flagged_by(request.user).order_by('-submit_time') submissions = submissions.flagged_by(self.request.user).order_by('-submit_time')
row_attrs = dict({'data-flag-type': 'user'}, **SummarySubmissionsTable._meta.row_attrs) row_attrs = dict({'data-flag-type': 'user'}, **SummarySubmissionsTable._meta.row_attrs)
limit = 5 limit = 5
return { return {
'table': SummarySubmissionsTable(qs[:limit], prefix='my-flagged-', attrs={'class': 'all-submissions-table flagged-table'}, row_attrs=row_attrs), 'table': SummarySubmissionsTable(submissions[:limit], prefix='my-flagged-', attrs={'class': 'all-submissions-table flagged-table'}, row_attrs=row_attrs),
'display_more': qs.count() > limit, 'display_more': submissions.count() > limit,
} }
class AdminDashboardView(BaseDashboardView):
def get_context_data(self, **kwargs):
submissions = ApplicationSubmission.objects.all().for_table(self.request.user)
extra_context = {
'active_payment_requests': self.active_payment_requests(),
'awaiting_reviews': self.awaiting_reviews(submissions),
'my_reviewed': self.my_reviewed(submissions),
'projects': self.projects(),
'projects_to_approve': self.projects_to_approve(),
'rounds': self.rounds(),
'my_flagged': self.my_flagged(submissions),
}
current_context = super().get_context_data(**kwargs)
return {**current_context, **extra_context}
class ReviewerDashboardView(TemplateView): class ReviewerDashboardView(TemplateView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
......
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