Exemple #1
0
def ajaxeditcard(request, ownedcard):
    context = globalContext(request)
    if not request.user.is_authenticated() or request.user.is_anonymous():
        raise PermissionDenied()
    try:
        owned_card = models.OwnedCard.objects.get(
            pk=int(ownedcard), owner_account__in=context['accounts'])
    except ObjectDoesNotExist:
        raise PermissionDenied()
    if request.method == 'GET':
        form = forms.getOwnedCardForm(forms.OwnedCardForm(instance=owned_card),
                                      context['accounts'],
                                      owned_card=owned_card)
    elif request.method == 'POST':
        (was_idolized, was_max_leveled,
         was_max_bonded) = (owned_card.idolized, owned_card.max_level,
                            owned_card.max_bond)
        form = forms.getOwnedCardForm(forms.OwnedCardForm(request.POST,
                                                          instance=owned_card),
                                      context['accounts'],
                                      owned_card=owned_card)
        if form.is_valid():
            ownedcard = form.save(commit=False)
            if form.cleaned_data[
                    'stored'] == 'Box' and 'expires_in' in request.POST:
                try:
                    expires_in = int(request.POST['expires_in'])
                except (TypeError, ValueError):
                    expires_in = 0
                if expires_in < 0: expires_in = 0
                if expires_in:
                    ownedcard.expiration = datetime.date.today(
                    ) + relativedelta(days=expires_in)
            ownedcard.owner_account = owned_card.owner_account  # owner & card change not allowed
            ownedcard.card = owned_card.card
            ownedcard.save()
            context['owned'] = ownedcard
            if not was_idolized and ownedcard.idolized:
                pushActivity(ownedcard.owner_account,
                             "Idolized a card",
                             ownedcard=ownedcard)
            if not was_max_leveled and ownedcard.max_level:
                pushActivity(ownedcard.owner_account,
                             "Max Leveled a card",
                             ownedcard=ownedcard)
            if not was_max_bonded and ownedcard.max_bond:
                pushActivity(ownedcard.owner_account,
                             "Max Bonded a card",
                             ownedcard=ownedcard)
            return render(request, 'ownedCardOnBottomCard.html', context)
    else:
        raise PermissionDenied()
    if owned_card.expiration:
        owned_card.expires_in = (owned_card.expiration - timezone.now()).days
    context['addcard_form'] = form
    context['edit'] = owned_card
    return render(request, 'addCardForm.html', context)
def ajaxaddcard(request):
    context = globalContext(request)
    if request.method != 'POST' or not request.user.is_authenticated() or request.user.is_anonymous():
        raise PermissionDenied()
    form = forms.getOwnedCardForm(forms.OwnedCardForm(request.POST), context['accounts'])
    if form.is_valid():
        ownedcard = form.save(commit=False)
        if not ownedcard.card.skill:
            ownedcard.skill = 1
        if not findAccount(ownedcard.owner_account.id, context['accounts']):
            raise PermissionDenied()
        if request.user.is_staff and 'owner_account_id' in request.POST:
            ownedcard.owner_account = models.Account.objects.get(pk=request.POST['owner_account_id'])
        if form.cleaned_data['stored'] == 'Box' and 'expires_in' in request.POST:
            try: expires_in = int(request.POST['expires_in'])
            except (TypeError, ValueError): expires_in = 0
            if expires_in < 0: expires_in = 0
            if expires_in:
                ownedcard.expiration = datetime.date.today() + relativedelta(days=expires_in)
        ownedcard.save()
        context['owned'] = ownedcard
        pushActivity(account=ownedcard.owner_account,
                     message="Added a card",
                     ownedcard=ownedcard)
        return render(request, 'ownedCardOnBottomCard.html', context)
    context['addcard_form'] = form
    return render(request, 'addCardForm.html', context)
