st-ten-1/src/lib/db/models/recipes.py
matteo porta 2e7e1a015b wip
2022-09-27 14:18:15 +02:00

38 lines
1.1 KiB
Python

from uuid import uuid4 as uuid
from peewee import BooleanField, TextField
from playhouse.sqlite_ext import JSONField
from .base_model import BaseModel
from .steps import Steps
class Recipes(BaseModel):
name = TextField(primary_key=True, unique=True, null=False, default=lambda: uuid().hex)
client = TextField(null=True)
part_number = TextField(null=False)
spec = JSONField(null=False) # keys inside spec must not overlap withthe model
description = TextField(null=True)
archived = BooleanField(null=False, default=False)
def get_steps(self):
steps = []
for step_pk in self.spec.get("steps", []):
steps.append(Steps.get_by_id(step_pk))
return steps
def get_steps_map(self):
steps = {}
for step_name, step_pk in self.spec.get("available_steps", {}).items():
steps[step_name] = Steps.get_by_id(step_pk)
return steps
@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"