Simplify the instantiation of metadata list

This commit is contained in:
Gregoo 2025-02-03 12:25:42 +01:00
parent 2b37934503
commit 53d1603e3e
10 changed files with 49 additions and 48 deletions

View File

@ -1,10 +1,7 @@
from .instructions_list import BrickInstructionsList from .instructions_list import BrickInstructionsList
from .retired_list import BrickRetiredList from .retired_list import BrickRetiredList
from .set_owner import BrickSetOwner
from .set_owner_list import BrickSetOwnerList from .set_owner_list import BrickSetOwnerList
from .set_status import BrickSetStatus
from .set_status_list import BrickSetStatusList from .set_status_list import BrickSetStatusList
from .set_tag import BrickSetTag
from .set_tag_list import BrickSetTagList from .set_tag_list import BrickSetTagList
from .theme_list import BrickThemeList from .theme_list import BrickThemeList
@ -17,13 +14,13 @@ def reload() -> None:
BrickInstructionsList(force=True) BrickInstructionsList(force=True)
# Reload the set owners # Reload the set owners
BrickSetOwnerList(BrickSetOwner, force=True) BrickSetOwnerList.new(force=True)
# Reload the set statuses # Reload the set statuses
BrickSetStatusList(BrickSetStatus, force=True) BrickSetStatusList.new(force=True)
# Reload the set tags # Reload the set tags
BrickSetTagList(BrickSetTag, force=True) BrickSetTagList.new(force=True)
# Reload retired sets # Reload retired sets
BrickRetiredList(force=True) BrickRetiredList(force=True)

View File

