def applications_filters(self): status_filter_values = \ [('all', 'All')] + [(self.STATUS_PENDING, self.STATUS_PENDING.capitalize())] + \ base.get_processing_statuses_but_draft() assignee_filter_values = [('all', 'All')] + [(user.pk, base.render_user_name(user),) for user in get_all_officers()] return { 'licence_type': self.get_licence_types_values(), 'status': status_filter_values, 'assignee': assignee_filter_values }
def applications_filters(self): status_filter_values = \ [('all', 'All')] + [(self.STATUS_PENDING, self.STATUS_PENDING.capitalize())] + \ base.get_processing_statuses_but_draft() assignee_filter_values = [('all', 'All')] + [( user.pk, base.render_user_name(user), ) for user in get_all_officers()] return { 'licence_type': self.get_licence_types_values(), 'status': status_filter_values, 'assignee': assignee_filter_values }
def _build_data(self): data = super(TableApplicationsOfficerView, self)._build_data() data['applications']['columnDefinitions'] = [ { 'title': 'Lodge Number' }, { 'title': 'Licence Type' }, { 'title': 'User' }, { 'title': 'Status', }, { 'title': 'Lodged on' }, { 'title': 'Assignee' }, { 'title': 'Proxy' }, { 'title': 'Payment', 'searchable': False, 'orderable': False }, { 'title': 'Action', 'searchable': False, 'orderable': False } ] data['applications']['filters']['status']['values'] = \ [('all', 'All')] + [(self.STATUS_PENDING, self.STATUS_PENDING.capitalize())] + \ base.get_processing_statuses_but_draft() data['applications']['filters']['assignee'] = { 'values': [('all', 'All')] + [(user.pk, base.render_user_name(user),) for user in get_all_officers()] } data['applications']['ajax']['url'] = reverse('wl_dashboard:data_application_officer') # global table options data['applications']['tableOptions'] = { 'pageLength': 25 } return data
def _build_data(self): data = super(TableApplicationsOfficerView, self)._build_data() data['applications']['columnDefinitions'] = [{ 'title': 'Lodge Number' }, { 'title': 'Licence Type' }, { 'title': 'User' }, { 'title': 'Status', }, { 'title': 'Lodged on' }, { 'title': 'Assignee' }, { 'title': 'Proxy' }, { 'title': 'Payment', 'searchable': False, 'orderable': False }, { 'title': 'Action', 'searchable': False, 'orderable': False }] data['applications']['filters']['status']['values'] = \ [('all', 'All')] + [(self.STATUS_PENDING, self.STATUS_PENDING.capitalize())] + \ base.get_processing_statuses_but_draft() data['applications']['filters']['assignee'] = { 'values': [('all', 'All')] + [( user.pk, base.render_user_name(user), ) for user in get_all_officers()] } data['applications']['ajax']['url'] = reverse( 'wl_dashboard:data_application_officer') # global table options data['applications']['tableOptions'] = {'pageLength': 25} return data
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