import json class RecordHeader(): __h_type = "" __h_referral_name = "" __h_receiver_list = [] def __init__(self, header_type: str, referral_name: str, receiver_list=None): if receiver_list is None: receiver_list = [] self.__h_receiver_list = receiver_list self.__h_type = header_type self.__h_referral_name = referral_name def analyze(self): if type(self.__h_type) != str: print("wrong type value") return False if type(self.__h_receiver_list) == str: self.__h_receiver_list = json.loads(self.__h_receiver_list) if type(self.__h_receiver_list) == list: return True elif type(self.__h_receiver_list) == list: return True return False def getType(self): return self.__h_type def getReferralName(self): return self.__h_referral_name def getReceivers(self): return self.__h_receiver_list # NO LIST [] just DICT {} any list in the dict will cause error. def replaceDictCharacters(d): for key, value in d.items(): if type(value) == dict: d[key] = replaceDictCharacters(value) else: d[key] = str(value).replace('\\', '\\').replace('\'', "") return d class RecordData(): __data = "" __data_json = "" def __init__(self, user_data): if user_data is None: user_data = {} self.__data = user_data self.__data_json = "" def analyze(self): if type(self.__data) == str: try: # CREATING PYTHON DICT self.__data = json.loads(self.__data) # CREATING JSON STRING (for sight.js) except ValueError: print("wrong data value") return False if type(self.__data) == dict: self.__data_json = json.dumps(replaceDictCharacters(self.__data)) return True return False def getData(self): return self.__data def getDataJson(self): return self.__data_json class Record(): __state = "CREATING" __r_header = "" def __init__(self, record_header, record_data): if record_header.__class__.__name__ != "RecordHeader": print("ERROR IT IS NOT A RECORD HEADER") self.__state = "ERROR" return if record_data.__class__.__name__ != "RecordData": print("ERROR IT IS NOT A RECORD DATA") self.__state = "ERROR" return self.__r_header = record_header self.__r_data = record_data self.__state = "NEW" def analyze(self): if self.__state == "NEW": #print(str(self.__r_header.analyze()) + " - data: " + str(self.__r_data.analyze())) if self.__r_header.analyze() is True and self.__r_data.analyze() is True: self.__state = "ANALYZED" else: self.__state = "ANALYZE_FAILED" def getState(self): return self.__state def getHeader(self): if self.__state == "ANALYZED": return self.__r_header return None def getData(self, json_data=False): if self.__state == "ANALYZED": if json_data: return self.__r_data.getDataJson() return self.__r_data.getData() return None