refactor(db): update cursor rules and enhance deployment rollback script

- Standardized string formatting in cursor rules for consistency.
- Added a new rollback deployment script to facilitate blue-green deployment strategy.
- Removed outdated seed data files and introduced new rarity mappings for better data management.
- Improved model relationships and query optimizations in various views and admin configurations.
- Enhanced caching strategies across templates to improve performance and reduce load times, including jitter in cache settings for better performance.
- Refactored card-related views and templates to utilize new model fields and relationships.
This commit is contained in:
badblocks 2025-06-19 15:42:36 -07:00
parent 39a002e394
commit af2f48a491
No known key found for this signature in database
37 changed files with 2444 additions and 13565 deletions

View file

@ -1,22 +1,23 @@
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import redirect, get_object_or_404, render
from django.core.exceptions import PermissionDenied
from django.db.models import BooleanField, Case, Q, Value, When
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.http import urlencode
from django.views.generic import (
CreateView,
DeleteView,
View,
TemplateView,
UpdateView,
View,
)
from pkmntrade_club.accounts.models import FriendCode
from pkmntrade_club.accounts.forms import FriendCodeForm, UserSettingsForm
from django.db.models import Case, When, Value, BooleanField
from pkmntrade_club.trades.models import TradeOffer, TradeAcceptance
from django.core.exceptions import PermissionDenied
from pkmntrade_club.trades.mixins import FriendCodeRequiredMixin
from pkmntrade_club.accounts.models import FriendCode
from pkmntrade_club.common.mixins import ReusablePaginationMixin
from django.urls import reverse
from django.utils.http import urlencode
from pkmntrade_club.trades.mixins import FriendCodeRequiredMixin
from pkmntrade_club.trades.models import TradeAcceptance, TradeOffer
class AddFriendCodeView(LoginRequiredMixin, CreateView):
@ -204,8 +205,6 @@ class DashboardView(
return {"object_list": object_list, "page_obj": pagination_context}
def get_involved_acceptances(self, selected_friend_code):
from django.db.models import Q
terminal_states = [
TradeAcceptance.AcceptanceState.THANKED_BY_INITIATOR,
TradeAcceptance.AcceptanceState.THANKED_BY_ACCEPTOR,
@ -213,10 +212,25 @@ class DashboardView(
TradeAcceptance.AcceptanceState.REJECTED_BY_INITIATOR,
TradeAcceptance.AcceptanceState.REJECTED_BY_ACCEPTOR,
]
involved = TradeAcceptance.objects.filter(
Q(trade_offer__initiated_by=selected_friend_code)
| Q(accepted_by=selected_friend_code)
).order_by("-updated_at")
involved = (
TradeAcceptance.objects.filter(
Q(trade_offer__initiated_by=selected_friend_code)
| Q(accepted_by=selected_friend_code)
)
.select_related(
"trade_offer__initiated_by__user",
"accepted_by__user",
"requested_card__rarity",
"requested_card__cardset",
"offered_card__rarity",
"offered_card__cardset",
)
.prefetch_related(
"requested_card__translations",
"offered_card__translations",
)
.order_by("-updated_at")
)
return involved.exclude(state__in=terminal_states)
def get_trade_acceptances_waiting_paginated(self, page_param):
@ -271,55 +285,94 @@ class DashboardView(
return {"object_list": object_list, "page_obj": pagination_context}
def get_closed_acceptances_paginated(self, page_param):
from django.db.models import Q
selected_friend_code = self.get_selected_friend_code()
terminal_success_states = [
TradeAcceptance.AcceptanceState.THANKED_BY_INITIATOR,
TradeAcceptance.AcceptanceState.THANKED_BY_ACCEPTOR,
TradeAcceptance.AcceptanceState.THANKED_BY_BOTH,
]
acceptance_qs = TradeAcceptance.objects.filter(
Q(trade_offer__initiated_by=selected_friend_code)
| Q(accepted_by=selected_friend_code),
state__in=terminal_success_states,
).order_by("-updated_at")
acceptance_qs = (
TradeAcceptance.objects.filter(
Q(trade_offer__initiated_by=selected_friend_code)
| Q(accepted_by=selected_friend_code),
state__in=terminal_success_states,
)
.select_related(
"trade_offer__initiated_by__user",
"accepted_by__user",
"requested_card__rarity",
"requested_card__cardset",
"offered_card__rarity",
"offered_card__cardset",
)
.prefetch_related(
"requested_card__translations",
"offered_card__translations",
)
.order_by("-updated_at")
)
object_list, pagination_context = self.paginate_data(
acceptance_qs, int(page_param)
)
return {"object_list": object_list, "page_obj": pagination_context}
def get_rejected_by_me_paginated(self, page_param):
from django.db.models import Q
selected_friend_code = self.get_selected_friend_code()
rejection = TradeAcceptance.objects.filter(
Q(
trade_offer__initiated_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_INITIATOR,
rejection = (
TradeAcceptance.objects.filter(
Q(
trade_offer__initiated_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_INITIATOR,
)
| Q(
accepted_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_ACCEPTOR,
)
)
| Q(
accepted_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_ACCEPTOR,
.select_related(
"trade_offer__initiated_by__user",
"accepted_by__user",
"requested_card__rarity",
"requested_card__cardset",
"offered_card__rarity",
"offered_card__cardset",
)
).order_by("-updated_at")
.prefetch_related(
"requested_card__translations",
"offered_card__translations",
)
.order_by("-updated_at")
)
object_list, pagination_context = self.paginate_data(rejection, int(page_param))
return {"object_list": object_list, "page_obj": pagination_context}
def get_rejected_by_them_paginated(self, page_param):
from django.db.models import Q
selected_friend_code = self.get_selected_friend_code()
rejection = TradeAcceptance.objects.filter(
Q(
trade_offer__initiated_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_ACCEPTOR,
rejection = (
TradeAcceptance.objects.filter(
Q(
trade_offer__initiated_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_ACCEPTOR,
)
| Q(
accepted_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_INITIATOR,
)
)
| Q(
accepted_by=selected_friend_code,
state=TradeAcceptance.AcceptanceState.REJECTED_BY_INITIATOR,
.select_related(
"trade_offer__initiated_by__user",
"accepted_by__user",
"requested_card__rarity",
"requested_card__cardset",
"offered_card__rarity",
"offered_card__cardset",
)
).order_by("-updated_at")
.prefetch_related(
"requested_card__translations",
"offered_card__translations",
)
.order_by("-updated_at")
)
object_list, pagination_context = self.paginate_data(rejection, int(page_param))
return {"object_list": object_list, "page_obj": pagination_context}