Beispiel #1
0
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)
Beispiel #2
0
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})