def realty_list(request): template = 'realty_list.html' rows_on_page = int(request.GET.get('rows', '1')) search_form = SearchForm(data=request.GET) query = request.GET.copy() args_fields = {} kwargs_fields = {} for item in query.items(): if query.getlist(item[0]): if len(query.getlist(item[0])) < 2 : kwargs_fields[item[0]] = item[1] else: args_fields[item[0]] = query.getlist(item[0]) kwargs = dict([(item[0], item[1]) for item in kwargs_fields.items() if item[1] and item[0] in [field.name for field in Realty._meta.fields]]) realty_list = Realty.objects.filter(**kwargs) q = [] for k, v in args_fields.iteritems(): for id in range(len(v)): if v[id]: q.append( Q(**{'%s__id' % k : v[id]})) if q: q = reduce(operator.or_, q) realty_list = realty_list.filter(q) q = [] sort_by = 'date' inv = 1 if 'sort' in query.keys(): if 'sort' in request.session.keys() and request.session['sort'] == query['sort']: inv = -int(query['inv']) else: query['inv'] = 1 if inv > 0: realty_list = realty_list.order_by(query['sort']) else: realty_list = realty_list.order_by('-'+query['sort']) sort_by = query['sort'] query['inv'] = inv request.session['sort'] = query['sort'] del query['sort'] else: request.session['sort'] = 'date' query['inv'] = 1 realty_list = realty_list.order_by('date') object_list = get_paginator(request, realty_list, rows_on_page=rows_on_page) context = {'object_list' : object_list, 'query' : query.urlencode, 'inv' : inv, 'sort_by' : sort_by, 'search_form' : search_form, } return render(request, template, context)
def order_list(request): from website.forms import OrderListFilterForm form = OrderListFilterForm(request.GET or None) if is_auth_manager(request.user): del(form.fields['office']) del(form.fields['staff']) query = Q() if request.GET.get('order', False): query = query & Q(pk=request.GET['order']) else: if request.GET.get('tourist', False): query = query & Q(tourist__icontains=request.GET['tourist']) if request.GET.get('country', False): query = query & Q(country__id=request.GET['country']) if request.GET.get('office', False): query = query & Q(staff__office__id=request.GET['office']) if request.GET.get('staff', False): query = query & Q(staff__id=request.GET['staff']) if request.GET.get('dt1', False): dt = datetime.datetime.strptime(request.GET['dt1'], '%d.%m.%Y').date() query = query & Q(dt_in__gte=dt) else: query = query & Q(dt_in__gte=datetime.date.today()) if request.GET.get('dt2', False): dt = datetime.datetime.strptime(request.GET['dt2'], '%d.%m.%Y').date() query = query & Q(dt_in__lte=dt) if is_auth_manager(request.user): # Фильтрация по менеджеру if request.GET.get('forders', False): query = query & Q(staff__office=request.account.office) else: query = query & Q(staff=request.account) queryset = Order.objects.filter(query) object_list = get_paginator(request, queryset, rows_on_page=30) return render(request, 'order_list.html', {'object_list': object_list, 'form': form})