st-ten-1/src/lib/db/models/recipes.py

31 lines
965 B
Python
Raw Normal View History

2022-09-07 15:24:40 +00:00
from uuid import uuid4 as uuid
from peewee import BooleanField, TextField
2022-06-01 16:37:19 +00:00
from playhouse.sqlite_ext import JSONField
from .base_model import BaseModel
2022-07-19 09:59:00 +00:00
from .steps import Steps
2022-06-01 16:37:19 +00:00
class Recipes(BaseModel):
2022-09-07 15:24:40 +00:00
name = TextField(primary_key=True, unique=True, null=False, default=lambda: uuid().hex)
2022-07-26 13:43:11 +00:00
client = TextField(null=True)
2022-07-19 09:59:00 +00:00
part_number = TextField(null=False)
2022-06-01 16:37:19 +00:00
spec = JSONField(null=False) # keys inside spec must not overlap withthe model
2022-07-26 13:43:11 +00:00
description = TextField(null=True)
2022-06-01 16:37:19 +00:00
archived = BooleanField(null=False, default=False)
2022-07-19 09:59:00 +00:00
def get_steps(self):
2022-09-07 15:24:40 +00:00
s_pks = self.spec.get("steps", [])
s = {s.name: s for s in Steps.select().where(Steps.name << s_pks)}
return [s[s_id] for s_id in s_pks]
2022-07-19 09:59:00 +00:00
2022-06-01 16:37:19 +00:00
@classmethod
def delete(cls, *args, **kwargs):
# OVERRIDE DELETION
# so that deleting a user will only archive it
return cls.update(archived=True)
class Meta:
table_name = "recipes"