Exemple #3
0
def ajaxaddcard(request):
    context = globalContext(request)
    if request.method != 'POST' or not request.user.is_authenticated(
    ) or request.user.is_anonymous():
        raise PermissionDenied()
    form = forms.getOwnedCardForm(forms.OwnedCardForm(request.POST),
                                  context['accounts'])
    if form.is_valid():
        ownedcard = form.save(commit=False)
        if not ownedcard.card.skill:
            ownedcard.skill = 1
        if not findAccount(ownedcard.owner_account.id, context['accounts']):
            raise PermissionDenied()
        if form.cleaned_data[
                'stored'] == 'Box' and 'expires_in' in request.POST:
            try:
                expires_in = int(request.POST['expires_in'])
            except (TypeError, ValueError):
                expires_in = 0
            if expires_in < 0: expires_in = 0
            if expires_in:
                ownedcard.expiration = datetime.date.today() + relativedelta(
                    days=expires_in)
        ownedcard.save()
        context['owned'] = ownedcard
        pushActivity(account=ownedcard.owner_account,
                     message="Added a card",
                     ownedcard=ownedcard)
        return render(request, 'ownedCardOnBottomCard.html', context)
    context['addcard_form'] = form
    return render(request, 'addCardForm.html', context)
def ajaxeditcard(request, ownedcard):
    context = globalContext(request)
    if not request.user.is_authenticated() or request.user.is_anonymous():
        raise PermissionDenied()
    try:
        owned_card = models.OwnedCard.objects.get(pk=int(ownedcard), owner_account__in=context['accounts'])
    except ObjectDoesNotExist:
        raise PermissionDenied()
    if request.method == 'GET':
        form = forms.getOwnedCardForm(forms.OwnedCardForm(instance=owned_card), context['accounts'], owned_card=owned_card)
    elif request.method == 'POST':
        (was_idolized, was_max_leveled, was_max_bonded) = (owned_card.idolized, owned_card.max_level, owned_card.max_bond)
        form = forms.getOwnedCardForm(forms.OwnedCardForm(request.POST, instance=owned_card), context['accounts'], owned_card=owned_card)
        if form.is_valid():
            ownedcard = form.save(commit=False)
            if form.cleaned_data['stored'] == 'Box' and 'expires_in' in request.POST:
                try: expires_in = int(request.POST['expires_in'])
                except (TypeError, ValueError): expires_in = 0
                if expires_in < 0: expires_in = 0
                if expires_in:
                    ownedcard.expiration = datetime.date.today() + relativedelta(days=expires_in)
            ownedcard.owner_account = owned_card.owner_account # owner & card change not allowed
            ownedcard.card = owned_card.card
            ownedcard.save()
            context['owned'] = ownedcard
            if not was_idolized and ownedcard.idolized:
                pushActivity(ownedcard.owner_account, "Idolized a card", ownedcard=ownedcard)
            if not was_max_leveled and ownedcard.max_level:
                pushActivity(ownedcard.owner_account, "Max Leveled a card", ownedcard=ownedcard)
            if not was_max_bonded and ownedcard.max_bond:
                pushActivity(ownedcard.owner_account, "Max Bonded a card", ownedcard=ownedcard)
            return render(request, 'ownedCardOnBottomCard.html', context)
    else:
        raise PermissionDenied()
    if owned_card.expiration:
         owned_card.expires_in = (owned_card.expiration - timezone.now()).days
    context['addcard_form'] = form
    context['edit'] = owned_card
    return render(request, 'addCardForm.html', context)
