BrickTracker/bricktracker/wish.py

53 lines
1.4 KiB
Python
Raw Permalink Normal View History

from typing import Self
2025-01-17 11:03:00 +01:00
from flask import url_for
from .exceptions import NotFoundException
from .rebrickable_set import RebrickableSet
2025-01-17 11:03:00 +01:00
from .sql import BrickSQL
2025-02-04 20:07:15 +01:00
from .wish_owner_list import BrickWishOwnerList
2025-01-17 11:03:00 +01:00
# Lego brick wished set
class BrickWish(RebrickableSet):
# Flags
resolve_instructions: bool = False
2025-01-17 11:03:00 +01:00
# Queries
select_query: str = 'wish/select'
insert_query: str = 'wish/insert'
2025-02-04 20:07:15 +01:00
# Delete a wish
2025-01-17 11:03:00 +01:00
def delete(self, /) -> None:
2025-02-04 20:07:15 +01:00
BrickSQL().executescript(
2025-01-17 11:03:00 +01:00
'wish/delete/wish',
2025-02-04 20:07:15 +01:00
set=self.fields.set
2025-01-17 11:03:00 +01:00
)
# Select a specific part (with a set and an id)
def select_specific(self, set: str, /) -> Self:
2025-01-17 11:03:00 +01:00
# Save the parameters to the fields
self.fields.set = set
2025-01-17 11:03:00 +01:00
# Load from database
2025-02-04 20:07:15 +01:00
if not self.select(owners=BrickWishOwnerList.as_columns()):
2025-01-17 11:03:00 +01:00
raise NotFoundException(
'Wish for set {set} was not found in the database'.format( # noqa: E501
set=self.fields.set,
2025-01-17 11:03:00 +01:00
),
)
return self
2025-02-04 20:07:15 +01:00
# Self url
def url(self, /) -> str:
return url_for('wish.details', set=self.fields.set)
2025-01-17 11:03:00 +01:00
# Deletion url
def url_for_delete(self, /) -> str:
2025-02-04 20:07:15 +01:00
return url_for('wish.delete', set=self.fields.set)
# Actual deletion url
def url_for_do_delete(self, /) -> str:
return url_for('wish.do_delete', set=self.fields.set)