forked from FrederikBaerentsen/BrickTracker
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
|
from typing import Self
|
||
|
|
||
|
from flask import current_app
|
||
|
|
||
|
from bricktracker.exceptions import NotFoundException
|
||
|
|
||
|
from .rebrickable_set import RebrickableSet
|
||
|
from .record_list import BrickRecordList
|
||
|
from .wish import BrickWish
|
||
|
|
||
|
|
||
|
# 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'].value
|
||
|
):
|
||
|
brickwish = BrickWish(record=record)
|
||
|
|
||
|
self.records.append(brickwish)
|
||
|
|
||
|
return self
|
||
|
|
||
|
# Add a set to the wishlist
|
||
|
@staticmethod
|
||
|
def add(set_num: str, /) -> None:
|
||
|
# Check if it already exists
|
||
|
try:
|
||
|
set_num = RebrickableSet.parse_number(set_num)
|
||
|
BrickWish().select_specific(set_num)
|
||
|
except NotFoundException:
|
||
|
RebrickableSet.wish(set_num)
|