コード例 #1
0
def new_filtering(request):
    query_result = new_query(request)
    qset = query_result[0]
    GET = query_result[2]
    
    o = GET.get('o', None)
    if not o:
        GET['o'] = '-new_date_add'
        o = GET.get('o')
        
    f = NewFilter(GET, queryset=qset)
    per_page = UserConfig.getPerPage(request, GET)
    paginator = Paginator(f.qs, per_page)
    
    page = GET.get('page', None)
    if page is not None:
        page = int(page)
    else:
        page = 1
    try:
        p = paginator.page(page)
    except PageNotAnInteger:
        p = paginator.page(1)
    except EmptyPage:
        p = paginator.page(paginator.num_pages)
         
    response_dict = dict()
    response_dict['filter'] = f
    response_dict['curr_page'] = p
    response_dict['per_page'] = per_page
    response_dict['o'] = o
    response_dict['per_page_choices'] = UserConfig.perPageChoices()
    response_dict['pagination_prefix'] = ExtendedPaginator.construct_filter_string(f.data)
    
    return response_dict, page
コード例 #2
0
def event_filtering(request, day_str=None):
    query_result = event_query(request)
    qset = query_result[0]
    filter_args = query_result[1]
    GET = query_result[2]

    o = GET.get('o', None)
    if not o:
        GET['o'] = 'event_date_from,event_time_from'
        o = GET.get('o')

    curr_day = timezone.now().date()
    if day_str is not None:
        curr_day = datetime.strptime(day_str, '%Y-%m-%d')

    f = EventFilter(GET, queryset=qset)
    per_page = UserConfig.getPerPage(request, GET)
    paginator = Paginator(f.qs, per_page)
    totalNoItems = f.qs.count()

    page = GET.get('page', None)

    # calculate position of actual date page
    qdict = dict()
    qdict['event_date_from__gte'] = curr_day
    f2 = EventFilter(GET, queryset=qset.filter(*filter_args, **qdict))
    totalNoNewItems = f2.qs.count()
    diff = totalNoItems - totalNoNewItems
    position = diff % int(per_page)
    curr_date_page = diff // int(per_page) + 1

    # #if day then page was called from calendar
    if day_str:
        page = curr_date_page
        position = -1

    if page is None:
        page = curr_date_page
    else:
        page = int(page)
        # if selected page is different than curr_date_page, there is no event to mark as "is_closest"
        if page != curr_date_page:
            position = -1

    try:
        p = paginator.page(page)
    except PageNotAnInteger:
        p = paginator.page(1)
    except EmptyPage:
        p = paginator.page(paginator.num_pages)

    mark_closest_event(p, position)

    response_dict = dict()
    response_dict['filter'] = f
    response_dict['curr_page'] = p
    response_dict['o'] = o
    response_dict['per_page'] = per_page
    response_dict['number_of_pages'] = paginator.num_pages
    response_dict['position'] = position
    response_dict['per_page_choices'] = UserConfig.perPageChoices()
    response_dict[
        'pagination_prefix'] = ExtendedPaginator.construct_filter_string(
            f.data)

    return response_dict, page