def game_page(context): battle = Battle1x1Prototype.get_by_account_id(context.account.id) if battle and battle.state.is_PROCESSING: return dext_views.Redirect(url('game:pvp:')) clan = None if context.account.clan_id is not None: clan = ClanPrototype.get_by_id(context.account.clan_id) cards = sorted(CARD.records, key=lambda r: (r.rarity.value, r.text)) return dext_views.Page('game/game_page.html', content={ 'map_settings': map_settings, 'game_settings': game_settings, 'EQUIPMENT_SLOT': EQUIPMENT_SLOT, 'current_map_version': map_info_storage.version, 'clan': clan, 'CARDS': cards, 'resource': context.resource, 'hero': context.account_hero, 'ABILITY_TYPE': ABILITY_TYPE })
def preprocess(self, context): if context.account.is_authenticated(): return if context.django_request.is_ajax(): raise dext_exceptions.ViewError(code='common.login_required', message=u'У Вас нет прав для проведения данной операции') return dext_views.Redirect(target_url=self.login_page_url(context.django_request.get_full_path()))
def conversation(context): contacts_ids = tt_api.get_contacts(context.account.id) messages_count, messages = tt_api.get_conversation(context.account.id, context.contact.id, text=context.filter, offset=context.page*conf.settings.MESSAGES_ON_PAGE, limit=conf.settings.MESSAGES_ON_PAGE) class Filter(list_filter.ListFilter): ELEMENTS = [list_filter.reset_element(), list_filter.filter_element('поиск:', attribute='filter', default_value=None), list_filter.static_element('количество:', attribute='count', default_value=0) ] url_builder = UrlBuilder(url('accounts:messages:conversation'), arguments={'page': context.page, 'contact': context.contact.id, 'filter': context.filter}) index_filter = Filter(url_builder=url_builder, values={'contact': context.contact.id, 'filter': context.filter, 'count': messages_count}) paginator = Paginator(context.page, messages_count, conf.settings.MESSAGES_ON_PAGE, url_builder) if paginator.wrong_page_number: return dext_views.Redirect(paginator.last_page_url, permanent=False) accounts_ids = set(contacts_ids) for message in messages: accounts_ids.add(message.sender_id) accounts_ids.update(message.recipients_ids) accounts = {account.id: account for account in accounts_prototypes.AccountPrototype.get_list_by_id(list(accounts_ids))} contacts = [accounts[contact_id] for contact_id in contacts_ids] contacts.sort(key=lambda account: account.nick_verbose) return dext_views.Page('personal_messages/index.html', content= {'messages': messages, 'paginator': paginator, 'page': 'contacts', 'contacts': contacts, 'accounts': accounts, 'master_account': context.account, 'index_filter': index_filter, 'contact': context.contact, 'resource': context.resource})
def render_index(context, lots_query, page_mode, base_url): if context.filter is not None: lots_query = lots_query.filter(name__icontains=context.filter) if context.goods_group is not None: lots_query = lots_query.filter(type=context.goods_group.type.uid, group_id=context.goods_group.id) lots_query = lots_query.order_by(context.order_by.db_order) lots_count = lots_query.count() url_builder = UrlBuilder( base_url, arguments={ 'filter': context.filter, 'order_by': context.order_by.value, 'group': context.goods_group.uid if context.goods_group else None }) index_filter = LotsIndexFilter( url_builder=url_builder, values={ 'filter': context.filter, 'order_by': context.order_by.value, 'count': lots_count, 'group': context.goods_group.uid if context.goods_group else None }) paginator = pagination.Paginator(context.page, lots_count, conf.settings.LOTS_ON_PAGE, url_builder) if paginator.wrong_page_number: return dext_views.Redirect(paginator.last_page_url) lots_from, lots_to = paginator.page_borders(context.page) lots = logic.load_lots_from_query(lots_query[lots_from:lots_to]) return dext_views.Page('market/index.html', content={ 'context': context, 'index_filter': index_filter, 'paginator': paginator, 'lots': lots, 'page_type': page_mode.page, 'resource': context.resource })
def index(context): accounts_query = AccountPrototype.live_query() if context.prefix: accounts_query = accounts_query.filter( nick__istartswith=context.prefix) accounts_count = accounts_query.count() url_builder = UrlBuilder(reverse('accounts:'), arguments={ 'page': context.page, 'prefix': context.prefix }) paginator = Paginator(context.page, accounts_count, conf.accounts_settings.ACCOUNTS_ON_PAGE, url_builder) if paginator.wrong_page_number: return dext_views.Redirect(paginator.last_page_url, permanent=False) account_from, account_to = paginator.page_borders(context.page) accounts_models = accounts_query.select_related().order_by( 'nick')[account_from:account_to] accounts = [AccountPrototype(model) for model in accounts_models] accounts_ids = [model.id for model in accounts_models] clans_ids = [model.clan_id for model in accounts_models] heroes = dict( (model.account_id, heroes_logic.load_hero(hero_model=model)) for model in Hero.objects.filter(account_id__in=accounts_ids)) clans = {clan.id: clan for clan in ClanPrototype.get_list_by_id(clans_ids)} return dext_views.Page('accounts/index.html', content={ 'heroes': heroes, 'prefix': context.prefix, 'accounts': accounts, 'clans': clans, 'resource': context.resource, 'current_page_number': context.page, 'paginator': paginator })
def index(context): context.account.reset_new_messages_number() query = models.Message.objects.filter(recipient_id=context.account.id, hide_from_recipient=False) senders_ids = list(set(query.values_list('sender_id', flat=True).order_by('sender').distinct())) senders = sorted(accounts_prototypes.AccountPrototype.get_list_by_id(senders_ids), key=lambda account: account.nick) if context.sender is not None: query = query.filter(sender_id=context.sender.id) if context.filter is not None: query = query.filter(text__icontains=context.filter) class Filter(list_filter.ListFilter): ELEMENTS = [list_filter.reset_element(), list_filter.filter_element('поиск:', attribute='filter', default_value=None), list_filter.choice_element('отправитель:', attribute='sender', choices=[(None, 'все')] + [(account.id, account.nick) for account in senders] ), list_filter.static_element('количество:', attribute='count', default_value=0) ] url_builder = UrlBuilder(url('accounts:messages:'), arguments={'page': context.page, 'sender': context.sender.id if context.sender is not None else None, 'filter': context.filter}) messages_count = query.count() index_filter = Filter(url_builder=url_builder, values={'sender': context.sender.id if context.sender is not None else None, 'filter': context.filter, 'count': messages_count}) # page = int(context.page) - 1 paginator = Paginator(context.page, messages_count, conf.settings.MESSAGES_ON_PAGE, url_builder) if paginator.wrong_page_number: return dext_views.Redirect(paginator.last_page_url, permanent=False) message_from, message_to = paginator.page_borders(context.page) messages = [ prototypes.MessagePrototype(message_model) for message_model in query.order_by('-created_at')[message_from:message_to]] return dext_views.Page('personal_messages/index.html', content= {'messages': messages, 'paginator': paginator, 'incoming': True, 'index_filter': index_filter, 'resource': context.resource})
def index(context): url_builder = UrlBuilder(url('news:'), arguments={'page': context.page}) news_count = models.News.objects.all().count() paginator = Paginator(context.page, news_count, conf.settings.NEWS_ON_PAGE, url_builder) if paginator.wrong_page_number: return dext_views.Redirect(paginator.last_page_url) news_from, news_to = paginator.page_borders(context.page) news = logic.load_news_from_query( models.News.objects.all().order_by('-created_at')[news_from:news_to]) return dext_views.Page('news/index.html', content={ 'news': news, 'paginator': paginator, 'resource': context.resource })
def index(context): if context.account.is_premium: return dext_views.Redirect(target_url=url('market:')) return dext_views.Redirect(target_url=url('shop:shop'))