From 6bc406b70d547a4fcb85cfdae038b878a2afbd2f Mon Sep 17 00:00:00 2001 From: Frederik Baerentsen Date: Wed, 17 Sep 2025 16:49:53 +0200 Subject: [PATCH] Fixed broken wishlist page --- bricktracker/rebrickable_set_list.py | 19 +++++++------------ bricktracker/record_list.py | 10 ++++------ bricktracker/wish_list.py | 15 +++++++++++---- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/bricktracker/rebrickable_set_list.py b/bricktracker/rebrickable_set_list.py index 0db84b7..6eabd5f 100644 --- a/bricktracker/rebrickable_set_list.py +++ b/bricktracker/rebrickable_set_list.py @@ -11,24 +11,19 @@ class RebrickableSetList(BrickRecordList[RebrickableSet]): select_query: str = 'rebrickable/set/list' refresh_query: str = 'rebrickable/set/need_refresh' - # All the sets - def all(self, /) -> Self: + # Implementation of abstract list method + def list(self, /, *, override_query: str | None = None, **context) -> None: # Load the sets from the database - for record in self.select(): + for record in self.select(override_query=override_query, **context): rebrickable_set = RebrickableSet(record=record) - self.records.append(rebrickable_set) + # All the sets + def all(self, /) -> Self: + self.list() return self # Sets needing refresh def need_refresh(self, /) -> Self: - # Load the sets from the database - for record in self.select( - override_query=self.refresh_query - ): - rebrickable_set = RebrickableSet(record=record) - - self.records.append(rebrickable_set) - + self.list(override_query=self.refresh_query) return self diff --git a/bricktracker/record_list.py b/bricktracker/record_list.py index 181de22..c4bfefa 100644 --- a/bricktracker/record_list.py +++ b/bricktracker/record_list.py @@ -1,4 +1,3 @@ -from abc import ABC, abstractmethod from sqlite3 import Row from typing import Any, Generator, Generic, ItemsView, Self, TypeVar, TYPE_CHECKING @@ -34,7 +33,7 @@ T = TypeVar( # SQLite records -class BrickRecordList(Generic[T], ABC): +class BrickRecordList(Generic[T]): select_query: str records: list[T] @@ -147,8 +146,7 @@ class BrickRecordList(Generic[T], ABC): return self, total_count - # Abstract method that subclasses must implement - @abstractmethod + # Base method that subclasses can override def list( self, /, @@ -156,8 +154,8 @@ class BrickRecordList(Generic[T], ABC): override_query: str | None = None, **context: Any, ) -> None: - """Load records from database - must be implemented by subclasses""" - pass + """Load records from database - should be implemented by subclasses that use pagination""" + raise NotImplementedError("Subclass must implement list() method") # Generic SQL parameters from fields def sql_parameters(self, /) -> dict[str, Any]: diff --git a/bricktracker/wish_list.py b/bricktracker/wish_list.py index d3038b8..e3a31ac 100644 --- a/bricktracker/wish_list.py +++ b/bricktracker/wish_list.py @@ -19,17 +19,24 @@ class BrickWishList(BrickRecordList[BrickWish]): # Queries select_query: str = 'wish/list/all' - # All the wished sets - def all(self, /) -> Self: + # Implementation of abstract list method + def list(self, /, *, override_query: str | None = None, **context) -> None: + # Use provided order or default + order = context.pop('order', current_app.config['WISHES_DEFAULT_ORDER']) + # Load the wished sets from the database for record in self.select( - order=current_app.config['WISHES_DEFAULT_ORDER'], + override_query=override_query, + order=order, owners=BrickWishOwnerList.as_columns(), + **context ): brickwish = BrickWish(record=record) - self.records.append(brickwish) + # All the wished sets + def all(self, /) -> Self: + self.list() return self # Add a set to the wishlist