@ -9,11 +9,8 @@ from .exceptions import NotFoundException
from .minifigure_list import BrickMinifigureList from .minifigure_list import BrickMinifigureList
from .part_list import BrickPartList from .part_list import BrickPartList
from .rebrickable_set import RebrickableSet from .rebrickable_set import RebrickableSet
from .set_owner import BrickSetOwner
from .set_owner_list import BrickSetOwnerList from .set_owner_list import BrickSetOwnerList
from .set_status import BrickSetStatus
from .set_status_list import BrickSetStatusList from .set_status_list import BrickSetStatusList
from .set_tag import BrickSetTag
from .set_tag_list import BrickSetTagList from .set_tag_list import BrickSetTagList
from .sql import BrickSQL from .sql import BrickSQL
if TYPE_CHECKING: if TYPE_CHECKING:
@ -169,9 +166,9 @@ class BrickSet(RebrickableSet):
# Load from database # Load from database
if not self.select( if not self.select(
owners=BrickSetOwnerList(BrickSetOwner).as_columns(), owners=BrickSetOwnerList.new().as_columns(),
statuses=BrickSetStatusList(BrickSetStatus).as_columns(all=True), statuses=BrickSetStatusList.new().as_columns(all=True),
tags=BrickSetTagList(BrickSetTag).as_columns(), tags=BrickSetTagList.new().as_columns(),
): ):
raise NotFoundException( raise NotFoundException(
'Set with ID {id} was not found in the database'.format( 'Set with ID {id} was not found in the database'.format(

View File

@ -3,11 +3,8 @@ from typing import Self
from flask import current_app from flask import current_app
from .record_list import BrickRecordList from .record_list import BrickRecordList
from .set_owner import BrickSetOwner
from .set_owner_list import BrickSetOwnerList from .set_owner_list import BrickSetOwnerList
from .set_status import BrickSetStatus
from .set_status_list import BrickSetStatusList from .set_status_list import BrickSetStatusList
from .set_tag import BrickSetTag
from .set_tag_list import BrickSetTagList from .set_tag_list import BrickSetTagList
from .set import BrickSet from .set import BrickSet
@ -44,9 +41,9 @@ class BrickSetList(BrickRecordList[BrickSet]):
# Load the sets from the database # Load the sets from the database
for record in self.select( for record in self.select(
order=self.order, order=self.order,
owners=BrickSetOwnerList(BrickSetOwner).as_columns(), owners=BrickSetOwnerList.new().as_columns(),
statuses=BrickSetStatusList(BrickSetStatus).as_columns(), statuses=BrickSetStatusList.new().as_columns(),
tags=BrickSetTagList(BrickSetTag).as_columns(), tags=BrickSetTagList.new().as_columns(),
): ):
brickset = BrickSet(record=record) brickset = BrickSet(record=record)
@ -115,9 +112,9 @@ class BrickSetList(BrickRecordList[BrickSet]):
for record in self.select( for record in self.select(
order=order, order=order,
limit=limit, limit=limit,
owners=BrickSetOwnerList(BrickSetOwner).as_columns(), owners=BrickSetOwnerList.new().as_columns(),
statuses=BrickSetStatusList(BrickSetStatus).as_columns(), statuses=BrickSetStatusList.new().as_columns(),
tags=BrickSetTagList(BrickSetTag).as_columns(), tags=BrickSetTagList.new().as_columns(),
): ):
brickset = BrickSet(record=record) brickset = BrickSet(record=record)

View File

@ -1,4 +1,5 @@
import logging import logging
from typing import Self
from .metadata_list import BrickMetadataList from .metadata_list import BrickMetadataList
from .set_owner import BrickSetOwner from .set_owner import BrickSetOwner
@ -15,3 +16,8 @@ class BrickSetOwnerList(BrickMetadataList[BrickSetOwner]):
# Queries # Queries
select_query = 'set/metadata/owner/list' 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)

View File

@ -1,4 +1,5 @@
import logging import logging
from typing import Self
from .metadata_list import BrickMetadataList from .metadata_list import BrickMetadataList
from .set_status import BrickSetStatus from .set_status import BrickSetStatus
@ -24,3 +25,8 @@ class BrickSetStatusList(BrickMetadataList[BrickSetStatus]):
in self.records in self.records
if all or record.fields.displayed_on_grid 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)

View File

@ -1,4 +1,5 @@
import logging import logging
from typing import Self
from .metadata_list import BrickMetadataList from .metadata_list import BrickMetadataList
from .set_tag import BrickSetTag from .set_tag import BrickSetTag
@ -15,3 +16,8 @@ class BrickSetTagList(BrickMetadataList[BrickSetTag]):
# Queries # Queries
select_query = 'set/metadata/tag/list' 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)

View File

@ -3,9 +3,7 @@ from flask_login import login_required
from ..configuration_list import BrickConfigurationList from ..configuration_list import BrickConfigurationList
from .exceptions import exception_handler from .exceptions import exception_handler
from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList from ..set_owner_list import BrickSetOwnerList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList from ..set_tag_list import BrickSetTagList
from ..socket import MESSAGES from ..socket import MESSAGES
@ -21,8 +19,8 @@ def add() -> str:
return render_template( return render_template(
'add.html', 'add.html',
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), brickset_owners=BrickSetOwnerList.new().list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(), brickset_tags=BrickSetTagList.new().list(),
path=current_app.config['SOCKET_PATH'], path=current_app.config['SOCKET_PATH'],
namespace=current_app.config['SOCKET_NAMESPACE'], namespace=current_app.config['SOCKET_NAMESPACE'],
messages=MESSAGES messages=MESSAGES
@ -38,8 +36,8 @@ def bulk() -> str:
return render_template( return render_template(
'add.html', 'add.html',
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), brickset_owners=BrickSetOwnerList.new().list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(), brickset_tags=BrickSetTagList.new().list(),
path=current_app.config['SOCKET_PATH'], path=current_app.config['SOCKET_PATH'],
namespace=current_app.config['SOCKET_NAMESPACE'], namespace=current_app.config['SOCKET_NAMESPACE'],
messages=MESSAGES, messages=MESSAGES,

View File

@ -47,9 +47,9 @@ def admin() -> str:
database_version = database.version database_version = database.version
database_counters = BrickSQL().count_records() database_counters = BrickSQL().count_records()
metadata_owners = BrickSetOwnerList(BrickSetOwner).list() metadata_owners = BrickSetOwnerList.new().list()
metadata_statuses = BrickSetStatusList(BrickSetStatus).list(all=True) metadata_statuses = BrickSetStatusList.new().list(all=True)
metadata_tags = BrickSetTagList(BrickSetTag).list() metadata_tags = BrickSetTagList.new().list()
except Exception as e: except Exception as e:
database_exception = e database_exception = e

View File

@ -2,11 +2,8 @@ from flask import Blueprint, render_template
from .exceptions import exception_handler from .exceptions import exception_handler
from ..minifigure_list import BrickMinifigureList from ..minifigure_list import BrickMinifigureList
from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList from ..set_owner_list import BrickSetOwnerList
from ..set_status import BrickSetStatus
from ..set_status_list import BrickSetStatusList from ..set_status_list import BrickSetStatusList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList from ..set_tag_list import BrickSetTagList
from ..set_list import BrickSetList from ..set_list import BrickSetList
@ -20,8 +17,8 @@ def index() -> str:
return render_template( return render_template(
'index.html', 'index.html',
brickset_collection=BrickSetList().last(), brickset_collection=BrickSetList().last(),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), brickset_owners=BrickSetOwnerList.new().list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(), brickset_statuses=BrickSetStatusList.new().list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(), brickset_tags=BrickSetTagList.new().list(),
minifigure_collection=BrickMinifigureList().last(), minifigure_collection=BrickMinifigureList().last(),
) )

View File

@ -17,11 +17,8 @@ from ..minifigure import BrickMinifigure
from ..part import BrickPart from ..part import BrickPart
from ..set import BrickSet from ..set import BrickSet
from ..set_list import BrickSetList from ..set_list import BrickSetList
from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList from ..set_owner_list import BrickSetOwnerList
from ..set_status import BrickSetStatus
from ..set_status_list import BrickSetStatusList from ..set_status_list import BrickSetStatusList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList from ..set_tag_list import BrickSetTagList
from ..socket import MESSAGES from ..socket import MESSAGES
@ -37,9 +34,9 @@ def list() -> str:
return render_template( return render_template(
'sets.html', 'sets.html',
collection=BrickSetList().all(), collection=BrickSetList().all(),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), brickset_owners=BrickSetOwnerList.new().list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(), brickset_statuses=BrickSetStatusList.new().list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(), brickset_tags=BrickSetTagList.new().list(),
) )
@ -49,7 +46,7 @@ def list() -> str:
@exception_handler(__file__, json=True) @exception_handler(__file__, json=True)
def update_owner(*, id: str, metadata_id: str) -> Response: def update_owner(*, id: str, metadata_id: str) -> Response:
brickset = BrickSet().select_light(id) 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) 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) @exception_handler(__file__, json=True)
def update_status(*, id: str, metadata_id: str) -> Response: def update_status(*, id: str, metadata_id: str) -> Response:
brickset = BrickSet().select_light(id) 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) 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) @exception_handler(__file__, json=True)
def update_tag(*, id: str, metadata_id: str) -> Response: def update_tag(*, id: str, metadata_id: str) -> Response:
brickset = BrickSet().select_light(id) 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) state = tag.update_set_state(brickset, json=request.json)
@ -130,9 +127,9 @@ def details(*, id: str) -> str:
'set.html', 'set.html',
item=BrickSet().select_specific(id), item=BrickSet().select_specific(id),
open_instructions=request.args.get('open_instructions'), open_instructions=request.args.get('open_instructions'),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(), brickset_owners=BrickSetOwnerList.new().list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(all=True), brickset_statuses=BrickSetStatusList.new().list(all=True),
brickset_tags=BrickSetTagList(BrickSetTag).list(), brickset_tags=BrickSetTagList.new().list(),
) )