def cards(request, card=None, ajax=False):

    page = 0
    context = globalContext(request)
    context['total_results'] = 0

    f = open('cardsinfo.json', 'r')
    cardsinfo = json.load(f)
    f.close()
    max_stats = cardsinfo['max_stats']

    # Set defaults
    request_get = {
        'ordering': 'id',
        'reverse_order': True,
    }

    if card is None:
        # Apply filters
        cards = models.Card.objects.filter()
        if 'search' in request.GET:
            request_get['search'] = request.GET['search']
            if request.GET['search']:
                cards = cards.filter(Q(name__contains=request.GET['search'])
                                     | Q(idol__japanese_name__contains=request.GET['search'])
                                     | Q(skill__contains=request.GET['search'])
                                     | Q(japanese_skill__contains=request.GET['search'])
                                     | Q(skill_details__contains=request.GET['search'])
                                     | Q(japanese_skill_details__contains=request.GET['search'])
                                     | Q(center_skill__contains=request.GET['search'])
                                     | Q(japanese_center_skill__contains=request.GET['search'])
                                     | Q(japanese_center_skill_details__contains=request.GET['search'])
                                     | Q(japanese_collection__contains=request.GET['search'])
                                     | Q(promo_item__contains=request.GET['search'])
                                     | Q(event__english_name__contains=request.GET['search'])
                                     | Q(event__japanese_name__contains=request.GET['search'])
                )
        if 'name' in request.GET and request.GET['name']:
            cards = cards.filter(name__exact=request.GET['name'])
            request_get['name'] = request.GET['name']
        if 'collection' in request.GET and request.GET['collection']:
            cards = cards.filter(japanese_collection__exact=request.GET['collection'])
            request_get['collection'] = request.GET['collection']
        if 'rarity' in request.GET and request.GET['rarity']:
            cards = cards.filter(rarity__exact=request.GET['rarity'])
            request_get['rarity'] = request.GET['rarity']
        if 'attribute' in request.GET and request.GET['attribute']:
            cards = cards.filter(attribute__exact=request.GET['attribute'])
            request_get['attribute'] = request.GET['attribute']
        if 'skill' in request.GET and request.GET['skill']:
            cards = cards.filter(skill__exact=request.GET['skill'])
            request_get['skill'] = request.GET['skill']
        if 'is_promo' in request.GET and request.GET['is_promo']:
            cards = cards.filter(is_promo__exact=True)
            request_get['is_promo'] = request.GET['is_promo']
        if 'is_special' in request.GET and request.GET['is_special']:
            cards = cards.filter(is_special__exact=True)
            request_get['is_special'] = request.GET['is_special']
        if 'is_event' in request.GET and request.GET['is_event']:
            cards = cards.filter(event__isnull=False)
            request_get['is_event'] = request.GET['is_event']
        if 'account' in request.GET and request.GET['account'] and request.user.is_authenticated() and not request.user.is_anonymous():
            account = findAccount(request.GET['account'], context['accounts'], forceGetAccount=request.user.is_staff)
            if account:
                request_get['account'] = account.id
                if 'max_level' in request.GET and request.GET['max_level'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.filter(owner_account=account, max_level=True).values('card'))
                    request_get['max_level'] = '1'
                elif 'max_level' in request.GET and request.GET['max_level'] == '-1':
                    cards = cards.exclude(id__in=models.OwnedCard.objects.filter(owner_account=account, max_level=True).values('card'))
                    request_get['max_level'] = '-1'
                if 'max_bond' in request.GET and request.GET['max_bond'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.filter(owner_account=account, max_bond=True).values('card'))
                    request_get['max_bond'] = '1'
                elif 'max_bond' in request.GET and request.GET['max_bond'] == '-1':
                    cards = cards.exclude(id__in=models.OwnedCard.objects.filter(owner_account=account, max_bond=True).values('card'))
                    request_get['max_bond'] = '-1'
                if 'idolized' in request.GET and request.GET['idolized'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.filter(owner_account=account, idolized=True).values('card'))
                    request_get['idolized'] = '1'
                elif 'idolized' in request.GET and request.GET['idolized'] == '-1':
                    cards = cards.exclude(id__in=models.OwnedCard.objects.filter(owner_account=account, idolized=True).values('card'))
                    request_get['idolized'] = '-1'

                if 'stored' in request.GET and request.GET['stored']:
                    if request.GET['stored'] == 'Album':
                        cards = cards.filter(ownedcards__owner_account=account).filter(Q(ownedcards__stored='Deck') | Q(ownedcards__stored='Album'))
                    else:
                        cards = cards.filter(ownedcards__owner_account=account, ownedcards__stored=request.GET['stored'])
                    cards = cards.distinct()
                    request_get['stored'] = request.GET['stored']

        if ('accounts' in context and not hasJP(context['accounts'])
            and 'search' not in request.GET or 'is_world' in request.GET and request.GET['is_world']):
            cards = cards.filter(Q(release_date__isnull=True) | Q(id=584) | Q(release_date__lte=(datetime.date.today() - relativedelta(years=1) + relativedelta(days=2)))).filter(Q(is_promo__exact=False) | Q(is_promo__exact=True, id__in=[65, 204, 207, 216, 584, 226, 227, 228, 229, 230, 231, 232, 233, 234, 370])).exclude(is_special__exact=True, id__gte=379)
            request_get['is_world'] = True

        if 'ordering' in request.GET and request.GET['ordering']:
            request_get['ordering'] = request.GET['ordering']
            request_get['reverse_order'] = 'reverse_order' in request.GET and request.GET['reverse_order']
        prefix = '-' if request_get['reverse_order'] else ''
        cards = cards.order_by(prefix + request_get['ordering'], prefix +'id')

        context['total_results'] = cards.count()
        # Set limit
        page_size = 9
        if 'page' in request.GET and request.GET['page']:
            page = int(request.GET['page']) - 1
            if page < 0:
                page = 0
        cards = cards.select_related('event', 'idol')[(page * page_size):((page * page_size) + page_size)]
        context['total_pages'] = int(math.ceil(context['total_results'] / page_size))
    else:
        context['total_results'] = 1
        cards = [get_object_or_404(models.Card, id=int(card))]
        context['single'] = cards[0]

    # Get statistics & other information to show in cards
    for card in cards:
        card.japan_only = card.is_japan_only()
        if card.video_story:
            card.embed_video = card.video_story.replace('/watch?v=', '/embed/')
        if card.japanese_video_story:
            card.embed_japanese_video = card.japanese_video_story.replace('/watch?v=', '/embed/')
        card.percent_stats = {
            'minimum': {
                'Smile': ((card.minimum_statistics_smile if card.minimum_statistics_smile else 0) / max_stats['Smile']) * 100,
                'Pure': ((card.minimum_statistics_pure if card.minimum_statistics_pure else 0) / max_stats['Pure']) * 100,
                'Cool': ((card.minimum_statistics_cool if card.minimum_statistics_cool else 0) / max_stats['Cool']) * 100,
            }, 'non_idolized_maximum': {
                'Smile': ((card.non_idolized_maximum_statistics_smile if card.non_idolized_maximum_statistics_smile else 0) / max_stats['Smile']) * 100,
                'Pure': ((card.non_idolized_maximum_statistics_pure if card.non_idolized_maximum_statistics_pure else 0) / max_stats['Pure']) * 100,
                'Cool': ((card.non_idolized_maximum_statistics_cool if card.non_idolized_maximum_statistics_cool else 0) / max_stats['Cool']) * 100,
            }, 'idolized_maximum': {
                'Smile': ((card.idolized_maximum_statistics_smile if card.idolized_maximum_statistics_smile else 0) / max_stats['Smile']) * 100,
                'Pure': ((card.idolized_maximum_statistics_pure if card.idolized_maximum_statistics_pure else 0) / max_stats['Pure']) * 100,
                'Cool': ((card.idolized_maximum_statistics_cool if card.idolized_maximum_statistics_cool else 0) / max_stats['Cool']) * 100,
            }
        }
        if request.user.is_authenticated() and not request.user.is_anonymous():
            card.owned_cards = card.ownedcards.filter(owner_account__owner=request.user).order_by('owner_account__language')
        else:
            card.owned_cards = []

    if not ajax:
       # Get filters info for the form
        context['filters'] = {
            'idols': cardsinfo['idols'],
            'collections': cardsinfo['collections'],
            'skills': cardsinfo['skills'],
            'rarity_choices': models.RARITY_CHOICES,
            'attribute_choices': models.ATTRIBUTE_CHOICES,
            'stored_choices': models.STORED_CHOICES,
            'ordering_choices': (
                ('id', _('Card #ID')),
                ('release_date', _('Release date')),
                ('name', _('Idol')),
                ('idolized_maximum_statistics_smile', _('Smile\'s statistics')),
                ('idolized_maximum_statistics_pure', _('Pure\'s statistics')),
                ('idolized_maximum_statistics_cool', _('Cool\'s statistics')),
                ('hp', _('HP'))
            )
        }

    context['total_cards'] = len(cards)
    if context['total_cards'] > 0:
        context['idol'] = cards[0].idol
    context['cards'] = enumerate(cards)
    context['max_stats'] = max_stats
    context['show_filter_button'] = False if 'single' in context and context['single'] else True
    context['request_get'] = request_get
    context['show_filter_bar'] = context['show_filter_button']
    context['show_total_results'] = 'search' in request_get
    if 'search' not in request_get and 'name' in request_get:
        context['show_filter_bar'] = False
    context['current'] = 'cards'
    if request.user.is_authenticated() and not request.user.is_anonymous():
        context['addcard_form'] = forms.getOwnedCardForm(forms.OwnedCardForm(), context['accounts'])
        if request.user.is_staff and 'staff' in request.GET:
            context['addcard_form'].fields['owner_account_id'] = forms.forms.CharField()
    context['page'] = page + 1
    context['ajax'] = ajax
    if ajax:
        return render(request, 'cardsPage.html', context)
    return render(request, 'cards.html', context)
