Added set of set handling (thru concept ISA)
This commit is contained in:
@@ -16,11 +16,11 @@ class ConceptHandler(BaseHandler):
|
||||
pickler = self.context
|
||||
sheerka = self.sheerka
|
||||
|
||||
if obj.id:
|
||||
if obj.metadata.full_serialization:
|
||||
ref = default_concept
|
||||
else:
|
||||
ref = sheerka.get_by_id(obj.id)
|
||||
data[CONCEPT_ID] = (obj.key, obj.id)
|
||||
else:
|
||||
ref = default_concept
|
||||
|
||||
# transform metadata
|
||||
for prop in CONCEPT_PROPERTIES_TO_SERIALIZE:
|
||||
@@ -41,7 +41,7 @@ class ConceptHandler(BaseHandler):
|
||||
if prop not in ref.props or value != ref.props[prop].value:
|
||||
if "props" not in data:
|
||||
data["props"] = []
|
||||
data["props"].append((prop, pickler.flatten(value)))
|
||||
data["props"].append((pickler.flatten(prop), pickler.flatten(value)))
|
||||
|
||||
return data
|
||||
|
||||
@@ -77,7 +77,7 @@ class ConceptHandler(BaseHandler):
|
||||
return instance
|
||||
|
||||
|
||||
class UserInputHandler(BaseHandler):
|
||||
class UserInputHandler(ConceptHandler):
|
||||
|
||||
def flatten(self, obj: UserInputConcept, data):
|
||||
data[CONCEPT_ID] = (obj.key, obj.id)
|
||||
@@ -86,12 +86,12 @@ class UserInputHandler(BaseHandler):
|
||||
return data
|
||||
|
||||
def new(self, data):
|
||||
sheerka = self.sheerka
|
||||
|
||||
instance = sheerka.new(tuple(data[CONCEPT_ID]), body=data["text"], user_name=data["user_name"])
|
||||
return instance
|
||||
return UserInputConcept.__new__(UserInputConcept)
|
||||
|
||||
def restore(self, data, instance):
|
||||
instance.__init__(data["text"], data["user_name"])
|
||||
instance.metadata.key = data[CONCEPT_ID][0]
|
||||
instance.metadata.id = data[CONCEPT_ID][1]
|
||||
return instance
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ class ReturnValueHandler(BaseHandler):
|
||||
def flatten(self, obj: ReturnValueConcept, data):
|
||||
pickler = self.context
|
||||
|
||||
data[CONCEPT_ID] = (obj.key, obj.id)
|
||||
data["who"] = f"c:{obj.who.id}:" if isinstance(obj.who, Concept) else \
|
||||
obj.who.name if isinstance(obj.who, (BaseParser, BaseEvaluator)) else \
|
||||
obj.who
|
||||
@@ -110,38 +111,30 @@ class ReturnValueHandler(BaseHandler):
|
||||
return data
|
||||
|
||||
def new(self, data):
|
||||
sheerka = self.sheerka
|
||||
instance = sheerka.ret(data["who"], data["status"], None)
|
||||
return instance
|
||||
return ReturnValueConcept.__new__(ReturnValueConcept)
|
||||
|
||||
def restore(self, data, instance):
|
||||
pickler = self.context
|
||||
|
||||
instance.value = pickler.restore(data["value"])
|
||||
instance.__init__(data["who"], data["status"], pickler.restore(data["value"]))
|
||||
if "parents" in data:
|
||||
instance.parents = pickler.restore(data["parents"])
|
||||
|
||||
instance.metadata.key = data[CONCEPT_ID][0]
|
||||
instance.metadata.id = data[CONCEPT_ID][1]
|
||||
return instance
|
||||
|
||||
|
||||
# class BuiltinConceptsHandler(BaseHandler):
|
||||
#
|
||||
# def flatten(self, obj: BuiltinConcepts, data):
|
||||
# return data
|
||||
#
|
||||
# def restore(self, obj):
|
||||
# pass
|
||||
class SheerkaHandler(ConceptHandler):
|
||||
|
||||
|
||||
class SheerkaHandler(BaseHandler):
|
||||
|
||||
def flatten(self, obj: BuiltinConcepts, data):
|
||||
return data
|
||||
# def flatten(self, obj: BuiltinConcepts, data):
|
||||
# return ConceptHandler().flatten()data
|
||||
|
||||
def new(self, data):
|
||||
return self.sheerka
|
||||
|
||||
def restore(self, data, instance):
|
||||
return instance
|
||||
# def restore(self, data, instance):
|
||||
# return instance
|
||||
|
||||
|
||||
class ExecutionContextHandler(BaseHandler):
|
||||
|
||||
Reference in New Issue
Block a user