예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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)
    
예제 #4
0
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)
예제 #5
0
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))
예제 #6
0
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))
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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)
예제 #20
0
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)
예제 #21
0
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)
예제 #22
0
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
예제 #23
0
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)