diff --git a/bricktracker/reload.py b/bricktracker/reload.py index 16fca2f..6673ab1 100644 --- a/bricktracker/reload.py +++ b/bricktracker/reload.py @@ -1,10 +1,7 @@ from .instructions_list import BrickInstructionsList from .retired_list import BrickRetiredList -from .set_owner import BrickSetOwner from .set_owner_list import BrickSetOwnerList -from .set_status import BrickSetStatus from .set_status_list import BrickSetStatusList -from .set_tag import BrickSetTag from .set_tag_list import BrickSetTagList from .theme_list import BrickThemeList @@ -17,13 +14,13 @@ def reload() -> None: BrickInstructionsList(force=True) # Reload the set owners - BrickSetOwnerList(BrickSetOwner, force=True) + BrickSetOwnerList.new(force=True) # Reload the set statuses - BrickSetStatusList(BrickSetStatus, force=True) + BrickSetStatusList.new(force=True) # Reload the set tags - BrickSetTagList(BrickSetTag, force=True) + BrickSetTagList.new(force=True) # Reload retired sets BrickRetiredList(force=True) diff --git a/bricktracker/set.py b/bricktracker/set.py index 000047d..09b22ec 100644 --- a/bricktracker/set.py +++ b/bricktracker/set.py @@ -9,11 +9,8 @@ from .exceptions import NotFoundException from .minifigure_list import BrickMinifigureList from .part_list import BrickPartList from .rebrickable_set import RebrickableSet -from .set_owner import BrickSetOwner from .set_owner_list import BrickSetOwnerList -from .set_status import BrickSetStatus from .set_status_list import BrickSetStatusList -from .set_tag import BrickSetTag from .set_tag_list import BrickSetTagList from .sql import BrickSQL if TYPE_CHECKING: @@ -169,9 +166,9 @@ class BrickSet(RebrickableSet): # Load from database if not self.select( - owners=BrickSetOwnerList(BrickSetOwner).as_columns(), - statuses=BrickSetStatusList(BrickSetStatus).as_columns(all=True), - tags=BrickSetTagList(BrickSetTag).as_columns(), + owners=BrickSetOwnerList.new().as_columns(), + statuses=BrickSetStatusList.new().as_columns(all=True), + tags=BrickSetTagList.new().as_columns(), ): raise NotFoundException( 'Set with ID {id} was not found in the database'.format( diff --git a/bricktracker/set_list.py b/bricktracker/set_list.py index d538daa..28d8153 100644 --- a/bricktracker/set_list.py +++ b/bricktracker/set_list.py @@ -3,11 +3,8 @@ from typing import Self from flask import current_app from .record_list import BrickRecordList -from .set_owner import BrickSetOwner from .set_owner_list import BrickSetOwnerList -from .set_status import BrickSetStatus from .set_status_list import BrickSetStatusList -from .set_tag import BrickSetTag from .set_tag_list import BrickSetTagList from .set import BrickSet @@ -44,9 +41,9 @@ class BrickSetList(BrickRecordList[BrickSet]): # Load the sets from the database for record in self.select( order=self.order, - owners=BrickSetOwnerList(BrickSetOwner).as_columns(), - statuses=BrickSetStatusList(BrickSetStatus).as_columns(), - tags=BrickSetTagList(BrickSetTag).as_columns(), + owners=BrickSetOwnerList.new().as_columns(), + statuses=BrickSetStatusList.new().as_columns(), + tags=BrickSetTagList.new().as_columns(), ): brickset = BrickSet(record=record) @@ -115,9 +112,9 @@ class BrickSetList(BrickRecordList[BrickSet]): for record in self.select( order=order, limit=limit, - owners=BrickSetOwnerList(BrickSetOwner).as_columns(), - statuses=BrickSetStatusList(BrickSetStatus).as_columns(), - tags=BrickSetTagList(BrickSetTag).as_columns(), + owners=BrickSetOwnerList.new().as_columns(), + statuses=BrickSetStatusList.new().as_columns(), + tags=BrickSetTagList.new().as_columns(), ): brickset = BrickSet(record=record) diff --git a/bricktracker/set_owner_list.py b/bricktracker/set_owner_list.py index 1309749..7d3b8f5 100644 --- a/bricktracker/set_owner_list.py +++ b/bricktracker/set_owner_list.py @@ -1,4 +1,5 @@ import logging +from typing import Self from .metadata_list import BrickMetadataList from .set_owner import BrickSetOwner @@ -15,3 +16,8 @@ class BrickSetOwnerList(BrickMetadataList[BrickSetOwner]): # Queries select_query = 'set/metadata/owner/list' + + # Instantiate the list with the proper class + @classmethod + def new(cls, /, *, force: bool = False) -> Self: + return cls(BrickSetOwner, force=force) diff --git a/bricktracker/set_status_list.py b/bricktracker/set_status_list.py index dabd3b0..e238f62 100644 --- a/bricktracker/set_status_list.py +++ b/bricktracker/set_status_list.py @@ -1,4 +1,5 @@ import logging +from typing import Self from .metadata_list import BrickMetadataList from .set_status import BrickSetStatus @@ -24,3 +25,8 @@ class BrickSetStatusList(BrickMetadataList[BrickSetStatus]): in self.records if all or record.fields.displayed_on_grid ] + + # Instantiate the list with the proper class + @classmethod + def new(cls, /, *, force: bool = False) -> Self: + return cls(BrickSetStatus, force=force) diff --git a/bricktracker/set_tag_list.py b/bricktracker/set_tag_list.py index 92806f2..822ac3b 100644 --- a/bricktracker/set_tag_list.py +++ b/bricktracker/set_tag_list.py @@ -1,4 +1,5 @@ import logging +from typing import Self from .metadata_list import BrickMetadataList from .set_tag import BrickSetTag @@ -15,3 +16,8 @@ class BrickSetTagList(BrickMetadataList[BrickSetTag]): # Queries select_query = 'set/metadata/tag/list' + + # Instantiate the list with the proper class + @classmethod + def new(cls, /, *, force: bool = False) -> Self: + return cls(BrickSetTag, force=force) diff --git a/bricktracker/views/add.py b/bricktracker/views/add.py index 9072973..e77e7dd 100644 --- a/bricktracker/views/add.py +++ b/bricktracker/views/add.py @@ -3,9 +3,7 @@ from flask_login import login_required from ..configuration_list import BrickConfigurationList from .exceptions import exception_handler -from ..set_owner import BrickSetOwner from ..set_owner_list import BrickSetOwnerList -from ..set_tag import BrickSetTag from ..set_tag_list import BrickSetTagList from ..socket import MESSAGES @@ -21,8 +19,8 @@ def add() -> str: return render_template( 'add.html', - brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), - brickset_tags=BrickSetTagList(BrickSetTag).list(), + brickset_owners=BrickSetOwnerList.new().list(), + brickset_tags=BrickSetTagList.new().list(), path=current_app.config['SOCKET_PATH'], namespace=current_app.config['SOCKET_NAMESPACE'], messages=MESSAGES @@ -38,8 +36,8 @@ def bulk() -> str: return render_template( 'add.html', - brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), - brickset_tags=BrickSetTagList(BrickSetTag).list(), + brickset_owners=BrickSetOwnerList.new().list(), + brickset_tags=BrickSetTagList.new().list(), path=current_app.config['SOCKET_PATH'], namespace=current_app.config['SOCKET_NAMESPACE'], messages=MESSAGES, diff --git a/bricktracker/views/admin/admin.py b/bricktracker/views/admin/admin.py index 415cf48..c716b56 100644 --- a/bricktracker/views/admin/admin.py +++ b/bricktracker/views/admin/admin.py @@ -47,9 +47,9 @@ def admin() -> str: database_version = database.version database_counters = BrickSQL().count_records() - metadata_owners = BrickSetOwnerList(BrickSetOwner).list() - metadata_statuses = BrickSetStatusList(BrickSetStatus).list(all=True) - metadata_tags = BrickSetTagList(BrickSetTag).list() + metadata_owners = BrickSetOwnerList.new().list() + metadata_statuses = BrickSetStatusList.new().list(all=True) + metadata_tags = BrickSetTagList.new().list() except Exception as e: database_exception = e diff --git a/bricktracker/views/index.py b/bricktracker/views/index.py index 1cbcd56..0a25e07 100644 --- a/bricktracker/views/index.py +++ b/bricktracker/views/index.py @@ -2,11 +2,8 @@ from flask import Blueprint, render_template from .exceptions import exception_handler from ..minifigure_list import BrickMinifigureList -from ..set_owner import BrickSetOwner from ..set_owner_list import BrickSetOwnerList -from ..set_status import BrickSetStatus from ..set_status_list import BrickSetStatusList -from ..set_tag import BrickSetTag from ..set_tag_list import BrickSetTagList from ..set_list import BrickSetList @@ -20,8 +17,8 @@ def index() -> str: return render_template( 'index.html', brickset_collection=BrickSetList().last(), - brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), - brickset_statuses=BrickSetStatusList(BrickSetStatus).list(), - brickset_tags=BrickSetTagList(BrickSetTag).list(), + brickset_owners=BrickSetOwnerList.new().list(), + brickset_statuses=BrickSetStatusList.new().list(), + brickset_tags=BrickSetTagList.new().list(), minifigure_collection=BrickMinifigureList().last(), ) diff --git a/bricktracker/views/set.py b/bricktracker/views/set.py index add66d2..6d86bb1 100644 --- a/bricktracker/views/set.py +++ b/bricktracker/views/set.py @@ -17,11 +17,8 @@ from ..minifigure import BrickMinifigure from ..part import BrickPart from ..set import BrickSet from ..set_list import BrickSetList -from ..set_owner import BrickSetOwner from ..set_owner_list import BrickSetOwnerList -from ..set_status import BrickSetStatus from ..set_status_list import BrickSetStatusList -from ..set_tag import BrickSetTag from ..set_tag_list import BrickSetTagList from ..socket import MESSAGES @@ -37,9 +34,9 @@ def list() -> str: return render_template( 'sets.html', collection=BrickSetList().all(), - brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), - brickset_statuses=BrickSetStatusList(BrickSetStatus).list(), - brickset_tags=BrickSetTagList(BrickSetTag).list(), + brickset_owners=BrickSetOwnerList.new().list(), + brickset_statuses=BrickSetStatusList.new().list(), + brickset_tags=BrickSetTagList.new().list(), ) @@ -49,7 +46,7 @@ def list() -> str: @exception_handler(__file__, json=True) def update_owner(*, id: str, metadata_id: str) -> Response: brickset = BrickSet().select_light(id) - owner = BrickSetOwnerList(BrickSetOwner).get(metadata_id) + owner = BrickSetOwnerList.new().get(metadata_id) state = owner.update_set_state(brickset, json=request.json) @@ -62,7 +59,7 @@ def update_owner(*, id: str, metadata_id: str) -> Response: @exception_handler(__file__, json=True) def update_status(*, id: str, metadata_id: str) -> Response: brickset = BrickSet().select_light(id) - status = BrickSetStatusList(BrickSetStatus).get(metadata_id) + status = BrickSetStatusList.new().get(metadata_id) state = status.update_set_state(brickset, json=request.json) @@ -75,7 +72,7 @@ def update_status(*, id: str, metadata_id: str) -> Response: @exception_handler(__file__, json=True) def update_tag(*, id: str, metadata_id: str) -> Response: brickset = BrickSet().select_light(id) - tag = BrickSetTagList(BrickSetTag).get(metadata_id) + tag = BrickSetTagList.new().get(metadata_id) state = tag.update_set_state(brickset, json=request.json) @@ -130,9 +127,9 @@ def details(*, id: str) -> str: 'set.html', item=BrickSet().select_specific(id), open_instructions=request.args.get('open_instructions'), - brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), - brickset_statuses=BrickSetStatusList(BrickSetStatus).list(all=True), - brickset_tags=BrickSetTagList(BrickSetTag).list(), + brickset_owners=BrickSetOwnerList.new().list(), + brickset_statuses=BrickSetStatusList.new().list(all=True), + brickset_tags=BrickSetTagList.new().list(), )