class Problem(db.Model): __tablename__ = 'problem' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) description = db.Column(db.TEXT) input = db.Column(db.TEXT) output = db.Column(db.TEXT) sample = db.Column(db.JSON) test_case_id = db.Column(db.VARCHAR(64)) test_case_score = db.Column(db.JSON) hint = db.Column(db.TEXT) languages = db.Column(db.JSON) time_limit = db.Column(db.INTEGER) memory_limit = db.Column(db.INTEGER) difficulty = db.Column(db.INTEGER) source = db.Column(db.VARCHAR(128)) spj_flag = db.Column(db.BOOLEAN, nullable=False, default=False) submit_number = db.Column(db.INTEGER) accepted_number = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False, default=True) public_info = [ 'id', 'title', 'description', 'input', 'output', 'sample', 'hint', 'source', 'time_limit', 'memory_limit', 'create_user' ] def __repr__(self): return '<Problem %r>' % self.title def to_dict(self): dict_info = to_dict_tools(self) return dict_info
class CoveryImg(db.Model): __tablename__ = 'covery_img' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) img_name = db.Column(db.VARCHAR(128)) hyperlink_flag = db.Column(db.BOOLEAN, nullable=False, default=False) article_flag = db.Column(db.BOOLEAN, nullable=False, default=False) hyperlink = db.Column(db.VARCHAR(128)) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class SpecialJudge(db.Model): __tablename__ = 'special_judge' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) problem_id = db.Column(db.INTEGER) language = db.Column(db.VARCHAR(16)) code = db.Column(db.TEXT) version = db.Column(db.VARCHAR(16)) compile_flag = db.Column(db.BOOLEAN, nullable=False, default=False)
class Badge(db.Model): __tablename__ = 'badge' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) badge_img = db.Column(db.VARCHAR(128)) badge_type = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False)
class Register(db.Model): __tablename__ = 'register' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) register_type_id = db.Column(db.INTEGER) name = db.Column(db.VARCHAR(128)) gender = db.Column(db.BOOLEAN) student_number = db.Column(db.VARCHAR(32)) telephone = db.Column(db.VARCHAR(32)) qq = db.Column(db.VARCHAR(32)) create_time = db.Column(db.TIMESTAMP) ip = db.Column(db.VARCHAR(32))
class Submission(db.Model): __tablename__ = 'submission' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) problem_id = db.Column(db.INTEGER) contest_id = db.Column(db.INTEGER) user_id = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) code = db.Column(db.TEXT) result = db.Column(db.INTEGER) info = db.Column(db.JSON) language = db.Column(db.VARCHAR(16)) code_share = db.Column(db.BOOLEAN, nullable=False, default=False) statistic_info = db.Column(db.JSON) ip = db.Column(db.VARCHAR(32))
class JudgeServer(db.Model): __tablename__ = 'judge_server' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) hostname = db.Column(db.VARCHAR(128)) ip = db.Column(db.VARCHAR(32)) judger_version = db.Column(db.VARCHAR(32)) cpu_core = db.Column(db.INTEGER) memory_usage = db.Column(db.FLOAT) cpu_usage = db.Column(db.FLOAT) last_heartbeat = db.Column(db.TIMESTAMP) create_time = db.Column(db.TIMESTAMP) task_number = db.Column(db.INTEGER) service_url = db.Column(db.VARCHAR(256)) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class LoginLog(db.Model): __tablename__ = 'login_log' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) user_id = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) ip = db.Column(db.VARCHAR(32)) success_flag = db.Column(db.BOOLEAN)
class Mail(db.Model): __tablename__ = 'mail' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) create_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER)
class File(db.Model): __tablename__ = 'file' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) file_img = db.Column(db.VARCHAR(128)) file_type = db.Column(db.INTEGER) download_number = db.Column(db.INTEGER) view_number = db.Column(db.INTEGER) size = db.Column(db.VARCHAR(32)) file_name_in = db.Column(db.VARCHAR(128)) file_name_out = db.Column(db.VARCHAR(128)) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False)
class FileType(db.Model): __tablename__ = 'file_type' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False)
class SignInUser(db.Model): __tablename__ = 'sign_in_user' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) user_id = db.Column(db.INTEGER) sign_in_id = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) ip = db.Column(db.VARCHAR(32)) visible = db.Column(db.BOOLEAN)
class Contest(db.Model): __tablename__ = 'contest' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) close_rank_flag = db.Column(db.BOOLEAN, nullable=False, default=True) close_rank_time = db.Column(db.INTEGER) contest_flag = db.Column(db.BOOLEAN, nullable=False, default=False) permission_type = db.Column(db.INTEGER) password = db.Column(db.VARCHAR(32)) user_group_id = db.Column(db.INTEGER) start_time = db.Column(db.TIMESTAMP) end_time = db.Column(db.TIMESTAMP) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) allow_mail = db.Column(db.BOOLEAN, nullable=False, default=True) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class RegisterType(db.Model): __tablename__ = 'register_type' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) name = db.Column(db.VARCHAR(128)) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) running_flag = db.Column(db.BOOLEAN, nullable=False, default=False) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class ContestNotice(db.Model): __tablename__ = 'contest_notice' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) contest_id = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class ForumSection(db.Model): __tablename__ = 'forum_section' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) subject_number = db.Column(db.INTEGER, default=0) note_number = db.Column(db.INTEGER, default=0) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class SignIn(db.Model): __tablename__ = 'sign_in' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT) begin_time = db.Column(db.TIMESTAMP) end_time = db.Column(db.TIMESTAMP) multiple_ip_flag = db.Column(db.BOOLEAN) create_time = db.Column(db.TIMESTAMP) last_update_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) visible = db.Column(db.BOOLEAN, nullable=False)
class ForumSubject(db.Model): __tablename__ = 'forum_subject' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) section_id = db.Column(db.INTEGER) create_time = db.Column(db.TIMESTAMP) create_user = db.Column(db.INTEGER) good_flag = db.Column(db.BOOLEAN, nullable=False, default=False) up_flag = db.Column(db.BOOLEAN, nullable=False, default=False) view_number = db.Column(db.INTEGER, default=0) admire_number = db.Column(db.INTEGER, default=0) reply_number = db.Column(db.INTEGER, default=0) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class Permission(db.Model): __tablename__ = 'permission' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) content = db.Column(db.TEXT)
class ProblemTag(db.Model): __tablename__ = 'problem_tag' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) name = db.Column(db.VARCHAR(128)) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class UserGroup(db.Model): __tablename__ = 'user_group' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) title = db.Column(db.VARCHAR(128)) visible = db.Column(db.BOOLEAN, nullable=False, default=True)
class Users(db.Model): __tablename__ = 'users' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) username = db.Column(db.VARCHAR(32)) password_hash = db.Column(db.VARCHAR(128)) head_image = db.Column(db.VARCHAR(128)) real_name = db.Column(db.VARCHAR(32)) email = db.Column(db.VARCHAR(128)) create_time = db.Column(db.TIMESTAMP) ip = db.Column(db.VARCHAR(32)) problem_page = db.Column(db.INTEGER, default=1) submit_language = db.Column(db.INTEGER, default=0) submit_number = db.Column(db.INTEGER, default=0) accepted_number = db.Column(db.INTEGER, default=0) gender = db.Column(db.BOOLEAN) school = db.Column(db.VARCHAR(64)) telephone = db.Column(db.VARCHAR(32)) mood = db.Column(db.VARCHAR(256)) major = db.Column(db.VARCHAR(32)) grade = db.Column(db.INTEGER) clazz = db.Column(db.INTEGER) qq = db.Column(db.VARCHAR(32)) student_number = db.Column(db.VARCHAR(32)) blog = db.Column(db.VARCHAR(256)) github = db.Column(db.VARCHAR(256)) reset_password_token = db.Column(db.VARCHAR(32)) reset_password_time = db.Column(db.TIMESTAMP) session_keys = db.Column(db.JSON) visible = db.Column(db.BOOLEAN, nullable=False, default=True) @property def password(self): raise AttributeError('Password is not a readable attribute') @password.setter def password(self, password): md5 = hashlib.md5(password.encode()).hexdigest() self.password_hash = base64.b64encode(md5.encode()).decode() def verify_password(self, password): md5 = hashlib.md5(password.encode()).hexdigest().encode() password = base64.b64encode(md5).decode() if password == self.password_hash: return True return False
class Option(db.Model): __tablename__ = 'option' id = db.Column(db.INTEGER, autoincrement=True, primary_key=True) key = db.Column(db.VARCHAR(128)) value = db.Column(db.JSON)