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
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