amiibofindr/amiibofindr/apps/profile/views.py

43 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
from django.contrib.auth import get_user_model
from django.views.generic.base import View
from django.shortcuts import render, get_object_or_404
from amiibofindr.apps.amiibo.models import UserAmiibo, AmiiboFigure, AmiiboCard
class ProfileView(View):
template = 'profile/main.html'
types = {
'figures': ('figure', AmiiboFigure),
'cards': ('card', AmiiboCard),
}
relations = ('own', 'want', 'trade', )
def get(self, request, username, type='figures', relation='own'):
user = get_object_or_404(get_user_model(), username=username)
relation_filter = {relation: True}
amiibo_pks = UserAmiibo.objects.filter(
user=user,
_amiibo__type=self.types[type][0],
**relation_filter
).values_list('_amiibo__id', flat=True)
amiibo_list = self.types[type][1].objects.filter(pk__in=amiibo_pks)
return render(request, self.template, {
'this_user': user,
'amiibo_list': amiibo_list,
'type': type,
'relation': relation,
'stats': {
'figures_count': UserAmiibo.objects.filter(
user=user, _amiibo__type='figure', own=True).count(),
'cards_count': UserAmiibo.objects.filter(
user=user, _amiibo__type='card', own=True).count(),
}
})