def index(self, page=None, place=None): records_query = Record.objects.all() if place is not None: records_query = records_query.filter(actors__place_id=place.id) url_builder = UrlBuilder(reverse('game:chronicle:'), arguments={'place': place.id if place else None}) index_filter = IndexFilter(url_builder=url_builder, values={'place': place.id if place else None}) records_count = records_query.count() if page is None: page = Paginator.get_page_numbers(records_count, chronicle_settings.RECORDS_ON_PAGE) if page == 0: page = 1 page = int(page) - 1 paginator = Paginator(page, records_count, chronicle_settings.RECORDS_ON_PAGE, url_builder, inverse=True) if paginator.wrong_page_number: return self.redirect(paginator.last_page_url, permanent=False) record_from, record_to = paginator.page_borders(page) records = [ RecordPrototype(record) for record in records_query.select_related().order_by('created_at', 'created_at_turn')[record_from:record_to]] records = list(reversed(records)) return self.template('chronicle/index.html', {'records': records, 'place': place, 'paginator': paginator, 'index_filter': index_filter, 'url_builder': url_builder} )
def get_post_url(self, post): thread_posts_ids = list( PostPrototype._db_filter( thread_id=post.thread_id).order_by('created_at').values_list( 'id', flat=True)) page = Paginator.get_page_numbers( thread_posts_ids.index(post.id) + 1, forum_settings.POSTS_ON_PAGE) return url('forum:threads:show', post.thread_id, page=page) + ('#m%d' % post.id)
def get_post_url(self, post): thread_posts_ids = list(PostPrototype._db_filter(thread_id=post.thread_id).order_by('created_at').values_list('id', flat=True)) page = Paginator.get_page_numbers(thread_posts_ids.index(post.id)+1, forum_settings.POSTS_ON_PAGE) return url('forum:threads:show', post.thread_id, page=page) + ('#m%d' % post.id)