class Comment(db.Model): __tablename__ = "comments" id = db.Column(db.Integer, primary_key=True) sprint_id = db.Column(db.Integer, db.ForeignKey('project_sprints.id'), nullable=False) sprint = db.relationship('ProjectSprint', backref=db.backref('comments')) checklist_id = db.Column(db.Integer, db.ForeignKey("checklists_kb.id"), nullable=False) checklist = db.relationship('ChecklistKB', backref=db.backref('commments')) status = db.Column(db.Integer, nullable=False) comment = db.Column(db.Text) date = db.Column(db.Integer, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) user = db.relationship("User", backref=db.backref("comments")) def __init__(self, status, comment, date): self.status = status self.comment = comment self.date = date
class ChecklistKB(db.Model): __tablename__ = 'checklists_kb' id = db.Column(db.Integer, primary_key=True) checklist_id = db.Column(db.String(255), nullable=False) content = db.Column(db.Text) cwe = db.Column(db.Integer) maturity = db.Column(db.Integer, nullable=True) question_id = db.Column(db.Integer, db.ForeignKey('questions.id'), nullable=True) questions = db.relationship("Question", backref=db.backref('checklist_kb')) include_always = db.Column(db.Boolean) kb_id = db.Column(db.Integer, db.ForeignKey("kb_items.kb_id"), nullable=True) kb_items = db.relationship("KBItem", backref=db.backref('checklist_kb')) checklist_type = db.Column(db.Integer, nullable=False) def __init__(self, checklist_id, content, checklist_type, include_always, cwe, maturity): self.include_always = include_always self.checklist_id = checklist_id self.checklist_type = checklist_type self.content = content self.cwe = cwe self.maturity = maturity
class QuestionResult(db.Model): __tablename__ = 'question_results' id = db.Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey("projects.id")) project = db.relationship("Project", backref=db.backref('question_results')) sprint_id = db.Column(db.Integer, db.ForeignKey("project_sprints.id")) sprint = db.relationship("ProjectSprint", backref=db.backref('question_results')) question_id = db.Column(db.Integer, db.ForeignKey('questions.id')) question = db.relationship("Question", backref=db.backref('question_result'), uselist=False) result = db.Column(db.Text) checklist_type = db.Column(db.Integer) def __init__(self, result, checklist_type): self.result = result self.checklist_type = checklist_type
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) privilege_id = db.Column(db.Integer, db.ForeignKey('privileges.id'), nullable=False) privilege = db.relationship("Privilege", backref=db.backref('users')) accessToken = db.Column(db.Integer, unique=True, nullable=False) username = db.Column(db.String(255), nullable=True, unique=True) password = db.Column(db.Text, nullable=True) access = db.Column(db.Boolean, nullable=False) activated = db.Column(db.Boolean, nullable=False) email = db.Column(db.String(255), nullable=False, unique=True) groups = db.relationship('Group', back_populates='members') #group = db.relationship('GroupMember', back_populates='member') def __init__(self, email, accessToken='', username='', password='', access=False, activated=False): self.accessToken = accessToken self.username = username self.password = password self.access = access self.activated = activated self.email = email def __repr__(self): return "<User> {}| {} activated:{} access:{} email:{}>)".format( self.id, self.username, self.activated, self.access, self.email)
class ChecklistKBCodeItem(db.Model): __tablename__ = 'checklist_kb_code_item' id = db.Column(db.Integer, primary_key=True) checklist_kb_id = db.Column(db.Integer, db.ForeignKey("checklists_kb.id"), nullable=False) checklists_kb_items = db.relationship( "ChecklistKB", backref=db.backref('checklist_kb_code_item')) code_items_id = db.Column(db.Integer, db.ForeignKey("code_items.id"), nullable=False) code_items = db.relationship("CodeItem", backref=db.backref('checklist_kb_code_item')) def __init__(self, checklist_kb_id, code_items_id): self.checklist_kb_id = checklist_kb_id self.code_items_id = code_items_id
class ChecklistResult(db.Model): __tablename__ = 'checklists_results' id = db.Column(db.Integer, primary_key=True) checklist_id = db.Column(db.Integer, db.ForeignKey('checklists_kb.id'), nullable=True) checklist_item = db.relationship("ChecklistKB", backref=db.backref('')) project_id = db.Column(db.Integer, db.ForeignKey('projects.id'), nullable=True) project = db.relationship("Project", backref=db.backref('')) sprint_id = db.Column(db.Integer, db.ForeignKey('project_sprints.sprint_id'), nullable=True) sprint = db.relationship("ProjectSprint", backref=db.backref('')) status = db.Column(db.Integer, nullable=True) kb_id = db.Column(db.Integer, db.ForeignKey("kb_items.kb_id"), nullable=True) kb_items = db.relationship("KBItem", backref=db.backref('')) checklist_type_id = db.Column(db.Integer, db.ForeignKey("checklist_types.id")) checklist_type = db.relationship('ChecklistType', backref=db.backref("")) def __init__(self, status): self.status = status
class ProjectSprint(db.Model): __tablename__ = "project_sprints" sprint_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text) description = db.Column(db.Text) group_id = db.Column(db.Integer, db.ForeignKey("groups.id")) group = db.relationship('Group', backref=db.backref("sprints")) project_id = db.Column(db.Integer, db.ForeignKey("projects.id")) project = db.relationship('Project', backref=db.backref("sprints")) checklist_type_id = db.Column(db.Integer, db.ForeignKey("checklist_types.id")) checklist_type = db.relationship('ChecklistType', backref=db.backref("sprints")) def __init__(self, name, description): self.name = name self.description = description
class KBItem(db.Model): __tablename__ = 'kb_items' kb_id = db.Column(db.Integer, primary_key=True, autoincrement=False) title = db.Column(db.Text) content = db.Column(db.Text) checklist_category_id = db.Column(db.Integer, db.ForeignKey("checklist_category.id"), nullable=True) checklist_category = db.relationship("ChecklistCategory", backref=db.backref('kb_items')) def __init__(self, title, content, kb_id): self.kb_id = kb_id self.title = title self.content = content
class ChecklistType(db.Model): __tablename__ = 'checklist_types' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text, nullable=False) description = db.Column(db.Text, nullable=False) visibility = db.Column(db.Boolean, nullable=False) checklist_category_id = db.Column(db.Integer, db.ForeignKey("checklist_category.id"), nullable=True) checklist_category = db.relationship("ChecklistCategory", backref=db.backref('checklist_types')) def __init__(self, name, description, visibility): self.name = name self.description = description self.visibility = visibility
class Group(db.Model): __tablename__ = 'groups' id = db.Column(db.Integer, primary_key=True) owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) owner = db.relationship('User', backref=db.backref("owned_groups"), uselist=False) groupName = db.Column(db.String(255), nullable=False) members = db.relationship('User', secondary=GroupMember, back_populates='groups') timestamp = db.Column(db.Text) def __init__(self, groupName, timestamp): self.groupName = groupName self.timestamp = timestamp
class CodeItem(db.Model): __tablename__ = 'code_items' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.Text, nullable=False) content = db.Column(db.Text, nullable=False) code_lang = db.Column(db.Text, nullable=False) checklist_category_id = db.Column(db.Integer, db.ForeignKey("checklist_category.id"), nullable=True) checklist_category = db.relationship("ChecklistCategory", backref=db.backref('code_items')) def __init__(self, content, title, lang): self.content = content self.title = title self.code_lang = lang
class Log(db.Model): __tablename__ = 'logs' id = db.Column(db.Integer, primary_key=True) date = db.Column(db.Integer, nullable=False) time = db.Column(db.Integer, nullable=False) threat = db.Column(db.Text, nullable=False) ip = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) user = db.relationship('User', backref=db.backref("logs")) message = db.Column(db.Text, nullable=False) status = db.Column(db.Text, nullable=False) def __init__(self, date, time, threat, ip, message, status, user_id): self.date = date self.time = time self.threat = threat self.ip = ip self.message = message self.status = status self.user_id = user_id