class Tag(db.Model): __tablename__ = 'tags' uid = db.Column(db.Integer(), primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) repos = db.relationship('Repo_Tag', back_populates='tag', passive_deletes=False, cascade="save-update, merge") def __init__(self, name: str): self.name = name def __repr__(self): return "< {0} {1} {2}>".format(self.uid, self.name, 'tag')
class Modules(db.Model): __tablename__ = 'modules' uid = db.Column(db.Integer(), primary_key=True, autoincrement=True) sid = db.Column(db.Integer(), db.ForeignKey('software.uid', onupdate="SET NULL", ondelete="SET NULL"), nullable=True) security_issues = db.Column(db.Integer(), nullable=True) performance = db.Column(db.Integer(), nullable=True) inlining_performance = db.Column(db.Integer(), nullable=True) name = db.Column(db.String(50), nullable=False) cat = db.Column(db.String(50), nullable=False) language = db.Column(db.Text(), nullable=True) dep = db.relationship('Modules_Modules', back_populates='modules', passive_deletes=False, cascade="save-update, merge", foreign_keys='Modules_Modules.modules2_id') def __init__(self, sid: int, security_issues: int, name: str, performance: int, inlining_performance: int, cat: str, language: str): self.sid = sid self.security_issues = security_issues self.name = name self.performance = performance self.cat = cat self.language = language self.inlining_performance = inlining_performance def __repr__(self): return "< {0} {1} {2}>".format(self.uid, self.name, 'origrepos')
class Job(db.Model): __tablename__ = 'job' jid = db.Column(db.String(100), primary_key=True) result = db.Column(db.Text(), nullable=True) created = db.Column(db.DateTime()) description = db.Column(db.Text(), nullable=False) def __init__(self, jid: str, result: str, description: str): self.jid = jid self.result = result self.description = description self.created = datetime.now() def __repr__(self): return "< {0} {1} {2}>".format(self.jid, self.description, self.created.strftime('%b %d, %Y'))
class Software(db.Model): __tablename__ = 'software' uid = db.Column(db.Integer(), primary_key=True, autoincrement=True) version = db.Column(db.Float(), nullable=True) pkgname = db.Column(db.String(50), nullable=False) repo_id = db.Column(db.Integer(), db.ForeignKey('orig_repos.uid', onupdate="SET NULL", ondelete="SET NULL"), nullable=True) def __init__(self, pkgname: str, repo_id=None): self.pkgname = pkgname self.repo_id = repo_id def __repr__(self): return "< {0} {1} {2}>".format(self.uid, self.pkgname, 'software')
class Repo_Tag(db.Model): __tablename__ = 'repo_tag' uid = db.Column(db.Integer(), primary_key=True, autoincrement=True) tag_id = db.Column(db.Integer(), db.ForeignKey('tags.uid', onupdate="SET NULL", ondelete="SET NULL"), nullable=False) repo_id = db.Column(db.Integer(), db.ForeignKey('orig_repos.uid', onupdate="SET NULL", ondelete="SET NULL"), nullable=False) tag = db.relationship("Tag", back_populates="repos") repo = db.relationship("OrigRepos", back_populates="tags") def __init__(self, tag_id: int, repo_id: int): self.tag_id = tag_id self.repo_id = repo_id def __repr__(self): return "< {0} {1} {2}>".format(self.uid, self.tag_id, self.repo_id)
class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # firstname = db.Column(db.String(50), nullable=False) # lastname = db.Column(db.String(50), nullable=False) username = db.Column(db.String(50), nullable=False, unique=True) email = db.Column(db.String(50), nullable=False, unique=True) password = db.Column(db.String(500), nullable=False) joined = db.Column(db.DateTime()) roles = db.Column(db.String(50)) is_active = db.Column(db.Boolean, default=True, server_default='true') def __init__(self, username: str, password: str, email: str, roles: str, is_active: bool): # self.firstname = firstname.title() # self.lastname = lastname.title() self.username = username.lower() self.email = email.lower() self.joined = datetime.now() self.password = guard.hash_password(password) self.roles = roles self.joined = datetime.now() self.is_active = is_active def checkpassword(self, password): return guard.hash_password(password) == self.password def __repr__(self): return "< {0} {1} {2}>".format(self.id, self.username, 'user') @property def rolenames(self): try: return self.roles.split(',') except Exception: return [] @classmethod def lookup(cls, username): return cls.query.filter_by(username=username).one_or_none() @classmethod def identify(cls, id): return cls.query.get(id) @property def identity(self): return self.id def is_valid(self): return self.is_active
class OrigRepos(db.Model): __tablename__ = 'orig_repos' uid = db.Column(db.Integer(), primary_key=True, autoincrement=True) gid = db.Column(db.Integer(), nullable=True) star = db.Column(db.Integer(), nullable=True) open_issue = db.Column(db.Integer(), nullable=True) name = db.Column(db.String(50), nullable=False) description = db.Column(db.Text(), nullable=True) comfork = db.Column(db.Boolean, default=False, server_default='false') fork = db.Column(db.Integer(), db.ForeignKey('orig_repos.uid',onupdate="SET NULL", ondelete="SET NULL"), nullable=True) tags = db.relationship('Repo_Tag', back_populates='repo', passive_deletes=False, cascade="save-update, merge") def __init__(self, gid: int, star: int, open_issue: int, name: str, description: str, comfork: bool,fork=None): self.gid = gid self.star = star self.open_issue = open_issue self.name = name self.description = description self.comfork = comfork self.fork = fork def __repr__(self): return "< {0} {1} {2}>".format(self.uid, self.name, 'origrepos')