Merge pull request #54 from KucharczykL/feat/issue-33-reset-session-start

feat(session): reset running session start time to now (#33)
This commit is contained in:
2026-06-20 20:48:19 +02:00
committed by GitHub
7 changed files with 285 additions and 2 deletions
+33 -1
View File
@@ -144,6 +144,24 @@ def list_sessions(request: HttpRequest, search_string: str = "") -> HttpResponse
}
if session.timestamp_end is None
else {},
{
"href": reverse(
"games:list_sessions_reset_session_start",
args=[session.pk],
),
"hx_get": reverse(
"games:list_sessions_reset_session_start",
args=[session.pk],
),
"hx_confirm": (
"Reset this session's start time to now?"
),
"slot": Icon("reset"),
"title": "Reset start to now",
"color": "gray",
}
if session.timestamp_end is None
else {},
{
"href": reverse(
"games:edit_session", args=[session.pk]
@@ -234,7 +252,7 @@ def add_session(request: HttpRequest, game_id: int = 0) -> HttpResponse:
return redirect("games:list_sessions")
else:
if game_id:
game = Game.objects.get(id=game_id)
game = get_object_or_404(Game, id=game_id)
form = SessionForm(
initial={
**initial,
@@ -379,6 +397,20 @@ def end_session(request: HttpRequest, session_id: int) -> HttpResponse:
return redirect("games:list_sessions")
@login_required
def reset_session_start(request: HttpRequest, session_id: int) -> HttpResponse:
session = get_object_or_404(Session, id=session_id)
session.timestamp_start = timezone.now()
session.save()
if request.htmx:
# The list table is rebuilt server-side per request; a full refresh
# avoids swapping in a row fragment whose layout could drift from it.
response = HttpResponse(status=204)
response["HX-Refresh"] = "true"
return response
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)