from database import db from common.security import encrypt, decrypt from . import JsonEncodedDict class Entry(db.Model): id = db.Column(db.String(36), primary_key=True) first_name = db.Column(db.String(128), nullable=False) surname = db.Column(db.String(128), nullable=False) email = db.Column(db.String(128), nullable=False) club = db.Column(db.String(128), nullable=True) test_id = db.Column(db.String(36), db.ForeignKey('test.id')) test_code = db.Column(db.String(36), db.ForeignKey('test.test_code')) user_code = db.Column(db.String(6), nullable=True) start_time = db.Column(db.DateTime, nullable=False) end_time = db.Column(db.DateTime, nullable=True) status = db.Column(db.String(16), nullable=True) late_ignore = db.Column(db.Boolean, default=False, nullable=True) answers = db.Column(JsonEncodedDict, nullable=True) @property def set_first_name(self): raise AttributeError('set_first_name is not a readable attribute.') set_first_name.setter def set_first_name(self, name:str): self.first_name = encrypt(name) def get_first_name(self): return decrypt(self.first_name) @property def set_surname(self): raise AttributeError('set_first_name is not a readable attribute.') set_surname.setter def set_surname(self, name:str): self.surname = encrypt(name) def get_surname(self): return decrypt(self.surname) @property def set_email(self): raise AttributeError('set_email is not a readable attribute.') set_name.setter def set_email(self, email:str): self.email = encrypt(email) def get_email(self): return decrypt(self.email) @property def set_club(self): raise AttributeError('set_club is not a readable attribute.') set_name.setter def set_club(self, club:str): self.club = encrypt(club) def get_club(self): return decrypt(self.club)