From 3b7a23fd8f5d714198790846dff8a1a3868128eb Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Sun, 4 Aug 2019 08:44:23 +0200 Subject: [PATCH] serialization and deserialization done --- serializer.py | 43 ++++++++++++++++++++++++++++++++++--------- test.json | 1 + 2 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 test.json diff --git a/serializer.py b/serializer.py index d6d349d..f967918 100644 --- a/serializer.py +++ b/serializer.py @@ -2,23 +2,48 @@ import json 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): self.__dict__ = json.loads(string) -def serialize(subject): - string = subject.__dict__ - for category in string["grades"]: - for counter, grade in enumerate(string["grades"][category][0]): - string["grades"][category][0][counter] = grade.__dict__ +def serialize(_subject): + ser = TempSubjectSerialize(_subject) + string = ser.get_string() return str(string) def deserialize(string): - temp = TempSubject(string) + temp = TempSubjectDeserialize(string) _subject = subject.Subject(temp.name, bool(temp.main_subject), bool(temp.oral_exam)) 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 - diff --git a/test.json b/test.json new file mode 100644 index 0000000..2e5fe4b --- /dev/null +++ b/test.json @@ -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}}}