aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/models/user.py2
-rw-r--r--fietsboek/pages.py10
-rw-r--r--fietsboek/updater/__init__.py4
3 files changed, 11 insertions, 5 deletions
diff --git a/fietsboek/models/user.py b/fietsboek/models/user.py
index d4b5491..3a267d8 100644
--- a/fietsboek/models/user.py
+++ b/fietsboek/models/user.py
@@ -227,7 +227,7 @@ class User(Base):
queries.append(select(Track).where(Track.visibility == Visibility.LOGGED_IN))
# Step 4: Friends' tracks
if user:
- friend_query = user._friend_query()
+ friend_query = user._friend_query().subquery()
friend_ids = select(friend_query.c.id)
queries.append(
select(Track)
diff --git a/fietsboek/pages.py b/fietsboek/pages.py
index 5556038..e94a493 100644
--- a/fietsboek/pages.py
+++ b/fietsboek/pages.py
@@ -1,5 +1,4 @@
"""Module containing logic to support "static" pages."""
-import bisect
import enum
import re
@@ -147,7 +146,14 @@ class Pages:
page = Page.parse(source)
except PageException as exc:
raise PageException(f"Error reading `{path}`: {exc}") from None
- bisect.insort(self.collection, page, key=lambda page: page.menu_index)
+ # The following could be done "more efficiently", but bisect.insort
+ # only supports the key argument starting from Python 3.10. Since we
+ # assume that the amount of pages is (very) anyway, and the pages are
+ # loaded at application startup, it is not worth trying to come up with
+ # clever solutions here. Just do the ovious thing and re-sort the list
+ # after every insertion.
+ self.collection.append(page)
+ self.collection.sort(key=lambda page: page.menu_index)
def load_directory(self, path):
"""Load a directory full of pages.
diff --git a/fietsboek/updater/__init__.py b/fietsboek/updater/__init__.py
index 7878f8e..a5bcf0e 100644
--- a/fietsboek/updater/__init__.py
+++ b/fietsboek/updater/__init__.py
@@ -109,7 +109,7 @@ class Updater:
:return: The versions, or an empty list if no versions are found.
"""
try:
- versions = self.version_file.read_text().split("\n")
+ versions = self.version_file.read_text(encoding="utf-8").split("\n")
return [version.strip() for version in versions if version.strip()]
except FileNotFoundError:
return []
@@ -136,7 +136,7 @@ class Updater:
:param version: The versions to stamp.
:type version: list[str]
"""
- self.version_file.write_text("\n".join(versions))
+ self.version_file.write_text("\n".join(versions), encoding="utf-8")
def _pick_updates(self, wanted, applied, dependencies):
to_apply = set()