diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2025-12-28 21:04:44 +0100 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2025-12-30 19:16:32 +0100 |
| commit | aeab3749f487755001d11c20c714cf6f6d82e53f (patch) | |
| tree | d65da155a3686e6e093181d3c173bf270c9ed069 | |
| parent | a6c74f3422a61cdb4814f6daf3b2289a5e8f47aa (diff) | |
| download | fietsboek-aeab3749f487755001d11c20c714cf6f6d82e53f.tar.gz fietsboek-aeab3749f487755001d11c20c714cf6f6d82e53f.tar.bz2 fietsboek-aeab3749f487755001d11c20c714cf6f6d82e53f.zip | |
fix types
| -rw-r--r-- | fietsboek/models/journey.py | 9 | ||||
| -rw-r--r-- | fietsboek/models/user.py | 9 | ||||
| -rw-r--r-- | fietsboek/views/browse.py | 2 |
3 files changed, 11 insertions, 9 deletions
diff --git a/fietsboek/models/journey.py b/fietsboek/models/journey.py index f726efd..89bf0d2 100644 --- a/fietsboek/models/journey.py +++ b/fietsboek/models/journey.py @@ -138,15 +138,16 @@ class Journey(Base): :param track_ids: The IDs of the tracks that should be in this journey. """ session = inspect(self).session - stmt = delete(journey_track_assoc).where(journey_track_assoc.c.journey_id == self.id) - session.execute(stmt) + assert session is not None, "Can only use set_track_ids() if journey is in a session" + del_stmt = delete(journey_track_assoc).where(journey_track_assoc.c.journey_id == self.id) + session.execute(del_stmt) for index, track_id in enumerate(track_ids, 1): - stmt = insert(journey_track_assoc).values( + ins_stmt = insert(journey_track_assoc).values( journey_id=self.id, track_id=track_id, sort_index=index, ) - session.execute(stmt) + session.execute(ins_stmt) def path(self) -> geo.Path: """Returns the concatenated path of all contained tracks.""" diff --git a/fietsboek/models/user.py b/fietsboek/models/user.py index 6d1a53e..45bc8d5 100644 --- a/fietsboek/models/user.py +++ b/fietsboek/models/user.py @@ -6,7 +6,7 @@ import hashlib import secrets import uuid from functools import reduce -from typing import TYPE_CHECKING, Optional, Self +from typing import TYPE_CHECKING, Optional from cryptography.exceptions import InvalidKey from cryptography.hazmat.primitives.kdf.scrypt import Scrypt @@ -34,13 +34,14 @@ from sqlalchemy.exc import NoResultFound from sqlalchemy.orm import Mapped, Session, mapped_column, relationship, with_parent from sqlalchemy.orm.attributes import flag_dirty from sqlalchemy.orm.session import object_session -from sqlalchemy.sql.expression import Selectable +from sqlalchemy.sql.expression import CompoundSelect from .meta import Base if TYPE_CHECKING: from .comment import Comment from .track import Track, Upload + from .journey import Journey class PasswordMismatch(Exception): @@ -140,7 +141,7 @@ class User(Base): comments: Mapped[list["Comment"]] = relationship( "Comment", back_populates="author", cascade="all, delete-orphan" ) - journeys: Mapped[list["models.Journey"]] = relationship( + journeys: Mapped[list["Journey"]] = relationship( "Journey", back_populates="owner", ) @@ -400,7 +401,7 @@ class User(Base): return union(*queries) @staticmethod - def visible_journeys_query(user: Self | None = None) -> Selectable: + def visible_journeys_query(user: Optional["User"] = None) -> CompoundSelect: # Late import to avoid cycles # pylint: disable=import-outside-toplevel from .journey import Journey, Visibility diff --git a/fietsboek/views/browse.py b/fietsboek/views/browse.py index 5f8bce4..e2742ad 100644 --- a/fietsboek/views/browse.py +++ b/fietsboek/views/browse.py @@ -509,7 +509,7 @@ def browse(request: Request) -> Response: { "id": track.id, "title": track.title, - "date": track.date.timestamp(), + "date": (track.date or datetime.datetime.fromtimestamp(0)).timestamp(), "length": track.length, } for track in tracks |
