serialization and deserialization done

This commit is contained in:
2019-08-04 08:44:23 +02:00
parent 0cb5e2f73f
commit 3b7a23fd8f
2 changed files with 35 additions and 9 deletions
+34 -9
View File
@@ -2,23 +2,48 @@ import json
import subject import subject
class TempSubject: class TempSubjectSerialize:
def __init__(self, _subject):
self.name = _subject.name
self.main_subject = str(_subject.main_subject)
self.oral_exam = str(_subject.oral_exam)
self.grades = {}
for category in _subject.grades:
self.grades[category] = {}
for counter, grade in enumerate(_subject.grades[category][0]):
self.grades[category][str(counter)] = {
"grade": str(grade.grade),
"name": str(grade.name),
"date": str(grade.date)
}
self.grades[category]["rating"] = _subject.grades[category][1]
def get_string(self):
string = self.__dict__
string = str(string)
string = string.replace("'", '"')
return string
class TempSubjectDeserialize:
def __init__(self, string): def __init__(self, string):
self.__dict__ = json.loads(string) self.__dict__ = json.loads(string)
def serialize(subject): def serialize(_subject):
string = subject.__dict__ ser = TempSubjectSerialize(_subject)
for category in string["grades"]: string = ser.get_string()
for counter, grade in enumerate(string["grades"][category][0]):
string["grades"][category][0][counter] = grade.__dict__
return str(string) return str(string)
def deserialize(string): def deserialize(string):
temp = TempSubject(string) temp = TempSubjectDeserialize(string)
_subject = subject.Subject(temp.name, bool(temp.main_subject), bool(temp.oral_exam)) _subject = subject.Subject(temp.name, bool(temp.main_subject), bool(temp.oral_exam))
for category in temp.grades: for category in temp.grades:
_subject.add_grade_category(category, temp.grades[category][1]) _subject.add_grade_category(category, temp.grades[category]['rating'])
for grade in temp.grades[category]:
if grade != "rating":
_subject.add_grade(category, subject.Grade(float(temp.grades[category][grade]["grade"]), # the grade
temp.grades[category][grade]["name"], # the name of grade
temp.grades[category][grade]["date"])) # the date of grade
return _subject return _subject
+1
View File
@@ -0,0 +1 @@
{"name": "Deutsch", "main_subject": "False", "oral_exam": "True", "grades": {"schriftlich": {"0": {"grade": "13", "name": "KA1", "date": "2019-08-04 08:25:17.797803"}, "1": {"grade": "9", "name": "KA2", "date": "2019-08-04 08:25:17.797803"}, "rating": 2}, "mündlich": {"0": {"grade": "12", "name": "mündl 1. HJ", "date": "2019-08-04 08:25:17.797803"}, "rating": 1}}}