Exemple #6
0
def cards(request, card=None, ajax=False):

    page = 0
    context = globalContext(request)
    context['total_results'] = 0

    f = open('cardsinfo.json', 'r')
    cardsinfo = json.load(f)
    f.close()
    max_stats = cardsinfo['max_stats']

    # Set defaults
    request_get = {
        'ordering': 'id',
        'reverse_order': True,
    }

    if card is None:
        # Apply filters
        cards = models.Card.objects.filter()
        if 'search' in request.GET:
            request_get['search'] = request.GET['search']
            if request.GET['search']:
                cards = cards.filter(
                    Q(name__contains=request.GET['search'])
                    | Q(idol__japanese_name__contains=request.GET['search'])
                    | Q(skill__contains=request.GET['search'])
                    | Q(japanese_skill__contains=request.GET['search'])
                    | Q(skill_details__contains=request.GET['search'])
                    | Q(japanese_skill_details__contains=request.GET['search'])
                    | Q(center_skill__contains=request.GET['search'])
                    | Q(japanese_center_skill__contains=request.GET['search'])
                    | Q(japanese_center_skill_details__contains=request.
                        GET['search'])
                    | Q(japanese_collection__contains=request.GET['search'])
                    | Q(promo_item__contains=request.GET['search'])
                    | Q(event__english_name__contains=request.GET['search'])
                    | Q(event__japanese_name__contains=request.GET['search']))
        if 'name' in request.GET and request.GET['name']:
            cards = cards.filter(name__exact=request.GET['name'])
            request_get['name'] = request.GET['name']
        if 'collection' in request.GET and request.GET['collection']:
            cards = cards.filter(
                japanese_collection__exact=request.GET['collection'])
            request_get['collection'] = request.GET['collection']
        if 'rarity' in request.GET and request.GET['rarity']:
            cards = cards.filter(rarity__exact=request.GET['rarity'])
            request_get['rarity'] = request.GET['rarity']
        if 'attribute' in request.GET and request.GET['attribute']:
            cards = cards.filter(attribute__exact=request.GET['attribute'])
            request_get['attribute'] = request.GET['attribute']
        if 'skill' in request.GET and request.GET['skill']:
            cards = cards.filter(skill__exact=request.GET['skill'])
            request_get['skill'] = request.GET['skill']
        if 'is_promo' in request.GET and request.GET['is_promo']:
            cards = cards.filter(is_promo__exact=True)
            request_get['is_promo'] = request.GET['is_promo']
        if 'is_special' in request.GET and request.GET['is_special']:
            cards = cards.filter(is_special__exact=True)
            request_get['is_special'] = request.GET['is_special']
        if 'is_event' in request.GET and request.GET['is_event']:
            cards = cards.filter(event__isnull=False)
            request_get['is_event'] = request.GET['is_event']
        if 'account' in request.GET and request.GET[
                'account'] and request.user.is_authenticated(
                ) and not request.user.is_anonymous():
            account = findAccount(request.GET['account'],
                                  context['accounts'],
                                  forceGetAccount=request.user.is_staff)
            if account:
                request_get['account'] = account.id
                if 'max_level' in request.GET and request.GET[
                        'max_level'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.
                                         filter(owner_account=account,
                                                max_level=True).values('card'))
                    request_get['max_level'] = '1'
                elif 'max_level' in request.GET and request.GET[
                        'max_level'] == '-1':
                    cards = cards.exclude(
                        id__in=models.OwnedCard.objects.filter(
                            owner_account=account, max_level=True).values(
                                'card'))
                    request_get['max_level'] = '-1'
                if 'max_bond' in request.GET and request.GET['max_bond'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.
                                         filter(owner_account=account,
                                                max_bond=True).values('card'))
                    request_get['max_bond'] = '1'
                elif 'max_bond' in request.GET and request.GET[
                        'max_bond'] == '-1':
                    cards = cards.exclude(id__in=models.OwnedCard.objects.
                                          filter(owner_account=account,
                                                 max_bond=True).values('card'))
                    request_get['max_bond'] = '-1'
                if 'idolized' in request.GET and request.GET['idolized'] == '1':
                    cards = cards.filter(id__in=models.OwnedCard.objects.
                                         filter(owner_account=account,
                                                idolized=True).values('card'))
                    request_get['idolized'] = '1'
                elif 'idolized' in request.GET and request.GET[
                        'idolized'] == '-1':
                    cards = cards.exclude(id__in=models.OwnedCard.objects.
                                          filter(owner_account=account,
                                                 idolized=True).values('card'))
                    request_get['idolized'] = '-1'

                if 'stored' in request.GET and request.GET['stored']:
                    if request.GET['stored'] == 'Album':
                        cards = cards.filter(
                            ownedcards__owner_account=account).filter(
                                Q(ownedcards__stored='Deck')
                                | Q(ownedcards__stored='Album'))
                    else:
                        cards = cards.filter(
                            ownedcards__owner_account=account,
                            ownedcards__stored=request.GET['stored'])
                    cards = cards.distinct()
                    request_get['stored'] = request.GET['stored']

        if ('accounts' in context and not hasJP(context['accounts'])
                and 'search' not in request.GET
                or 'is_world' in request.GET and request.GET['is_world']):
            cards = cards.filter(
                Q(release_date__isnull=True) | Q(id=584)
                | Q(release_date__lte=(datetime.date.today() - relativedelta(
                    years=1) + relativedelta(days=2)))).filter(
                        Q(is_promo__exact=False)
                        | Q(is_promo__exact=True,
                            id__in=[65, 204, 207, 216, 584])).exclude(
                                is_special__exact=True, id__gte=379)
            request_get['is_world'] = True

        if 'ordering' in request.GET and request.GET['ordering']:
            request_get['ordering'] = request.GET['ordering']
            request_get[
                'reverse_order'] = 'reverse_order' in request.GET and request.GET[
                    'reverse_order']
        prefix = '-' if request_get['reverse_order'] else ''
        cards = cards.order_by(prefix + request_get['ordering'], prefix + 'id')

        context['total_results'] = cards.count()
        # Set limit
        page_size = 9
        if 'page' in request.GET and request.GET['page']:
            page = int(request.GET['page']) - 1
            if page < 0:
                page = 0
        cards = cards.select_related(
            'event',
            'idol')[(page * page_size):((page * page_size) + page_size)]
        context['total_pages'] = int(
            math.ceil(context['total_results'] / page_size))
    else:
        context['total_results'] = 1
        cards = [get_object_or_404(models.Card, id=int(card))]
        context['single'] = cards[0]

    # Get statistics & other information to show in cards
    for card in cards:
        card.japan_only = card.is_japan_only()
        if card.video_story:
            card.embed_video = card.video_story.replace('/watch?v=', '/embed/')
        if card.japanese_video_story:
            card.embed_japanese_video = card.japanese_video_story.replace(
                '/watch?v=', '/embed/')
        card.percent_stats = {
            'minimum': {
                'Smile':
                ((card.minimum_statistics_smile if
                  card.minimum_statistics_smile else 0) / max_stats['Smile']) *
                100,
                'Pure':
                ((card.minimum_statistics_pure if card.minimum_statistics_pure
                  else 0) / max_stats['Pure']) * 100,
                'Cool':
                ((card.minimum_statistics_cool if card.minimum_statistics_cool
                  else 0) / max_stats['Cool']) * 100,
            },
            'non_idolized_maximum': {
                'Smile': ((card.non_idolized_maximum_statistics_smile if
                           card.non_idolized_maximum_statistics_smile else 0) /
                          max_stats['Smile']) * 100,
                'Pure': ((card.non_idolized_maximum_statistics_pure if
                          card.non_idolized_maximum_statistics_pure else 0) /
                         max_stats['Pure']) * 100,
                'Cool': ((card.non_idolized_maximum_statistics_cool if
                          card.non_idolized_maximum_statistics_cool else 0) /
                         max_stats['Cool']) * 100,
            },
            'idolized_maximum': {
                'Smile': ((card.idolized_maximum_statistics_smile
                           if card.idolized_maximum_statistics_smile else 0) /
                          max_stats['Smile']) * 100,
                'Pure': ((card.idolized_maximum_statistics_pure
                          if card.idolized_maximum_statistics_pure else 0) /
                         max_stats['Pure']) * 100,
                'Cool': ((card.idolized_maximum_statistics_cool
                          if card.idolized_maximum_statistics_cool else 0) /
                         max_stats['Cool']) * 100,
            }
        }
        if request.user.is_authenticated() and not request.user.is_anonymous():
            card.owned_cards = card.ownedcards.filter(
                owner_account__owner=request.user).order_by(
                    'owner_account__language')
        else:
            card.owned_cards = []

    if not ajax:
        # Get filters info for the form
        context['filters'] = {
            'idols':
            cardsinfo['idols'],
            'collections':
            cardsinfo['collections'],
            'skills':
            cardsinfo['skills'],
            'rarity_choices':
            models.RARITY_CHOICES,
            'attribute_choices':
            models.ATTRIBUTE_CHOICES,
            'stored_choices':
            models.STORED_CHOICES,
            'ordering_choices':
            (('id', _('Card #ID')), ('release_date', _('Release date')),
             ('name', _('Idol')), ('idolized_maximum_statistics_smile',
                                   _('Smile\'s statistics')),
             ('idolized_maximum_statistics_pure',
              _('Pure\'s statistics')), ('idolized_maximum_statistics_cool',
                                         _('Cool\'s statistics')), ('hp',
                                                                    _('HP')))
        }

    context['total_cards'] = len(cards)
    if context['total_cards'] > 0:
        context['idol'] = cards[0].idol
    context['cards'] = enumerate(cards)
    context['max_stats'] = max_stats
    context['show_filter_button'] = False if 'single' in context and context[
        'single'] else True
    context['request_get'] = request_get
    context['show_filter_bar'] = context['show_filter_button']
    context['show_total_results'] = 'search' in request_get
    if 'search' not in request_get and 'name' in request_get:
        context['show_filter_bar'] = False
    context['current'] = 'cards'
    if request.user.is_authenticated() and not request.user.is_anonymous():
        context['addcard_form'] = forms.getOwnedCardForm(
            forms.OwnedCardForm(), context['accounts'])
    context['page'] = page + 1
    context['ajax'] = ajax
    if ajax:
        return render(request, 'cardsPage.html', context)
    return render(request, 'cards.html', context)