Fix create trade offer flow and other related bugs
This commit is contained in:
parent
f3a1366269
commit
65ca344582
40 changed files with 867 additions and 278 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 5.1.2 on 2025-03-20 00:08
|
||||
# Generated by Django 5.1.2 on 2025-03-22 04:08
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
from django.urls import path
|
||||
from .views import (
|
||||
CardDetailView,
|
||||
TradeOfferHaveCardListView,
|
||||
TradeOfferWantCardListView,
|
||||
)
|
||||
|
||||
app_name = "cards"
|
||||
|
||||
urlpatterns = [
|
||||
path('<int:pk>/', CardDetailView.as_view(), name='card_detail'),
|
||||
path('<int:pk>/trade-offers-have/', TradeOfferHaveCardListView.as_view(), name='card_trade_offer_have_list'),
|
||||
path('<int:pk>/trade-offers-want/', TradeOfferWantCardListView.as_view(), name='card_trade_offer_want_list'),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,64 @@
|
|||
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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue