Advertisement
MaximCherchuk

Untitled

Jul 16th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.55 KB | None | 0 0
  1. def custom_paginator(request, queryset):  
  2.     try:
  3.         page_size = int(request.GET.get('records', 10))
  4.     except ValueError:
  5.         page_size = 10
  6.  
  7.     paginator = Paginator(queryset, page_size)
  8.  
  9.     try:
  10.         page_number = int(request.GET.get('page', 1))
  11.     except ValueError:
  12.         page_number = 1
  13.  
  14.     try:
  15.         page = paginator.page(page_number)
  16.     except Exception:
  17.         page = None
  18.  
  19.     return page_size, page, page_number, paginator
  20.  
  21.  
  22. def process_order(sorting_order, queryset):
  23.     if not sorting_order:
  24.         return queryset
  25.  
  26.     method, order = sorting_order.split(':')
  27.     if method == 'name':
  28.         if order == 'ascending':
  29.             # return queryset.order_by('name')
  30.             return queryset.order_by('first_name', 'last_name')
  31.         else:
  32.             # return queryset.order_by('-name')
  33.             return queryset.order_by('-first_name', '-last_name')
  34.     if method == 'status':
  35.         if order == 'ascending':
  36.             return queryset.order_by('agency__activation_state')
  37.         else:
  38.             return queryset.order_by('-agency__activation_state')
  39.     elif method == 'title':
  40.         if order == 'ascending':
  41.             return queryset.order_by('agency__jobtitle')
  42.         else:
  43.             return queryset.order_by('-agency__jobtitle')
  44.  
  45.     return queryset
  46.  
  47.  
  48. def search_users_new(request):
  49.     query = request.GET.get('q', '')
  50.     search_filter = _build_search_filter(query)
  51.     users_queryset = (
  52.         users_impersonable(request)
  53.         .filter(search_filter)
  54.         .prefetch_related(
  55.             'agency',
  56.             'agency__employer',
  57.             'freelancer',
  58.             'freelancer__role',
  59.             'recruiter',
  60.             'network_hirer'
  61.         )
  62.     )
  63.  
  64.     sorting_order = request.GET.get('order')
  65.  
  66.     users_queryset = process_order(sorting_order, users_queryset)
  67.  
  68.     page_size, page, page_number, paginator = custom_paginator(request,
  69.                                                              users_queryset)
  70.  
  71.     template = 'backoffice/search_users_new.html'
  72.     if request.is_ajax():
  73.         template = 'backoffice/search_users_table.html'
  74.     return render(request, template, {
  75.         'users': users_queryset,
  76.         'paginator': paginator,
  77.         'page': page,
  78.         'page_number': page_number,
  79.         'query': query,
  80.         'redirect_field': get_redir_field(request),
  81.         'breadcrumbs': [
  82.             ('Backoffice', reverse('backoffice_index')),
  83.             ('Search', None)
  84.         ],
  85.         'page_size': page_size,
  86.     })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement