Added ModifyConcept function, and fixed 'isa' not working
This commit is contained in:
+27
-2
@@ -1,6 +1,6 @@
|
||||
import hashlib
|
||||
from collections import namedtuple
|
||||
from dataclasses import dataclass, field
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from core.sheerka_logger import get_logger
|
||||
|
||||
@@ -15,6 +15,7 @@ PROPERTIES_FOR_DIGEST = ("name", "key",
|
||||
PROPERTIES_TO_SERIALIZE = PROPERTIES_FOR_DIGEST + tuple(["id"])
|
||||
PROPERTIES_FOR_NEW = ("where", "pre", "post", "body", "desc")
|
||||
VARIABLE_PREFIX = "__var__"
|
||||
ORIGIN = "##origin##" # same as Serializer.ORIGIN but I don't want to include the reference
|
||||
|
||||
|
||||
class ConceptParts(Enum):
|
||||
@@ -97,6 +98,7 @@ class Concept:
|
||||
self.bnf = None
|
||||
self.log = get_logger("core." + self.__class__.__name__)
|
||||
self.init_log = get_logger("init.core." + self.__class__.__name__)
|
||||
self.original_definition_hash = None
|
||||
|
||||
def __repr__(self):
|
||||
return f"({self.metadata.id}){self.metadata.name}"
|
||||
@@ -243,7 +245,19 @@ class Concept:
|
||||
def body(self):
|
||||
return self.values[ConceptParts.BODY] if ConceptParts.BODY in self.values else None
|
||||
|
||||
def get_digest(self):
|
||||
def get_origin(self):
|
||||
"""
|
||||
Return the digest used to save the concept if it exists
|
||||
:return:
|
||||
"""
|
||||
if hasattr(self, ORIGIN):
|
||||
return getattr(self, ORIGIN)
|
||||
return None
|
||||
|
||||
def set_origin(self, origin):
|
||||
setattr(self, ORIGIN, origin)
|
||||
|
||||
def get_definition_hash(self):
|
||||
"""
|
||||
Returns the digest of the event
|
||||
:return: hexa form of the sha256
|
||||
@@ -301,6 +315,11 @@ class Concept:
|
||||
for k, v in other.props.items():
|
||||
self.set_prop(k, v.value)
|
||||
|
||||
# origin
|
||||
from sdp.sheerkaSerializer import Serializer
|
||||
if hasattr(other, Serializer.ORIGIN):
|
||||
setattr(self, Serializer.ORIGIN, getattr(other, Serializer.ORIGIN))
|
||||
|
||||
return self
|
||||
|
||||
def set_prop(self, prop_name, prop_value):
|
||||
@@ -362,6 +381,12 @@ class Concept:
|
||||
self.metadata.is_evaluated = True
|
||||
return self
|
||||
|
||||
def freeze_definition_hash(self):
|
||||
self.original_definition_hash = self.get_definition_hash()
|
||||
|
||||
def get_original_definition_hash(self):
|
||||
return self.original_definition_hash
|
||||
|
||||
|
||||
class Property:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user