X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/copy_structured?a=blobdiff_plain;f=plomtask%2Fdb.py;h=71c59d50d8b0013dcf3bd9e6c811080563606830;hb=244270eed71df45faf9554d0666b816be9876f77;hp=b3f1db00986b1142f5f31be34060864840ab5bdc;hpb=21df71ef1fde304b158da5989692c01f463515b5;p=plomtask diff --git a/plomtask/db.py b/plomtask/db.py index b3f1db0..71c59d5 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -235,6 +235,7 @@ class BaseModel(Generic[BaseModelId]): to_save: list[str] = [] to_save_versioned: list[str] = [] to_save_relations: list[tuple[str, str, str, int]] = [] + add_to_dict: list[str] = [] id_: None | BaseModelId cache_: dict[BaseModelId, Self] to_search: list[str] = [] @@ -295,6 +296,9 @@ class BaseModel(Generic[BaseModelId]): for rel in getattr(self, attr_name): l += [rel.as_dict_into_reference(library)] d[attr_name] = l + for k in self.add_to_dict: + d[k] = [x.as_dict_into_reference(library) + for x in getattr(self, k)] return d def as_dict_into_reference(self, @@ -326,6 +330,11 @@ class BaseModel(Generic[BaseModelId]): assert isinstance(as_dict['id'], (int, str)) return as_dict['id'] + @classmethod + def name_lowercase(cls) -> str: + """Convenience method to return cls' name in lowercase.""" + return cls.__name__.lower() + # cache management # (we primarily use the cache to ensure we work on the same object in # memory no matter where and how we retrieve it, e.g. we don't want