Scope URLs to the games namespace

This commit is contained in:
2026-05-12 12:40:15 +02:00
parent 37e3c69abc
commit 913c7d3a98
18 changed files with 87 additions and 85 deletions
+1 -1
View File
@@ -95,7 +95,7 @@ class PurchaseForm(forms.ModelForm):
# Automatically update related_purchase <select/>
# to only include purchases of the selected game.
related_purchase_by_game_url = reverse("related_purchase_by_game")
related_purchase_by_game_url = reverse("games:related_purchase_by_game")
self.fields["games"].widget.attrs.update(
{
"hx-trigger": "load, click",
+1 -1
View File
@@ -1,6 +1,6 @@
<span class="truncate-container">
<a class="underline decoration-slate-500 sm:decoration-2"
href="{% url 'view_game' game_id %}">
href="{% url 'games:view_game' game_id %}">
{% if slot %}
{{ slot }}
{% else %}
@@ -6,7 +6,7 @@
<div>
<p>Are you sure you want to delete this status change?</p>
<c-button color="red" type="submit" size="lg" class="w-full">Delete</c-button>
<a href="{% url 'view_game' object.game.id %}" class="">
<a href="{% url 'games:view_game' object.game.id %}" class="">
<c-button color="gray" class="w-full">Cancel</c-button>
</a>
</div>
+3 -3
View File
@@ -6,7 +6,7 @@
{% block content %}
<div class="flex-col">
{% if dataset_count >= 1 %}
{% url 'list_sessions_start_session_from_session' last.id as start_session_url %}
{% url 'games:list_sessions_start_session_from_session' last.id as start_session_url %}
<div class="mx-auto text-center my-4">
<a id="last-session-start"
href="{{ start_session_url }}"
@@ -36,7 +36,7 @@
<td class="px-2 sm:px-4 md:px-6 md:py-2 purchase-name relative align-top w-24 h-12 group">
<span class="inline-block relative">
<a class="underline decoration-slate-500 sm:decoration-2 inline-block truncate max-w-20char group-hover:absolute group-hover:max-w-none group-hover:-top-8 group-hover:-left-6 group-hover:min-w-60 group-hover:px-6 group-hover:py-3.5 group-hover:bg-purple-600 group-hover:rounded-xs group-hover:outline-dashed group-hover:outline-purple-400 group-hover:outline-4 group-hover:decoration-purple-900 group-hover:text-purple-100"
href="{% url 'view_game' session.game.id %}">
href="{% url 'games:view_game' session.game.id %}">
{{ session.game.name }}
</a>
</span>
@@ -46,7 +46,7 @@
</td>
<td class="px-2 sm:px-4 md:px-6 md:py-2 font-mono hidden lg:table-cell">
{% if not session.timestamp_end %}
{% url 'list_sessions_end_session' session.id as end_session_url %}
{% url 'games:list_sessions_end_session' session.id as end_session_url %}
<a href="{{ end_session_url }}"
hx-get="{{ end_session_url }}"
hx-target="closest tr"
+13 -13
View File
@@ -1,7 +1,7 @@
{% load static %}
<nav class="bg-neutral-primary-soft border-b border-default">
<div class="max-w-(--breakpoint-xl) flex flex-wrap items-center justify-between mx-auto p-4">
<a href="{% url 'index' %}"
<a href="{% url 'games:index' %}"
class="flex items-center space-x-3 rtl:space-x-reverse">
<img src="{% static 'icons/schedule.png' %}"
height="48"
@@ -64,23 +64,23 @@
<ul class="py-2 text-sm text-gray-700 dark:text-gray-400"
aria-labelledby="dropdownLargeButton">
<li>
<a href="{% url 'add_device' %}"
<a href="{% url 'games:add_device' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Device</a>
</li>
<li>
<a href="{% url 'add_game' %}"
<a href="{% url 'games:add_game' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Game</a>
</li>
<li>
<a href="{% url 'add_platform' %}"
<a href="{% url 'games:add_platform' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Platform</a>
</li>
<li>
<a href="{% url 'add_purchase' %}"
<a href="{% url 'games:add_purchase' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Purchase</a>
</li>
<li>
<a href="{% url 'add_session' %}"
<a href="{% url 'games:add_session' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Session</a>
</li>
</ul>
@@ -105,34 +105,34 @@
<ul class="py-2 text-sm text-gray-700 dark:text-gray-400"
aria-labelledby="dropdownLargeButton">
<li>
<a href="{% url 'list_devices' %}"
<a href="{% url 'games:list_devices' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Devices</a>
</li>
<li>
<a href="{% url 'list_games' %}"
<a href="{% url 'games:list_games' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Games</a>
</li>
<li>
<a href="{% url 'list_platforms' %}"
<a href="{% url 'games:list_platforms' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Platforms</a>
</li>
<li>
<a href="{% url 'list_playevents' %}"
<a href="{% url 'games:list_playevents' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Play events</a>
</li>
<li>
<a href="{% url 'list_purchases' %}"
<a href="{% url 'games:list_purchases' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Purchases</a>
</li>
<li>
<a href="{% url 'list_sessions' %}"
<a href="{% url 'games:list_sessions' %}"
class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Sessions</a>
</li>
</ul>
</div>
</li>
<li>
<a href="{% url 'stats_by_year' global_current_year %}"
<a href="{% url 'games:stats_by_year' global_current_year %}"
class="block py-2 px-3 text-gray-900 rounded-sm hover:bg-gray-100 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent">Stats</a>
</li>
<li>
+1 -1
View File
@@ -1,6 +1,6 @@
<ul class="list-disc list-inside">
{% for change in statuschanges %}
<li class="text-slate-500">
{% if change.timestamp %}{{ change.timestamp | date:"d/m/Y H:i" }}: Changed{% else %}At some point changed{% endif %} status from <c-gamestatus :status="change.old_status">{{ change.get_old_status_display }}</c-gamestatus> to <c-gamestatus :status="change.new_status">{{ change.get_new_status_display }}</c-gamestatus> (<a href="{% url 'edit_statuschange' change.id %}">Edit</a>, <a href="{% url 'delete_statuschange' change.id %}">Delete</a>)</li>
{% if change.timestamp %}{{ change.timestamp | date:"d/m/Y H:i" }}: Changed{% else %}At some point changed{% endif %} status from <c-gamestatus :status="change.old_status">{{ change.get_old_status_display }}</c-gamestatus> to <c-gamestatus :status="change.new_status">{{ change.get_new_status_display }}</c-gamestatus> (<a href="{% url 'games:edit_statuschange' change.id %}">Edit</a>, <a href="{% url 'games:delete_statuschange' change.id %}">Delete</a>)</li>
{% endfor %}
</ul>
@@ -5,7 +5,7 @@
<p class="dark:text-white text-center mt-5">
Are you sure you want to mark this purchase as refunded?
</p>
<form class="" hx-post="{% url 'refund_purchase' purchase_id %}" hx-target="#purchase-row-{{ purchase_id }}" hx-swap="outerHTML">
<form class="" hx-post="{% url 'games:refund_purchase' purchase_id %}" hx-target="#purchase-row-{{ purchase_id }}" hx-swap="outerHTML">
{% csrf_token %}
<div class="mt-5 text-center">
<label class="flex flex-row items-center justify-center align-baseline gap-5">
+4 -4
View File
@@ -68,7 +68,7 @@
>
<span class="uppercase">Played</span>
<div class="inline-flex rounded-md shadow-2xs" role="group" x-data="{ played: {{ game.playevents.count }} }">
<a href="{% url 'add_playevent' %}">
<a href="{% url 'games:add_playevent' %}">
<button type="button" class="px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-s-lg hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-blue-500 dark:focus:text-white hover:cursor-pointer">
<span x-text="played"></span> times
</button>
@@ -83,7 +83,7 @@
class=""
>
<li class="px-4 py-2 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-blue-500 dark:focus:text-white rounded-tr-md">
<a href="{% url 'add_playevent_for_game' game.id %}">Add playthrough...</a>
<a href="{% url 'games:add_playevent_for_game' game.id %}">Add playthrough...</a>
</li>
<li
x-on:click="createPlayEvent"
@@ -121,13 +121,13 @@
</div>
</div>
<div class="inline-flex rounded-md shadow-xs mb-3" role="group">
<a href="{% url 'edit_game' game.id %}">
<a href="{% url 'games:edit_game' game.id %}">
<button type="button"
class="px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-s-lg hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-blue-500 dark:focus:text-white hover:cursor-pointer">
Edit
</button>
</a>
<a href="{% url 'delete_game' game.id %}">
<a href="{% url 'games:delete_game' game.id %}">
<button type="button"
class="px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-e-lg hover:bg-red-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-red-700 dark:focus:ring-blue-500 dark:focus:text-white hover:cursor-pointer">
Delete
+2 -2
View File
@@ -15,13 +15,13 @@
</span>
</span>
<div class="inline-flex rounded-md shadow-xs mb-3" role="group">
<a href="{% url 'edit_purchase' purchase.id %}">
<a href="{% url 'games:edit_purchase' purchase.id %}">
<button type="button"
class="px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-s-lg hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-blue-500 dark:focus:text-white">
Edit
</button>
</a>
<a href="{% url 'delete_purchase' purchase.id %}">
<a href="{% url 'games:delete_purchase' purchase.id %}">
<button type="button"
class="px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-e-lg hover:bg-red-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-800 dark:border-gray-700 dark:text-white dark:hover:text-white dark:hover:bg-red-700 dark:focus:ring-blue-500 dark:focus:text-white">
Delete
+2
View File
@@ -1,5 +1,7 @@
from django.urls import path
app_name = "games"
from games.api import api
from games.views import (
device,
+6 -6
View File
@@ -36,7 +36,7 @@ def list_devices(request: HttpRequest) -> HttpResponse:
else None
),
"data": {
"header_action": A([], Button([], "Add device"), url_name="add_device"),
"header_action": A([], Button([], "Add device"), url_name="games:add_device"),
"columns": [
"Name",
"Type",
@@ -53,12 +53,12 @@ def list_devices(request: HttpRequest) -> HttpResponse:
{
"buttons": [
{
"href": reverse("edit_device", args=[device.pk]),
"href": reverse("games:edit_device", args=[device.pk]),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse("delete_device", args=[device.pk]),
"href": reverse("games:delete_device", args=[device.pk]),
"slot": Icon("delete"),
"color": "red",
},
@@ -79,7 +79,7 @@ def edit_device(request: HttpRequest, device_id: int = 0) -> HttpResponse:
form = DeviceForm(request.POST or None, instance=device)
if form.is_valid():
form.save()
return redirect("list_devices")
return redirect("games:list_devices")
context: dict[str, Any] = {"form": form, "title": "Edit device"}
return render(request, "add.html", context)
@@ -89,7 +89,7 @@ def edit_device(request: HttpRequest, device_id: int = 0) -> HttpResponse:
def delete_device(request: HttpRequest, device_id: int) -> HttpResponse:
device = get_object_or_404(Device, id=device_id)
device.delete()
return redirect("list_sessions")
return redirect("games:list_sessions")
@login_required
@@ -98,7 +98,7 @@ def add_device(request: HttpRequest) -> HttpResponse:
form = DeviceForm(request.POST or None)
if form.is_valid():
form.save()
return redirect("index")
return redirect("games:index")
context["form"] = form
context["title"] = "Add New Device"
+14 -14
View File
@@ -89,7 +89,7 @@ def list_games(request: HttpRequest, search_string: str = "") -> HttpResponse:
)
]
),
A([], Button([], "Add game"), url_name="add_game"),
A([], Button([], "Add game"), url_name="games:add_game"),
],
attributes=[("class", "flex justify-between")],
),
@@ -126,12 +126,12 @@ def list_games(request: HttpRequest, search_string: str = "") -> HttpResponse:
{
"buttons": [
{
"href": reverse("edit_game", args=[game.pk]),
"href": reverse("games:edit_game", args=[game.pk]),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse("delete_game", args=[game.pk]),
"href": reverse("games:delete_game", args=[game.pk]),
"slot": Icon("delete"),
"color": "red",
},
@@ -154,10 +154,10 @@ def add_game(request: HttpRequest) -> HttpResponse:
game = form.save()
if "submit_and_redirect" in request.POST:
return HttpResponseRedirect(
reverse("add_purchase_for_game", kwargs={"game_id": game.id})
reverse("games:add_purchase_for_game", kwargs={"game_id": game.id})
)
else:
return redirect("list_games")
return redirect("games:list_games")
context["form"] = form
context["title"] = "Add New Game"
@@ -169,7 +169,7 @@ def add_game(request: HttpRequest) -> HttpResponse:
def delete_game(request: HttpRequest, game_id: int) -> HttpResponse:
game = get_object_or_404(Game, id=game_id)
game.delete()
return redirect("list_sessions")
return redirect("games:list_sessions")
@login_required
@@ -180,7 +180,7 @@ def edit_game(request: HttpRequest, game_id: int) -> HttpResponse:
form = GameForm(request.POST or None, instance=purchase)
if form.is_valid():
form.save()
return redirect("list_sessions")
return redirect("games:list_sessions")
context["title"] = "Edit Game"
context["form"] = form
return render(request, "add.html", context)
@@ -242,12 +242,12 @@ def view_game(request: HttpRequest, game_id: int) -> HttpResponse:
{
"buttons": [
{
"href": reverse("edit_purchase", args=[purchase.pk]),
"href": reverse("games:edit_purchase", args=[purchase.pk]),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse("delete_purchase", args=[purchase.pk]),
"href": reverse("games:delete_purchase", args=[purchase.pk]),
"slot": Icon("delete"),
"color": "red",
},
@@ -274,7 +274,7 @@ def view_game(request: HttpRequest, game_id: int) -> HttpResponse:
"header_action": Div(
children=[
A(
url_name="add_session",
url_name="games:add_session",
children=Button(
icon=True,
size="xs",
@@ -283,7 +283,7 @@ def view_game(request: HttpRequest, game_id: int) -> HttpResponse:
),
A(
href=reverse(
"list_sessions_start_session_from_session",
"games:list_sessions_start_session_from_session",
args=[last_session.pk],
),
children=Popover(
@@ -317,7 +317,7 @@ def view_game(request: HttpRequest, game_id: int) -> HttpResponse:
"buttons": [
{
"href": reverse(
"list_sessions_end_session", args=[session.pk]
"games:list_sessions_end_session", args=[session.pk]
),
"slot": Icon("end"),
"title": "Finish session now",
@@ -331,12 +331,12 @@ def view_game(request: HttpRequest, game_id: int) -> HttpResponse:
# in the button group component
else {},
{
"href": reverse("edit_session", args=[session.pk]),
"href": reverse("games:edit_session", args=[session.pk]),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse("delete_session", args=[session.pk]),
"href": reverse("games:delete_session", args=[session.pk]),
"slot": Icon("delete"),
"color": "red",
},
+3 -3
View File
@@ -257,9 +257,9 @@ def stats_alltime(request: HttpRequest) -> HttpResponse:
def stats(request: HttpRequest, year: int = 0) -> HttpResponse:
selected_year = request.GET.get("year")
if selected_year:
return HttpResponseRedirect(reverse("stats_by_year", args=[selected_year]))
return HttpResponseRedirect(reverse("games:stats_by_year", args=[selected_year]))
if year == 0:
return HttpResponseRedirect(reverse("stats_alltime"))
return HttpResponseRedirect(reverse("games:stats_alltime"))
this_year_sessions = Session.objects.filter(
timestamp_start__year=year
).prefetch_related("game")
@@ -512,4 +512,4 @@ def stats(request: HttpRequest, year: int = 0) -> HttpResponse:
@login_required
def index(request: HttpRequest) -> HttpResponse:
return redirect("list_sessions")
return redirect("games:list_sessions")
+6 -6
View File
@@ -37,7 +37,7 @@ def list_platforms(request: HttpRequest) -> HttpResponse:
else None
),
"data": {
"header_action": A([], Button([], "Add platform"), url_name="add_platform"),
"header_action": A([], Button([], "Add platform"), url_name="games:add_platform"),
"columns": [
"Name",
"Icon",
@@ -57,14 +57,14 @@ def list_platforms(request: HttpRequest) -> HttpResponse:
"buttons": [
{
"href": reverse(
"edit_platform", args=[platform.pk]
"games:edit_platform", args=[platform.pk]
),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse(
"delete_platform", args=[platform.pk]
"games:delete_platform", args=[platform.pk]
),
"slot": Icon("delete"),
"color": "red",
@@ -84,7 +84,7 @@ def list_platforms(request: HttpRequest) -> HttpResponse:
def delete_platform(request: HttpRequest, platform_id: int) -> HttpResponse:
platform = get_object_or_404(Platform, id=platform_id)
platform.delete()
return redirect("list_platforms")
return redirect("games:list_platforms")
@login_required
@@ -95,7 +95,7 @@ def edit_platform(request: HttpRequest, platform_id: int) -> HttpResponse:
form = PlatformForm(request.POST or None, instance=platform)
if form.is_valid():
form.save()
return redirect("list_platforms")
return redirect("games:list_platforms")
context["title"] = "Edit Platform"
context["form"] = form
return render(request, "add.html", context)
@@ -107,7 +107,7 @@ def add_platform(request: HttpRequest) -> HttpResponse:
form = PlatformForm(request.POST or None)
if form.is_valid():
form.save()
return redirect("index")
return redirect("games:index")
context["form"] = form
context["title"] = "Add New Platform"
+5 -5
View File
@@ -58,12 +58,12 @@ def create_playevent_tabledata(
{
"buttons": [
{
"href": reverse("edit_playevent", args=[playevent.pk]),
"href": reverse("games:edit_playevent", args=[playevent.pk]),
"slot": Icon("edit"),
"color": "gray",
},
{
"href": reverse("delete_playevent", args=[playevent.pk]),
"href": reverse("games:delete_playevent", args=[playevent.pk]),
"slot": Icon("delete"),
"color": "red",
},
@@ -78,7 +78,7 @@ def create_playevent_tabledata(
for row in row_list
]
return {
"header_action": A([], Button([], "Add play event"), url_name="add_playevent"),
"header_action": A([], Button([], "Add play event"), url_name="games:add_playevent"),
"columns": list(filtered_column_list),
"rows": filtered_row_list,
}
@@ -194,7 +194,7 @@ def add_playevent(request: HttpRequest, game_id: int = 0) -> HttpResponse:
if not game_id:
# coming from add_playevent url path
game_id = form.instance.game.id
return HttpResponseRedirect(reverse("view_game", args=[game_id]))
return HttpResponseRedirect(reverse("games:view_game", args=[game_id]))
return render(request, "add.html", {"form": form, "title": "Add new playthrough"})
@@ -205,7 +205,7 @@ def edit_playevent(request: HttpRequest, playevent_id: int) -> HttpResponse:
form = PlayEventForm(request.POST or None, instance=playevent)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse("view_game", args=[playevent.game.id]))
return HttpResponseRedirect(reverse("games:view_game", args=[playevent.game.id]))
context = {
"form": form,
+10 -10
View File
@@ -30,7 +30,7 @@ def _render_purchase_buttons(purchase_id, is_refunded):
{
"href": "#",
"hx_get": reverse(
"refund_purchase_confirmation",
"games:refund_purchase_confirmation",
args=[purchase_id],
),
"hx_target": "#global-modal-container",
@@ -40,13 +40,13 @@ def _render_purchase_buttons(purchase_id, is_refunded):
if not is_refunded
else {},
{
"href": reverse("edit_purchase", args=[purchase_id]),
"href": reverse("games:edit_purchase", args=[purchase_id]),
"slot": Icon("edit"),
"title": "Edit",
"color": "gray",
},
{
"href": reverse("delete_purchase", args=[purchase_id]),
"href": reverse("games:delete_purchase", args=[purchase_id]),
"slot": Icon("delete"),
"title": "Delete",
"color": "red",
@@ -100,7 +100,7 @@ def list_purchases(request: HttpRequest) -> HttpResponse:
else None
),
"data": {
"header_action": A([], Button([], "Add purchase"), url_name="add_purchase"),
"header_action": A([], Button([], "Add purchase"), url_name="games:add_purchase"),
"columns": [
"Name",
"Type",
@@ -129,12 +129,12 @@ def add_purchase(request: HttpRequest, game_id: int = 0) -> HttpResponse:
if "submit_and_redirect" in request.POST:
return HttpResponseRedirect(
reverse(
"add_session_for_game",
"games:add_session_for_game",
kwargs={"game_id": purchase.first_game.id},
)
)
else:
return redirect("list_purchases")
return redirect("games:list_purchases")
else:
if game_id:
game = Game.objects.get(id=game_id)
@@ -162,7 +162,7 @@ def edit_purchase(request: HttpRequest, purchase_id: int) -> HttpResponse:
form = PurchaseForm(request.POST or None, instance=purchase)
if form.is_valid():
form.save()
return redirect("list_sessions")
return redirect("games:list_sessions")
context["title"] = "Edit Purchase"
context["form"] = form
context["purchase_id"] = str(purchase_id)
@@ -174,7 +174,7 @@ def edit_purchase(request: HttpRequest, purchase_id: int) -> HttpResponse:
def delete_purchase(request: HttpRequest, purchase_id: int) -> HttpResponse:
purchase = get_object_or_404(Purchase, id=purchase_id)
purchase.delete()
return redirect("list_purchases")
return redirect("games:list_purchases")
@login_required
@@ -192,7 +192,7 @@ def drop_purchase(request: HttpRequest, purchase_id: int) -> HttpResponse:
purchase = get_object_or_404(Purchase, id=purchase_id)
purchase.date_dropped = timezone.now()
purchase.save()
return redirect("list_purchases")
return redirect("games:list_purchases")
@login_required
@@ -235,7 +235,7 @@ def finish_purchase(request: HttpRequest, purchase_id: int) -> HttpResponse:
purchase = get_object_or_404(Purchase, id=purchase_id)
purchase.date_finished = timezone.now()
purchase.save()
return redirect("list_purchases")
return redirect("games:list_purchases")
def related_purchase_by_game(request: HttpRequest) -> HttpResponse:
+11 -11
View File
@@ -81,7 +81,7 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
Div(
children=[
A(
url_name="add_session",
url_name="games:add_session",
children=Button(
icon=True,
size="xs",
@@ -90,7 +90,7 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
),
A(
href=reverse(
"list_sessions_start_session_from_session",
"games:list_sessions_start_session_from_session",
args=[last_session.pk],
),
children=Popover(
@@ -150,7 +150,7 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
"buttons": [
{
"href": reverse(
"list_sessions_end_session", args=[session.pk]
"games:list_sessions_end_session", args=[session.pk]
),
"slot": Icon("end"),
"title": "Finish session now",
@@ -164,7 +164,7 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
# in the button group component
else {},
{
"href": reverse("edit_session", args=[session.pk]),
"href": reverse("games:edit_session", args=[session.pk]),
"slot": Icon("edit"),
"title": "Edit",
# "color": "gray",
@@ -172,7 +172,7 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
},
{
"href": reverse(
"delete_session", args=[session.pk]
"games:delete_session", args=[session.pk]
),
"slot": Icon("delete"),
"title": "Delete",
@@ -209,7 +209,7 @@ def add_session(request: HttpRequest, game_id: int = 0) -> HttpResponse:
form = SessionForm(request.POST or None, initial=initial)
if form.is_valid():
form.save()
return redirect("list_sessions")
return redirect("games:list_sessions")
else:
if game_id:
game = Game.objects.get(id=game_id)
@@ -236,7 +236,7 @@ def edit_session(request: HttpRequest, session_id: int) -> HttpResponse:
form = SessionForm(request.POST or None, instance=session)
if form.is_valid():
form.save()
return redirect("list_sessions")
return redirect("games:list_sessions")
context["title"] = "Edit Session"
context["script_name"] = "add_session.js"
context["form"] = form
@@ -265,7 +265,7 @@ def new_session_from_existing_session(
"session_count": int(request.GET.get("session_count", 0)) + 1,
}
return render(request, template, context)
return redirect("list_sessions")
return redirect("games:list_sessions")
@login_required
@@ -281,18 +281,18 @@ def end_session(
"session_count": request.GET.get("session_count", 0),
}
return render(request, template, context)
return redirect("list_sessions")
return redirect("games:list_sessions")
@login_required
def delete_session(request: HttpRequest, session_id: int = 0) -> HttpResponse:
session = get_object_or_404(Session, id=session_id)
session.delete()
return redirect("list_sessions")
return redirect("games:list_sessions")
@login_required
def delete_session(request: HttpRequest, session_id: int = 0) -> HttpResponse:
session = get_object_or_404(Session, id=session_id)
session.delete()
return redirect("list_sessions")
return redirect("games:list_sessions")
+3 -3
View File
@@ -17,7 +17,7 @@ class EditStatusChangeView(LoginRequiredMixin, UpdateView):
return get_object_or_404(GameStatusChange, id=self.kwargs["statuschange_id"])
def get_success_url(self):
return reverse_lazy("list_platforms")
return reverse_lazy("games:list_platforms")
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -31,7 +31,7 @@ class AddStatusChangeView(LoginRequiredMixin, CreateView):
template_name = "add.html"
def get_success_url(self):
return reverse_lazy("view_game", kwargs={"pk": self.object.game.id})
return reverse_lazy("games:view_game", kwargs={"pk": self.object.game.id})
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -54,4 +54,4 @@ class GameStatusChangeDeleteView(LoginRequiredMixin, DeleteView):
template_name = "gamestatuschange_confirm_delete.html"
def get_success_url(self):
return reverse_lazy("view_game", kwargs={"game_id": self.object.game.id})
return reverse_lazy("games:view_game", kwargs={"game_id": self.object.game.id})