2022-06-01 16:37:19 +00:00
|
|
|
from peewee import AutoField, BooleanField, TextField
|
|
|
|
|
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):
|
|
|
|
|
id = AutoField(primary_key=True, unique=True, null=False)
|
2022-07-26 13:43:11 +00:00
|
|
|
name = TextField(null=True)
|
|
|
|
|
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):
|
|
|
|
|
s_ids = self.spec.get("steps", [])
|
|
|
|
|
s = {s.id: s for s in Steps.select().where(Steps.id << s_ids)}
|
|
|
|
|
return [s[s_id] for s_id in s_ids]
|
|
|
|
|
|
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"
|