64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
from django.views.generic import TemplateView
|
|
from django.urls import reverse_lazy
|
|
from django.views.generic import UpdateView, DeleteView, CreateView, ListView, DetailView
|
|
from cards.models import Card
|
|
from trades.models import TradeOffer
|
|
|
|
class CardDetailView(DetailView):
|
|
model = Card
|
|
template_name = "cards/card_detail.html"
|
|
context_object_name = "card"
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
card = self.get_object()
|
|
# Count of trade offers where the card appears as a "have" in a trade.
|
|
context['trade_offer_have_count'] = TradeOffer.objects.filter(
|
|
trade_offer_have_cards__card=card
|
|
).distinct().count()
|
|
# Count of trade offers where the card appears as a "want" in a trade.
|
|
context['trade_offer_want_count'] = TradeOffer.objects.filter(
|
|
trade_offer_want_cards__card=card
|
|
).distinct().count()
|
|
return context
|
|
|
|
|
|
class TradeOfferHaveCardListView(ListView):
|
|
model = TradeOffer
|
|
template_name = "cards/_trade_offer_list.html"
|
|
context_object_name = "trade_offers"
|
|
paginate_by = 2
|
|
|
|
def get_queryset(self):
|
|
card_id = self.kwargs.get("pk")
|
|
order_param = self.request.GET.get("order", "newest")
|
|
ordering = "-updated_at" if order_param == "newest" else "updated_at"
|
|
return TradeOffer.objects.filter(
|
|
trade_offer_have_cards__card_id=card_id
|
|
).order_by(ordering).distinct()
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['side'] = 'have'
|
|
return context
|
|
|
|
|
|
class TradeOfferWantCardListView(ListView):
|
|
model = TradeOffer
|
|
template_name = "cards/_trade_offer_list.html"
|
|
context_object_name = "trade_offers"
|
|
paginate_by = 2
|
|
|
|
def get_queryset(self):
|
|
card_id = self.kwargs.get("pk")
|
|
order_param = self.request.GET.get("order", "newest")
|
|
ordering = "-updated_at" if order_param == "newest" else "updated_at"
|
|
return TradeOffer.objects.filter(
|
|
trade_offer_want_cards__card_id=card_id
|
|
).order_by(ordering).distinct()
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context['side'] = 'want'
|
|
return context
|
|
|