This commit is contained in:
2021-06-01 10:56:49 +02:00
parent cbca10f347
commit a1bda2c0b3

View File

@ -16,16 +16,16 @@ def typechecked(func):
return typechecked_call
def property_maker(name, type_name):
def property_maker(name, dtype):
storage_name = '_' + name
@property
def prop(self) -> type_name:
def prop(self) -> dtype:
return getattr(self, storage_name)
@prop.setter
@typechecked
def prop(self, value: type_name) -> None:
def prop(self, value: dtype) -> None:
setattr(self, storage_name, value)
return prop
@ -34,16 +34,17 @@ def property_maker(name, type_name):
class Snippet:
def __init__(self, **kwargs):
def __init__(self, snippetType="snippet", **kwargs):
self._properties = []
self.snippetType = snippetType
self.set_properties(**kwargs)
def set_properties(self, **kwargs):
for key, value in kwargs.items():
storage_name = '_' + key
for name, dtype in kwargs.items():
storage_name = '_' + name
setattr(Snippet, storage_name, None)
setattr(Snippet, key, property_maker(key, value))
self._properties.append(key)
setattr(Snippet, name, property_maker(name, dtype))
self._properties.append(name)
def to_dict(self, include_none=True):
if include_none:
@ -52,8 +53,7 @@ class Snippet:
return {key: getattr(self, key) for key in self._properties if getattr(self, key) is not None}
def import_dict(self, properties):
for key in properties.keys():
setattr(self, key, properties[key])
self.__dict__.update(properties)
@classmethod
def from_dict(cls, properties):
@ -74,9 +74,9 @@ class Snippet:
class Basesnippet(Snippet):
def __init__(self):
super().__init__()
self.set_properties(
props = dict(
id=str,
parentId=str,
ownerGroup=str,
@ -97,15 +97,18 @@ class Basesnippet(Snippet):
versionable=bool,
deleted=bool
)
self.snippetType = "basesnippet"
super().__init__(snippetType="basesnippet", **props)
class Paragraph(Basesnippet):
def __init__(self):
super().__init__()
self.set_properties(textcontent=str, isMessage=str)
self.snippetType = "paragraph"
props = dict(
textcontent=str,
isMessage=str
)
super().__init__(snippetType="paragraph", **props)