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