55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
import logging
|
|
from typing import Self
|
|
|
|
from flask import current_app
|
|
|
|
from .exceptions import NotFoundException
|
|
from .rebrickable import Rebrickable
|
|
from .rebrickable_image import RebrickableImage
|
|
from .rebrickable_set import RebrickableSet
|
|
from .record_list import BrickRecordList
|
|
from .wish import BrickWish
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
# All the wished sets from the database
|
|
class BrickWishList(BrickRecordList[BrickWish]):
|
|
# Queries
|
|
select_query: str = 'wish/list/all'
|
|
|
|
# All the wished sets
|
|
def all(self, /) -> Self:
|
|
# Load the wished sets from the database
|
|
for record in self.select(
|
|
order=current_app.config['WISHES_DEFAULT_ORDER']
|
|
):
|
|
brickwish = BrickWish(record=record)
|
|
|
|
self.records.append(brickwish)
|
|
|
|
return self
|
|
|
|
# Add a set to the wishlist
|
|
@staticmethod
|
|
def add(set: str, /) -> None:
|
|
try:
|
|
set = RebrickableSet.parse_number(set)
|
|
BrickWish().select_specific(set)
|
|
except NotFoundException:
|
|
logger.debug('rebrick.lego.get_set("{set}")'.format(
|
|
set=set,
|
|
))
|
|
|
|
brickwish = Rebrickable[BrickWish](
|
|
'get_set',
|
|
set,
|
|
BrickWish,
|
|
).get()
|
|
|
|
# Insert into database
|
|
brickwish.insert()
|
|
|
|
if not current_app.config['USE_REMOTE_IMAGES']:
|
|
RebrickableImage(brickwish).download()
|