Advertisement
Guest User

views

a guest
Sep 28th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. from django.db.models import
  2. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  3.  
  4. class MasterPatientList(LoginRequiredMixin, RequireCompletedProfileMixin, ListView):
  5.     model = Patient
  6.     template_name = 'profile/master_patient_list.html'
  7.     paginate_by = RESULTS_PER_PAGE
  8.    
  9.     def get_queryset(self):
  10.         user = self.request.user
  11.         clinic = get_object_or_404(Clinic, user=user)
  12.  
  13.         #Need to default to last name field because .order_by() does not accept blanks
  14.         self.order_var = self.request.GET.get('order_var', 'user__last_name')
  15.         self.include_inactive = True if self.request.GET.get('include_inactive', 'False') == 'True' else False
  16.         self.query = self.request.GET.get('q', '')
  17.         self.reverse = True if self.request.GET.get('reverse', 'False') == 'True' else False
  18.  
  19.         # Base query
  20.         queryset = Patient.objects.filter(therapist__clinic=clinic)
  21.  
  22.         # Search by first and/or last name
  23.         if self.query != '':
  24.             for term in self.query.split():
  25.                 queryset = queryset.filter(Q(user__first_name__icontains = term) | Q(user__last_name__icontains = term))
  26.  
  27.         # Include/exclude patients with no ongoing assessments
  28.         if self.query == '' and not self.include_inactive:
  29.             queryset = queryset.filter(has_ongoing_assessments=True)
  30.  
  31.         # Reverse the set
  32.         if self.reverse:
  33.             self.order_var = '-'+self.order_var
  34.         else:
  35.             self.order_var = self.order_var.replace('-','')
  36.  
  37.         # Ordering
  38.         queryset = queryset.order_by(self.order_var)
  39.  
  40.         # Return result
  41.         return queryset
  42.  
  43.     def get_context_data(self, **kwargs):
  44.         context = super(MasterPatientList, self).get_context_data(**kwargs)
  45.         context['order_var'] = self.order_var
  46.         context['include_inactive'] = self.include_inactive
  47.         context['q'] = self.query
  48.         context['reverse'] = self.reverse
  49.         return context
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement