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