Files
grade-program/serializer.py
T

50 lines
1.8 KiB
Python

import json
import subject
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):
ser = TempSubjectSerialize(_subject)
string = ser.get_string()
return str(string)
def deserialize(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]['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