Only show DropCampaignDetails
This commit is contained in:
parent
fa197cf096
commit
026bc57f77
2 changed files with 32 additions and 9 deletions
|
|
@ -467,7 +467,12 @@ class DropCampaignFeed(Feed):
|
|||
|
||||
def items(self) -> list[DropCampaign]:
|
||||
"""Return the latest 100 drop campaigns."""
|
||||
return list(DropCampaign.objects.select_related("game").order_by("-added_at")[:100])
|
||||
return list(
|
||||
DropCampaign.objects
|
||||
.filter(operation_name="DropCampaignDetails")
|
||||
.select_related("game")
|
||||
.order_by("-added_at")[:100],
|
||||
)
|
||||
|
||||
def item_title(self, item: Model) -> SafeText:
|
||||
"""Return the campaign name as the item title (SafeText for RSS)."""
|
||||
|
|
@ -609,7 +614,12 @@ class GameCampaignFeed(Feed):
|
|||
|
||||
def items(self, obj: Game) -> list[DropCampaign]:
|
||||
"""Return the latest 100 drop campaigns for this game, ordered by most recently added."""
|
||||
return list(DropCampaign.objects.filter(game=obj).select_related("game").order_by("-added_at")[:100])
|
||||
return list(
|
||||
DropCampaign.objects
|
||||
.filter(game=obj, operation_name="DropCampaignDetails")
|
||||
.select_related("game")
|
||||
.order_by("-added_at")[:100],
|
||||
)
|
||||
|
||||
|
||||
# MARK: /rss/organizations/<twitch_id>/campaigns/
|
||||
|
|
@ -642,7 +652,12 @@ class OrganizationCampaignFeed(Feed):
|
|||
|
||||
def items(self, obj: Organization) -> list[DropCampaign]:
|
||||
"""Return the latest 100 drop campaigns for this organization, ordered by most recently added."""
|
||||
return list(DropCampaign.objects.filter(game__owner=obj).select_related("game").order_by("-added_at")[:100])
|
||||
return list(
|
||||
DropCampaign.objects
|
||||
.filter(game__owner=obj, operation_name="DropCampaignDetails")
|
||||
.select_related("game")
|
||||
.order_by("-added_at")[:100],
|
||||
)
|
||||
|
||||
def item_author_name(self, item: DropCampaign) -> str:
|
||||
"""Return the author name for the campaign, typically the game name."""
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ def search_view(request: HttpRequest) -> HttpResponse:
|
|||
results["games"] = Game.objects.filter(Q(name__istartswith=query) | Q(display_name__istartswith=query))
|
||||
results["campaigns"] = DropCampaign.objects.filter(
|
||||
Q(name__istartswith=query) | Q(description__icontains=query),
|
||||
operation_name="DropCampaignDetails",
|
||||
).select_related("game")
|
||||
results["drops"] = TimeBasedDrop.objects.filter(name__istartswith=query).select_related("campaign")
|
||||
results["benefits"] = DropBenefit.objects.filter(name__istartswith=query).prefetch_related(
|
||||
|
|
@ -83,6 +84,7 @@ def search_view(request: HttpRequest) -> HttpResponse:
|
|||
)
|
||||
results["campaigns"] = DropCampaign.objects.filter(
|
||||
Q(name__icontains=query) | Q(description__icontains=query),
|
||||
operation_name="DropCampaignDetails",
|
||||
).select_related("game")
|
||||
results["drops"] = TimeBasedDrop.objects.filter(
|
||||
name__icontains=query,
|
||||
|
|
@ -204,7 +206,7 @@ def drop_campaign_list_view(request: HttpRequest) -> HttpResponse:
|
|||
game_filter: str | None = request.GET.get("game")
|
||||
status_filter: str | None = request.GET.get("status")
|
||||
per_page: int = 100
|
||||
queryset: QuerySet[DropCampaign] = DropCampaign.objects.all()
|
||||
queryset: QuerySet[DropCampaign] = DropCampaign.objects.filter(operation_name="DropCampaignDetails")
|
||||
|
||||
if game_filter:
|
||||
queryset = queryset.filter(game__twitch_id=game_filter)
|
||||
|
|
@ -311,7 +313,10 @@ def drop_campaign_detail_view(request: HttpRequest, twitch_id: str) -> HttpRespo
|
|||
Http404: If the campaign is not found.
|
||||
"""
|
||||
try:
|
||||
campaign: DropCampaign = DropCampaign.objects.select_related("game__owner").get(twitch_id=twitch_id)
|
||||
campaign: DropCampaign = DropCampaign.objects.select_related("game__owner").get(
|
||||
twitch_id=twitch_id,
|
||||
operation_name="DropCampaignDetails",
|
||||
)
|
||||
except DropCampaign.DoesNotExist as exc:
|
||||
msg = "No campaign found matching the query"
|
||||
raise Http404(msg) from exc
|
||||
|
|
@ -527,7 +532,7 @@ class GameDetailView(DetailView):
|
|||
now: datetime.datetime = timezone.now()
|
||||
all_campaigns: QuerySet[DropCampaign] = (
|
||||
DropCampaign.objects
|
||||
.filter(game=game)
|
||||
.filter(game=game, operation_name="DropCampaignDetails")
|
||||
.select_related("game__owner")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
|
|
@ -636,7 +641,7 @@ def dashboard(request: HttpRequest) -> HttpResponse:
|
|||
now: datetime.datetime = timezone.now()
|
||||
active_campaigns: QuerySet[DropCampaign] = (
|
||||
DropCampaign.objects
|
||||
.filter(start_at__lte=now, end_at__gte=now)
|
||||
.filter(start_at__lte=now, end_at__gte=now, operation_name="DropCampaignDetails")
|
||||
.select_related("game__owner")
|
||||
.prefetch_related(
|
||||
"allow_channels",
|
||||
|
|
@ -695,6 +700,7 @@ def debug_view(request: HttpRequest) -> HttpResponse:
|
|||
# Campaigns with missing or obviously broken images
|
||||
broken_image_campaigns: QuerySet[DropCampaign] = DropCampaign.objects.filter(
|
||||
Q(image_url__isnull=True) | Q(image_url__exact="") | ~Q(image_url__startswith="http"),
|
||||
operation_name="DropCampaignDetails",
|
||||
).select_related("game")
|
||||
|
||||
# Benefits with missing images
|
||||
|
|
@ -714,12 +720,14 @@ def debug_view(request: HttpRequest) -> HttpResponse:
|
|||
# Campaigns with invalid dates (start after end or missing either)
|
||||
invalid_date_campaigns: QuerySet[DropCampaign] = DropCampaign.objects.filter(
|
||||
Q(start_at__gt=F("end_at")) | Q(start_at__isnull=True) | Q(end_at__isnull=True),
|
||||
operation_name="DropCampaignDetails",
|
||||
).select_related("game")
|
||||
|
||||
# Duplicate campaign names per game.
|
||||
# We retrieve the game's name for user-friendly display.
|
||||
duplicate_name_campaigns = (
|
||||
DropCampaign.objects
|
||||
.filter(operation_name="DropCampaignDetails")
|
||||
.values("game__display_name", "name", "game__twitch_id")
|
||||
.annotate(name_count=Count("twitch_id"))
|
||||
.filter(name_count__gt=1)
|
||||
|
|
@ -729,7 +737,7 @@ def debug_view(request: HttpRequest) -> HttpResponse:
|
|||
# Campaigns currently active but image missing
|
||||
active_missing_image: QuerySet[DropCampaign] = (
|
||||
DropCampaign.objects
|
||||
.filter(start_at__lte=now, end_at__gte=now)
|
||||
.filter(start_at__lte=now, end_at__gte=now, operation_name="DropCampaignDetails")
|
||||
.filter(
|
||||
Q(image_url__isnull=True) | Q(image_url__exact="") | ~Q(image_url__startswith="http"),
|
||||
)
|
||||
|
|
@ -899,7 +907,7 @@ class ChannelDetailView(DetailView):
|
|||
now: datetime.datetime = timezone.now()
|
||||
all_campaigns: QuerySet[DropCampaign] = (
|
||||
DropCampaign.objects
|
||||
.filter(allow_channels=channel)
|
||||
.filter(allow_channels=channel, operation_name="DropCampaignDetails")
|
||||
.select_related("game__owner")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue