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
+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})