Simplify BrickRecord based lists to deduplicate code
This commit is contained in:
parent
8ad525926a
commit
8e40b1fd7e
@ -38,13 +38,7 @@ class BrickMinifigureList(BrickRecordList[BrickMinifigure]):
|
|||||||
|
|
||||||
# Load all minifigures
|
# Load all minifigures
|
||||||
def all(self, /) -> Self:
|
def all(self, /) -> Self:
|
||||||
for record in self.select(
|
self.list(override_query=self.all_query)
|
||||||
override_query=self.all_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
minifigure = BrickMinifigure(record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -55,13 +49,7 @@ class BrickMinifigureList(BrickRecordList[BrickMinifigure]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the minifigures from the database
|
# Load the minifigures from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.damaged_part_query)
|
||||||
override_query=self.damaged_part_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
minifigure = BrickMinifigure(record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -73,27 +61,45 @@ class BrickMinifigureList(BrickRecordList[BrickMinifigure]):
|
|||||||
else:
|
else:
|
||||||
order = '"bricktracker_minifigures"."rowid" DESC'
|
order = '"bricktracker_minifigures"."rowid" DESC'
|
||||||
|
|
||||||
for record in self.select(
|
self.list(override_query=self.last_query, order=order, limit=limit)
|
||||||
override_query=self.last_query,
|
|
||||||
order=order,
|
|
||||||
limit=limit
|
|
||||||
):
|
|
||||||
minifigure = BrickMinifigure(record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
# Base minifigure list
|
||||||
|
def list(
|
||||||
|
self,
|
||||||
|
/,
|
||||||
|
*,
|
||||||
|
override_query: str | None = None,
|
||||||
|
order: str | None = None,
|
||||||
|
limit: int | None = None,
|
||||||
|
**context: Any,
|
||||||
|
) -> None:
|
||||||
|
if order is None:
|
||||||
|
order = self.order
|
||||||
|
|
||||||
|
if hasattr(self, 'brickset'):
|
||||||
|
brickset = self.brickset
|
||||||
|
else:
|
||||||
|
brickset = None
|
||||||
|
|
||||||
|
# Load the sets from the database
|
||||||
|
for record in super().select(
|
||||||
|
override_query=override_query,
|
||||||
|
order=order,
|
||||||
|
limit=limit,
|
||||||
|
):
|
||||||
|
minifigure = BrickMinifigure(brickset=brickset, record=record)
|
||||||
|
|
||||||
|
self.records.append(minifigure)
|
||||||
|
|
||||||
# Load minifigures from a brickset
|
# Load minifigures from a brickset
|
||||||
def from_set(self, brickset: 'BrickSet', /) -> Self:
|
def from_set(self, brickset: 'BrickSet', /) -> Self:
|
||||||
# Save the brickset
|
# Save the brickset
|
||||||
self.brickset = brickset
|
self.brickset = brickset
|
||||||
|
|
||||||
# Load the minifigures from the database
|
# Load the minifigures from the database
|
||||||
for record in self.select(order=self.order):
|
self.list()
|
||||||
minifigure = BrickMinifigure(brickset=self.brickset, record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -104,13 +110,7 @@ class BrickMinifigureList(BrickRecordList[BrickMinifigure]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the minifigures from the database
|
# Load the minifigures from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.missing_part_query)
|
||||||
override_query=self.missing_part_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
minifigure = BrickMinifigure(record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -121,13 +121,7 @@ class BrickMinifigureList(BrickRecordList[BrickMinifigure]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the minifigures from the database
|
# Load the minifigures from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.using_part_query)
|
||||||
override_query=self.using_part_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
minifigure = BrickMinifigure(record=record)
|
|
||||||
|
|
||||||
self.records.append(minifigure)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -42,16 +42,50 @@ class BrickPartList(BrickRecordList[BrickPart]):
|
|||||||
|
|
||||||
# Load all parts
|
# Load all parts
|
||||||
def all(self, /) -> Self:
|
def all(self, /) -> Self:
|
||||||
for record in self.select(
|
self.list(override_query=self.all_query)
|
||||||
override_query=self.all_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
part = BrickPart(record=record)
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
# Base part list
|
||||||
|
def list(
|
||||||
|
self,
|
||||||
|
/,
|
||||||
|
*,
|
||||||
|
override_query: str | None = None,
|
||||||
|
order: str | None = None,
|
||||||
|
limit: int | None = None,
|
||||||
|
**context: Any,
|
||||||
|
) -> None:
|
||||||
|
if order is None:
|
||||||
|
order = self.order
|
||||||
|
|
||||||
|
if hasattr(self, 'brickset'):
|
||||||
|
brickset = self.brickset
|
||||||
|
else:
|
||||||
|
brickset = None
|
||||||
|
|
||||||
|
if hasattr(self, 'minifigure'):
|
||||||
|
minifigure = self.minifigure
|
||||||
|
else:
|
||||||
|
minifigure = None
|
||||||
|
|
||||||
|
# Load the sets from the database
|
||||||
|
for record in super().select(
|
||||||
|
override_query=override_query,
|
||||||
|
order=order,
|
||||||
|
limit=limit,
|
||||||
|
):
|
||||||
|
part = BrickPart(
|
||||||
|
brickset=brickset,
|
||||||
|
minifigure=minifigure,
|
||||||
|
record=record,
|
||||||
|
)
|
||||||
|
|
||||||
|
if current_app.config['SKIP_SPARE_PARTS'] and part.fields.spare:
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.records.append(part)
|
||||||
|
|
||||||
# List specific parts from a brickset or minifigure
|
# List specific parts from a brickset or minifigure
|
||||||
def list_specific(
|
def list_specific(
|
||||||
self,
|
self,
|
||||||
@ -65,17 +99,7 @@ class BrickPartList(BrickRecordList[BrickPart]):
|
|||||||
self.minifigure = minifigure
|
self.minifigure = minifigure
|
||||||
|
|
||||||
# Load the parts from the database
|
# Load the parts from the database
|
||||||
for record in self.select(order=self.order):
|
self.list()
|
||||||
part = BrickPart(
|
|
||||||
brickset=self.brickset,
|
|
||||||
minifigure=minifigure,
|
|
||||||
record=record,
|
|
||||||
)
|
|
||||||
|
|
||||||
if current_app.config['SKIP_SPARE_PARTS'] and part.fields.spare:
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -89,19 +113,7 @@ class BrickPartList(BrickRecordList[BrickPart]):
|
|||||||
self.minifigure = minifigure
|
self.minifigure = minifigure
|
||||||
|
|
||||||
# Load the parts from the database
|
# Load the parts from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.minifigure_query)
|
||||||
override_query=self.minifigure_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
part = BrickPart(
|
|
||||||
minifigure=minifigure,
|
|
||||||
record=record,
|
|
||||||
)
|
|
||||||
|
|
||||||
if current_app.config['SKIP_SPARE_PARTS'] and part.fields.spare:
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -121,33 +133,13 @@ class BrickPartList(BrickRecordList[BrickPart]):
|
|||||||
self.fields.color = brickpart.fields.color
|
self.fields.color = brickpart.fields.color
|
||||||
|
|
||||||
# Load the parts from the database
|
# Load the parts from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.print_query)
|
||||||
override_query=self.print_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
part = BrickPart(
|
|
||||||
record=record,
|
|
||||||
)
|
|
||||||
|
|
||||||
if (
|
|
||||||
current_app.config['SKIP_SPARE_PARTS'] and
|
|
||||||
part.fields.spare
|
|
||||||
):
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
# Load problematic parts
|
# Load problematic parts
|
||||||
def problem(self, /) -> Self:
|
def problem(self, /) -> Self:
|
||||||
for record in self.select(
|
self.list(override_query=self.problem_query)
|
||||||
override_query=self.problem_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
part = BrickPart(record=record)
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -178,21 +170,7 @@ class BrickPartList(BrickRecordList[BrickPart]):
|
|||||||
self.fields.color = brickpart.fields.color
|
self.fields.color = brickpart.fields.color
|
||||||
|
|
||||||
# Load the parts from the database
|
# Load the parts from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.different_color_query)
|
||||||
override_query=self.different_color_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
part = BrickPart(
|
|
||||||
record=record,
|
|
||||||
)
|
|
||||||
|
|
||||||
if (
|
|
||||||
current_app.config['SKIP_SPARE_PARTS'] and
|
|
||||||
part.fields.spare
|
|
||||||
):
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.records.append(part)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from typing import Self
|
from typing import Any, Self
|
||||||
|
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
|
|
||||||
@ -36,23 +36,8 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
|
|
||||||
# All the sets
|
# All the sets
|
||||||
def all(self, /) -> Self:
|
def all(self, /) -> Self:
|
||||||
themes = set()
|
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(do_theme=True)
|
||||||
order=self.order,
|
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
|
||||||
statuses=BrickSetStatusList.as_columns(),
|
|
||||||
tags=BrickSetTagList.as_columns(),
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
themes.add(brickset.theme.name)
|
|
||||||
|
|
||||||
# Convert the set into a list and sort it
|
|
||||||
self.themes = list(themes)
|
|
||||||
self.themes.sort()
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -62,13 +47,7 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.figure = figure
|
self.fields.figure = figure
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.damaged_minifigure_query)
|
||||||
override_query=self.damaged_minifigure_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -79,25 +58,7 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.damaged_part_query)
|
||||||
override_query=self.damaged_part_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
|
||||||
|
|
||||||
# A generic list of the different sets
|
|
||||||
def generic(self, /) -> Self:
|
|
||||||
for record in self.select(
|
|
||||||
override_query=self.generic_query,
|
|
||||||
order=self.order
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -109,7 +70,29 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
else:
|
else:
|
||||||
order = '"bricktracker_sets"."rowid" DESC'
|
order = '"bricktracker_sets"."rowid" DESC'
|
||||||
|
|
||||||
for record in self.select(
|
self.list(order=order, limit=limit)
|
||||||
|
|
||||||
|
return self
|
||||||
|
|
||||||
|
# Base set list
|
||||||
|
def list(
|
||||||
|
self,
|
||||||
|
/,
|
||||||
|
*,
|
||||||
|
override_query: str | None = None,
|
||||||
|
order: str | None = None,
|
||||||
|
limit: int | None = None,
|
||||||
|
do_theme: bool = False,
|
||||||
|
**context: Any,
|
||||||
|
) -> None:
|
||||||
|
themes = set()
|
||||||
|
|
||||||
|
if order is None:
|
||||||
|
order = self.order
|
||||||
|
|
||||||
|
# Load the sets from the database
|
||||||
|
for record in super().select(
|
||||||
|
override_query=override_query,
|
||||||
order=order,
|
order=order,
|
||||||
limit=limit,
|
limit=limit,
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
owners=BrickSetOwnerList.as_columns(),
|
||||||
@ -119,8 +102,13 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
brickset = BrickSet(record=record)
|
brickset = BrickSet(record=record)
|
||||||
|
|
||||||
self.records.append(brickset)
|
self.records.append(brickset)
|
||||||
|
if do_theme:
|
||||||
|
themes.add(brickset.theme.name)
|
||||||
|
|
||||||
return self
|
# Convert the set into a list and sort it
|
||||||
|
if do_theme:
|
||||||
|
self.themes = list(themes)
|
||||||
|
self.themes.sort()
|
||||||
|
|
||||||
# Sets missing a minifigure part
|
# Sets missing a minifigure part
|
||||||
def missing_minifigure(self, figure: str, /) -> Self:
|
def missing_minifigure(self, figure: str, /) -> Self:
|
||||||
@ -128,16 +116,7 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.figure = figure
|
self.fields.figure = figure
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.missing_minifigure_query)
|
||||||
override_query=self.missing_minifigure_query,
|
|
||||||
order=self.order,
|
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
|
||||||
statuses=BrickSetStatusList.as_columns(),
|
|
||||||
tags=BrickSetTagList.as_columns(),
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -148,16 +127,7 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.missing_part_query)
|
||||||
override_query=self.missing_part_query,
|
|
||||||
order=self.order,
|
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
|
||||||
statuses=BrickSetStatusList.as_columns(),
|
|
||||||
tags=BrickSetTagList.as_columns(),
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -167,16 +137,7 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.figure = figure
|
self.fields.figure = figure
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.using_minifigure_query)
|
||||||
override_query=self.using_minifigure_query,
|
|
||||||
order=self.order,
|
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
|
||||||
statuses=BrickSetStatusList.as_columns(),
|
|
||||||
tags=BrickSetTagList.as_columns(),
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -187,15 +148,6 @@ class BrickSetList(BrickRecordList[BrickSet]):
|
|||||||
self.fields.color = color
|
self.fields.color = color
|
||||||
|
|
||||||
# Load the sets from the database
|
# Load the sets from the database
|
||||||
for record in self.select(
|
self.list(override_query=self.using_part_query)
|
||||||
override_query=self.using_part_query,
|
|
||||||
order=self.order,
|
|
||||||
owners=BrickSetOwnerList.as_columns(),
|
|
||||||
statuses=BrickSetStatusList.as_columns(),
|
|
||||||
tags=BrickSetTagList.as_columns(),
|
|
||||||
):
|
|
||||||
brickset = BrickSet(record=record)
|
|
||||||
|
|
||||||
self.records.append(brickset)
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
Loading…
Reference in New Issue
Block a user