def _build_tree_nodes(self): # Applications # The draft status is excluded from the officer status list url = reverse_lazy('wl_dashboard:tables_applications_officer') result = [] statuses = base.get_processing_statuses_but_draft() all_applications = Application.objects.filter(processing_status__in=[s[0] for s in statuses]) all_applications_node = self._create_node('All applications', href=url, count=all_applications.count()) all_applications_node['state']['expanded'] = False for s_value, s_title in statuses: applications = all_applications.filter(processing_status=s_value) if applications.count() > 0: query = { 'application_status': s_value, } href = base.build_url(url, query) node = self._create_node(s_title, href=href, count=applications.count()) self._add_node(all_applications_node, node) assigned_applications = all_applications.filter(assigned_officer=self.request.user) query = { 'application_assignee': self.request.user.pk } assigned_applications_node = self._create_node('My assigned applications', href=base.build_url(url, query), count=assigned_applications.count()) assigned_applications_node['state']['expanded'] = True for s_value, s_title in statuses: applications = assigned_applications.filter(processing_status=s_value) if applications.count() > 0: query.update({ 'application_status': s_value }) href = base.build_url(url, query) node = self._create_node(s_title, href=href, count=applications.count()) self._add_node(assigned_applications_node, node) result.append(assigned_applications_node) on_behalf_pending_applications_count = \ DataTableApplicationsOfficerOnBehalfView._get_proxy_applications(self.request.user).filter( DataTableApplicationsOfficerOnBehalfView.filter_status( TableApplicationsOfficerView.STATUS_PENDING)).count() on_behalf_overdue_returns_count = DataTableReturnsOfficerOnBehalfView._get_proxy_returns( self.request.user).filter( DataTableReturnsOfficerOnBehalfView.filter_status(TableReturnsOfficerView.OVERDUE_FILTER)).count() total_on_behalf = on_behalf_pending_applications_count + on_behalf_overdue_returns_count if total_on_behalf > 0: url = reverse_lazy('wl_dashboard:tables_officer_onbehalf') on_behalf_node = self._create_node('My proxy page', href=url, count=total_on_behalf) query = { 'show': 'applications', 'application_status': 'pending' } href = base.build_url(url, query) on_behalf_applications_node = self._create_node('Pending Applications', href=href, count=on_behalf_pending_applications_count) query = { 'show': 'returns', } href = base.build_url(url, query) on_behalf_returns_node = self._create_node('Overdue Returns', href=href, count=on_behalf_overdue_returns_count) self._add_node(on_behalf_node, on_behalf_applications_node) self._add_node(on_behalf_node, on_behalf_returns_node) on_behalf_node['state']['expanded'] = False result.append(on_behalf_node) result.append(all_applications_node) # Licences url = reverse_lazy('wl_dashboard:tables_licences_officer') all_licences_node = self._create_node('All licences', href=url, count=WildlifeLicence.objects.count()) result.append(all_licences_node) # Returns url = reverse_lazy('wl_dashboard:tables_returns_officer') all_returns_node = self._create_node('All returns', href=url, count=Return.objects.exclude(status__in=['draft', 'future']).count()) result.append(all_returns_node) return result
def _build_tree_nodes(self): # Applications # The draft status is excluded from the officer status list url = reverse_lazy('wl_dashboard:tables_applications_officer') result = [] statuses = base.get_processing_statuses_but_draft() all_applications = Application.objects.filter( processing_status__in=[s[0] for s in statuses]) # the next query param is necessary to avoid loading parameters from the session. query = {'show': 'applications'} all_applications_node = self._create_node( 'All applications', href=base.build_url(url, query), count=all_applications.count()) all_applications_node['state']['expanded'] = False for s_value, s_title in statuses: applications = all_applications.filter(processing_status=s_value) if applications.count() > 0: query = { 'application_status': s_value, } href = base.build_url(url, query) node = self._create_node(s_title, href=href, count=applications.count()) self._add_node(all_applications_node, node) assigned_applications = all_applications.filter( assigned_officer=self.request.user) query = {'application_assignee': self.request.user.pk} assigned_applications_node = self._create_node( 'My assigned applications', href=base.build_url(url, query), count=assigned_applications.count()) assigned_applications_node['state']['expanded'] = True for s_value, s_title in statuses: applications = assigned_applications.filter( processing_status=s_value) if applications.count() > 0: query.update({'application_status': s_value}) href = base.build_url(url, query) node = self._create_node(s_title, href=href, count=applications.count()) self._add_node(assigned_applications_node, node) result.append(assigned_applications_node) on_behalf_pending_applications_count = \ DataTableApplicationsOfficerOnBehalfView._get_proxy_applications(self.request.user).filter( DataTableApplicationsOfficerOnBehalfView.filter_status( TablesApplicationsOfficerView.STATUS_PENDING)).count() on_behalf_overdue_returns_count = DataTableReturnsOfficerOnBehalfView._get_proxy_returns( self.request.user).filter( DataTableReturnsOfficerOnBehalfView.filter_status( TablesReturnsOfficerView.OVERDUE_FILTER)).count() total_on_behalf = on_behalf_pending_applications_count + on_behalf_overdue_returns_count if total_on_behalf > 0: url = reverse_lazy('wl_dashboard:tables_officer_onbehalf') # to disable session data we pass a query parameter query = {'session': False} url = base.build_url(url, query) on_behalf_node = self._create_node('My proxy page', href=url, count=total_on_behalf) query = {'show': 'applications', 'application_status': 'pending'} href = base.build_url(url, query) on_behalf_applications_node = self._create_node( 'Pending Applications', href=href, count=on_behalf_pending_applications_count) query = { 'show': 'returns', } href = base.build_url(url, query) on_behalf_returns_node = self._create_node( 'Overdue Returns', href=href, count=on_behalf_overdue_returns_count) self._add_node(on_behalf_node, on_behalf_applications_node) self._add_node(on_behalf_node, on_behalf_returns_node) on_behalf_node['state']['expanded'] = False result.append(on_behalf_node) result.append(all_applications_node) # Licences url = reverse_lazy('wl_dashboard:tables_licences_officer') query = {'show': 'licences'} url = base.build_url(url, query) all_licences_node = self._create_node( 'All licences', href=url, count=WildlifeLicence.objects.count()) result.append(all_licences_node) # Returns url = reverse_lazy('wl_dashboard:tables_returns_officer') query = {'show': 'returns'} url = base.build_url(url, query) all_returns_node = self._create_node( 'All returns', href=url, count=Return.objects.exclude( status__in=['draft', 'future']).count()) result.append(all_returns_node) return result