Use .twitch_id instead of .id
This commit is contained in:
parent
e3a68ab4d2
commit
d63e20aebc
11 changed files with 32 additions and 64 deletions
|
|
@ -130,7 +130,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{% for drop in drops %}
|
||||
<tr id="drop-{{ drop.drop.id }}">
|
||||
<tr id="drop-{{ drop.drop.twitch_id }}">
|
||||
<td>
|
||||
{% for benefit in drop.drop.benefits.all %}
|
||||
{% if benefit.image_asset_url %}
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@
|
|||
<select id="game" name="game">
|
||||
<option value="">All Games</option>
|
||||
{% for game in games %}
|
||||
<option value="{{ game.id }}"
|
||||
{% if selected_game == game.id %}selected{% endif %}>
|
||||
{{ game.display_name|default:game.name|default:game.slug|default:game.id }}
|
||||
<option value="{{ game.twitch_id }}"
|
||||
{% if selected_game == game.twitch_id %}selected{% endif %}>
|
||||
{{ game.display_name|default:game.name|default:game.slug|default:game.twitch_id }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
<h2 style="margin: 0 0 0.5rem 0;">
|
||||
<a id="game-link-{{ game_group.grouper.twitch_id }}"
|
||||
href="{% url 'twitch:game_detail' game_group.grouper.twitch_id %}"
|
||||
style="text-decoration: none">{{ game_group.grouper.display_name|default:game_group.grouper.name|default:game_group.grouper.slug|default:game_group.grouper.id }}</a>
|
||||
style="text-decoration: none">{{ game_group.grouper.display_name|default:game_group.grouper.name|default:game_group.grouper.slug|default:game_group.grouper.twitch_id }}</a>
|
||||
</h2>
|
||||
{% comment %} Check if the owner exists and has a valid ID before creating the link {% endcomment %}
|
||||
{% if game_group.grouper.owner and game_group.grouper.owner.twitch_id %}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
{% endif %}
|
||||
<!-- Channel Info -->
|
||||
<p>
|
||||
<strong>Channel ID:</strong> {{ channel.id }}
|
||||
<strong>Channel ID:</strong> {{ channel.twitch_id }}
|
||||
</p>
|
||||
<p>
|
||||
<strong>Added to database:</strong>
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if campaign.game %}
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.id %}">
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.twitch_id %}">
|
||||
{{ campaign.game.display_name|default:campaign.game.name }}
|
||||
</a>
|
||||
{% else %}
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if campaign.game %}
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.id %}">
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.twitch_id %}">
|
||||
{{ campaign.game.display_name|default:campaign.game.name }}
|
||||
</a>
|
||||
{% else %}
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if campaign.game %}
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.id %}">
|
||||
<a href="{% url 'twitch:game_detail' campaign.game.twitch_id %}">
|
||||
{{ campaign.game.display_name|default:campaign.game.name }}
|
||||
</a>
|
||||
{% else %}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{% for channel in channels %}
|
||||
<tr id="channel-row-{{ channel.id }}">
|
||||
<tr id="channel-row-{{ channel.twitch_id }}">
|
||||
<td>
|
||||
<a id="channel-link-{{ channel.id }}"
|
||||
<a id="channel-link-{{ channel.twitch_id }}"
|
||||
href="{% url 'twitch:channel_detail' channel.twitch_id %}">{{ channel.display_name }}</a>
|
||||
</td>
|
||||
<td>{{ channel.name }}</td>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
{% if games_without_owner %}
|
||||
<ul id="games-without-owner-list">
|
||||
{% for game in games_without_owner %}
|
||||
<li id="game-{{ game.id }}">
|
||||
<li id="game-{{ game.twitch_id }}">
|
||||
<a href="{% url 'twitch:game_detail' game.twitch_id %}">{{ game.display_name }}</a> (ID: {{ game.twitch_id }})
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
{# A benefit is linked to a game via a drop and a campaign. #}
|
||||
{# We use the 'with' tag to get the first drop for cleaner access. #}
|
||||
{% with first_drop=b.drops.all.0 %}
|
||||
<li id="benefit-{{ b.id }}">
|
||||
<li id="benefit-{{ b.twitch_id }}">
|
||||
{{ b.name }}
|
||||
{# Check if the relationship path to the game exists #}
|
||||
{% if first_drop and first_drop.campaign and first_drop.campaign.game %}
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
{% for row in duplicate_name_campaigns %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url 'twitch:game_detail' row.game_id %}">{{ row.game__display_name }}</a>
|
||||
<a href="{% url 'twitch:game_detail' row.game__twitch_id %}">{{ row.game__display_name }}</a>
|
||||
</td>
|
||||
<td>{{ row.name }}</td>
|
||||
<td>{{ row.name_count }}</td>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<div style="display: flex; flex-wrap: wrap; gap: 0.25rem;">
|
||||
{% for organization, games in games_by_org.items %}
|
||||
{% for item in games %}
|
||||
<article id="game-{{ item.game.id }}"
|
||||
<article id="game-{{ item.game.twitch_id }}"
|
||||
style="padding: 0.25rem;
|
||||
border-radius: 8px;
|
||||
flex: 1 1 160px;
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@
|
|||
</p>
|
||||
{% if games_by_org %}
|
||||
{% for organization, games in games_by_org.items %}
|
||||
<h2 id="org-{{ organization.id }}">{{ organization.name }}</h2>
|
||||
<h2 id="org-{{ organization.twitch_id }}">{{ organization.name }}</h2>
|
||||
<ul style="list-style: none; padding: 0; margin: 0;">
|
||||
{% for item in games %}
|
||||
<li id="game-{{ item.game.id }}">
|
||||
<li id="game-{{ item.game.twitch_id }}">
|
||||
<a href="{% url 'twitch:game_detail' item.game.twitch_id %}">{{ item.game.display_name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
{% if orgs %}
|
||||
<ul id="org-list">
|
||||
{% for organization in orgs %}
|
||||
<li id="org-{{ organization.id }}">
|
||||
<li id="org-{{ organization.twitch_id }}">
|
||||
<a href="{% url 'twitch:organization_detail' organization.twitch_id %}">{{ organization.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
{% if user.is_authenticated %}
|
||||
<form id="notification-form"
|
||||
method="post"
|
||||
action="{% url 'twitch:subscribe_org_notifications' org_id=organization.id %}">
|
||||
action="{% url 'twitch:subscribe_org_notifications' org_id=organization.twitch_id %}">
|
||||
{% csrf_token %}
|
||||
<div>
|
||||
<input type="checkbox"
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
{% endif %}
|
||||
<ul id="games-list">
|
||||
{% for game in games %}
|
||||
<li id="game-{{ game.id }}">
|
||||
<li id="game-{{ game.twitch_id }}">
|
||||
<a href="{% url 'twitch:game_detail' game.twitch_id %}">{{ game }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<ul id="drops-list">
|
||||
{% for drop in results.drops %}
|
||||
<li id="drop-{{ drop.twitch_id }}">
|
||||
<a href="{% url 'twitch:campaign_detail' drop.campaign.pk %}#drop-{{ drop.twitch_id }}">{{ drop.name }}</a> (in {{ drop.campaign.name }})
|
||||
<a href="{% url 'twitch:campaign_detail' drop.campaign.twitch_id %}#drop-{{ drop.twitch_id }}">{{ drop.name }}</a> (in {{ drop.campaign.name }})
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
@ -51,7 +51,11 @@
|
|||
{% if results.benefits %}
|
||||
<h2 id="benefits-header">Benefits</h2>
|
||||
<ul id="benefits-list">
|
||||
{% for benefit in results.benefits %}<li id="benefit-{{ benefit.twitch_id }}">{{ benefit.name }}</li>{% endfor %}
|
||||
{% for benefit in results.benefits %}
|
||||
<li id="benefit-{{ benefit.twitch_id }}">
|
||||
<a href="{% url 'twitch:campaign_detail' benefit.drops.first.campaign.twitch_id %}">{{ benefit.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,9 @@ def search_view(request: HttpRequest) -> HttpResponse:
|
|||
Q(name__istartswith=query) | Q(description__icontains=query),
|
||||
).select_related("game")
|
||||
results["drops"] = TimeBasedDrop.objects.filter(name__istartswith=query).select_related("campaign")
|
||||
results["benefits"] = DropBenefit.objects.filter(name__istartswith=query)
|
||||
results["benefits"] = DropBenefit.objects.filter(name__istartswith=query).prefetch_related(
|
||||
"drops__campaign",
|
||||
)
|
||||
else:
|
||||
# SQLite-compatible text search using icontains
|
||||
results["organizations"] = Organization.objects.filter(
|
||||
|
|
@ -85,7 +87,7 @@ def search_view(request: HttpRequest) -> HttpResponse:
|
|||
).select_related("campaign")
|
||||
results["benefits"] = DropBenefit.objects.filter(
|
||||
name__icontains=query,
|
||||
)
|
||||
).prefetch_related("drops__campaign")
|
||||
|
||||
return render(
|
||||
request,
|
||||
|
|
@ -181,7 +183,7 @@ def drop_campaign_list_view(request: HttpRequest) -> HttpResponse:
|
|||
queryset: QuerySet[DropCampaign] = DropCampaign.objects.all()
|
||||
|
||||
if game_filter:
|
||||
queryset = queryset.filter(game__id=game_filter)
|
||||
queryset = queryset.filter(game__twitch_id=game_filter)
|
||||
|
||||
queryset = queryset.select_related("game__owner").order_by("-start_at")
|
||||
|
||||
|
|
@ -541,24 +543,6 @@ class GameDetailView(DetailView):
|
|||
campaign for campaign in all_campaigns if campaign.end_at is not None and campaign.end_at < now
|
||||
]
|
||||
|
||||
# Build campaign data with sorted benefits
|
||||
campaigns_with_benefits: list[dict[str, Any]] = []
|
||||
for campaign in all_campaigns:
|
||||
benefits_dict: dict[int, DropBenefit] = {}
|
||||
for drop in campaign.time_based_drops.all(): # type: ignore[attr-defined]
|
||||
for benefit in drop.benefits.all():
|
||||
benefits_dict[benefit.id] = benefit
|
||||
sorted_benefits = sorted(
|
||||
benefits_dict.values(),
|
||||
key=lambda b: b.name,
|
||||
)
|
||||
campaigns_with_benefits.append(
|
||||
{
|
||||
"campaign": campaign,
|
||||
"sorted_benefits": sorted_benefits,
|
||||
},
|
||||
)
|
||||
|
||||
serialized_game: str = serialize(
|
||||
"json",
|
||||
[game],
|
||||
|
|
@ -606,7 +590,6 @@ class GameDetailView(DetailView):
|
|||
"active_campaigns": active_campaigns,
|
||||
"upcoming_campaigns": upcoming_campaigns,
|
||||
"expired_campaigns": expired_campaigns,
|
||||
"campaigns_with_benefits": campaigns_with_benefits,
|
||||
"owner": game.owner,
|
||||
"now": now,
|
||||
"game_data": format_and_color_json(game_data[0]),
|
||||
|
|
@ -732,7 +715,7 @@ def debug_view(request: HttpRequest) -> HttpResponse:
|
|||
# We retrieve the game's name for user-friendly display.
|
||||
duplicate_name_campaigns = (
|
||||
DropCampaign.objects
|
||||
.values("game_id", "game__display_name", "name")
|
||||
.values("game__display_name", "name", "game__twitch_id")
|
||||
.annotate(name_count=Count("twitch_id"))
|
||||
.filter(name_count__gt=1)
|
||||
.order_by("game__display_name", "name")
|
||||
|
|
@ -931,24 +914,6 @@ class ChannelDetailView(DetailView):
|
|||
campaign for campaign in all_campaigns if campaign.end_at is not None and campaign.end_at < now
|
||||
]
|
||||
|
||||
# Build campaign data with sorted benefits
|
||||
campaigns_with_benefits = []
|
||||
for campaign in all_campaigns:
|
||||
benefits_dict: dict[int, DropBenefit] = {}
|
||||
for drop in campaign.time_based_drops.all(): # type: ignore[attr-defined]
|
||||
for benefit in drop.benefits.all():
|
||||
benefits_dict[benefit.id] = benefit
|
||||
sorted_benefits = sorted(
|
||||
benefits_dict.values(),
|
||||
key=lambda b: b.name,
|
||||
)
|
||||
campaigns_with_benefits.append(
|
||||
{
|
||||
"campaign": campaign,
|
||||
"sorted_benefits": sorted_benefits,
|
||||
},
|
||||
)
|
||||
|
||||
serialized_channel = serialize(
|
||||
"json",
|
||||
[channel],
|
||||
|
|
@ -987,7 +952,6 @@ class ChannelDetailView(DetailView):
|
|||
"active_campaigns": active_campaigns,
|
||||
"upcoming_campaigns": upcoming_campaigns,
|
||||
"expired_campaigns": expired_campaigns,
|
||||
"campaigns_with_benefits": campaigns_with_benefits,
|
||||
"now": now,
|
||||
"channel_data": format_and_color_json(channel_data[0]),
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue