From 0cf3411f6335be8fe8611d858189c450985a48fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 10 Jan 2024 15:12:45 +0100 Subject: [PATCH] Make ending session from session list faster --- CHANGELOG.md | 1 + games/templates/list_sessions.html | 77 +++++++++++++++--------------- games/views.py | 6 ++- poetry.lock | 19 +++++++- pyproject.toml | 5 +- 5 files changed, 62 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c98d5ed..4868406 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Improved * game overview: improve how editions and purchases are displayed * add purchase: only allow choosing purchases of selected edition +* session list: clicking the "End now?" link is not much faster ## 1.5.1 / 2023-11-14 21:10+01:00 diff --git a/games/templates/list_sessions.html b/games/templates/list_sessions.html index e3c29b9..6e80ac1 100644 --- a/games/templates/list_sessions.html +++ b/games/templates/list_sessions.html @@ -7,13 +7,13 @@ {% if dataset.count >= 1 %}
+ href="{% url 'start_session_same_as_last' last.id %}" + hx-get="{% url 'start_session_same_as_last' last.id %}" + hx-swap="afterbegin" + hx-target=".responsive-table tbody" + hx-select=".responsive-table tbody tr:first-child" + onClick="document.querySelector('#last-session-start').classList.add('invisible')" + class="{% if last.timestamp_end == null %}invisible{% endif %}"> {% include 'components/button_start.html' with text=last.purchase title="Start session of last played game" only %}
@@ -29,38 +29,37 @@ - {% for data in dataset %} - {% partialdef session-row inline=True %} - - - - {{ data.purchase.edition }} - - - - {{ data.timestamp_start | date:"d/m/Y H:i" }} - - - {% if data.unfinished %} - - Finish now? - - {% elif data.duration_manual %} - -- - {% else %} - {{ data.timestamp_end | date:"d/m/Y H:i" }} - {% endif %} - - {{ data.duration_formatted }} - - {% endpartialdef %} + {% for session in dataset %} + {% partialdef session-row inline=True %} + + + + {{ session.purchase.edition }} + + + + {{ session.timestamp_start | date:"d/m/Y H:i" }} + + + {% if session.unfinished %} + + Finish now? + + {% elif session.duration_manual %} + -- + {% else %} + {{ session.timestamp_end | date:"d/m/Y H:i" }} + {% endif %} + + {{ session.duration_formatted }} + + {% endpartialdef %} {% endfor %} diff --git a/games/views.py b/games/views.py index df34d2b..0f4ae4a 100644 --- a/games/views.py +++ b/games/views.py @@ -13,6 +13,7 @@ from django.http import ( from django.shortcuts import redirect, render from django.urls import reverse from django.utils import timezone +from django.shortcuts import get_object_or_404 from common.time import format_duration from common.utils import safe_division @@ -74,11 +75,12 @@ def add_session(request, purchase_id=None): def update_session(request, session_id=None): - session = Session.objects.get(id=session_id) + session = get_object_or_404(Session, id=session_id) session.finish_now() session.save() if request.htmx: - return render(request, "list_sessions.html#session-row") + context = {"session": session} + return render(request, "list_sessions.html#session-row", context) return redirect("list_sessions") diff --git a/poetry.lock b/poetry.lock index 32a5525..b0560bc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "aniso8601" @@ -172,6 +172,21 @@ files = [ [package.dependencies] Django = ">=3.2" +[[package]] +name = "django-htmx" +version = "1.17.2" +description = "Extensions for using Django with htmx." +optional = false +python-versions = ">=3.8" +files = [ + {file = "django-htmx-1.17.2.tar.gz", hash = "sha256:4089f2ed38727e9846c2f4cd1daddf6b010c7be8d834cfbcffc8c5ecf445c04e"}, + {file = "django_htmx-1.17.2-py3-none-any.whl", hash = "sha256:f4971432d2ca45dbb31d9b58add1c50ae54354afe4bf59cafd591b1711b502c0"}, +] + +[package.dependencies] +asgiref = ">=3.6" +Django = ">=3.2" + [[package]] name = "django-template-partials" version = "23.4" @@ -1005,4 +1020,4 @@ watchdog = ["watchdog (>=2.3)"] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "c9ce052c193fdf4cc4b22f0cd1f2368fae6bc9304c38c770843315f39fa08de4" +content-hash = "4662e73ad621b11cbe5b517ca08aae4cbeb350bfcc855a6c067861942e232d2a" diff --git a/pyproject.toml b/pyproject.toml index a8f3c18..a2ffae4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,8 @@ django = "^4.2.0" gunicorn = "^20.1.0" uvicorn = "^0.20.0" graphene-django = "^3.1.5" +django-htmx = "^1.17.2" +django-template-partials = "^23.4" [tool.poetry.group.dev.dependencies] black = "^22.12.0" @@ -28,9 +30,6 @@ pre-commit = "^3.5.0" django-debug-toolbar = "^4.2.0" -[tool.poetry.dependencies] -django-htmx = "^1.17.2" -django-template-partials = "^23.4" [tool.isort] profile = "black"