Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db.models import
- from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
- class MasterPatientList(LoginRequiredMixin, RequireCompletedProfileMixin, ListView):
- model = Patient
- template_name = 'profile/master_patient_list.html'
- paginate_by = RESULTS_PER_PAGE
- def get_queryset(self):
- user = self.request.user
- clinic = get_object_or_404(Clinic, user=user)
- #Need to default to last name field because .order_by() does not accept blanks
- self.order_var = self.request.GET.get('order_var', 'user__last_name')
- self.include_inactive = True if self.request.GET.get('include_inactive', 'False') == 'True' else False
- self.query = self.request.GET.get('q', '')
- self.reverse = True if self.request.GET.get('reverse', 'False') == 'True' else False
- # Base query
- queryset = Patient.objects.filter(therapist__clinic=clinic)
- # Search by first and/or last name
- if self.query != '':
- for term in self.query.split():
- queryset = queryset.filter(Q(user__first_name__icontains = term) | Q(user__last_name__icontains = term))
- # Include/exclude patients with no ongoing assessments
- if self.query == '' and not self.include_inactive:
- queryset = queryset.filter(has_ongoing_assessments=True)
- # Reverse the set
- if self.reverse:
- self.order_var = '-'+self.order_var
- else:
- self.order_var = self.order_var.replace('-','')
- # Ordering
- queryset = queryset.order_by(self.order_var)
- # Return result
- return queryset
- def get_context_data(self, **kwargs):
- context = super(MasterPatientList, self).get_context_data(**kwargs)
- context['order_var'] = self.order_var
- context['include_inactive'] = self.include_inactive
- context['q'] = self.query
- context['reverse'] = self.reverse
- return context
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement