class Task(db.Model, At, By): __tablename__ = "Task" PRIORITY_VALUES = [('low', 'low'), ('medium', 'medium'), ('high', 'high')] STATUS_VALUES = [('TODO', 'TODO'), ('DOING', 'DOING'), ('DONE', 'DONE')] id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) description = db.Column(db.String(1000)) start_date = db.Column(db.Date(), nullable=False) expected_end_date = db.Column(db.Date(), nullable=True) actual_end_date = db.Column(db.Date()) task_status = db.Column(ChoiceType(STATUS_VALUES, impl=db.String(5)), default='TODO', nullable=True) priority = db.Column(ChoiceType(PRIORITY_VALUES, impl=db.String(7)), default='medium') reporter_id = db.Column(db.Integer, db.ForeignKey('User.id')) assignee_id = db.Column(db.Integer, db.ForeignKey('User.id')) team_id = db.Column(db.Integer, db.ForeignKey('Team.id')) reporter = db.relationship('User', backref=db.backref('as_reporter'), primaryjoin="User.id==Task.reporter_id") assignee = db.relationship('User', backref=db.backref('as_assignee'), primaryjoin="User.id==Task.assignee_id") team = db.relationship('Team', backref=db.backref('tasks', lazy='dynamic'))
class Serial(db.Model): __tablename__ = "serials" id = db.Column(db.Integer, primary_key=True) number = db.Column(db.Integer) timestamp = db.Column(db.DateTime(), index=True, default=datetime.utcnow) date = db.Column(db.Date(), default=datetime.utcnow().date) name = db.Column(db.String(300), nullable=True) n = db.Column(db.Boolean) p = db.Column(db.Boolean) # stands for proccessed , which be modified after been processed pdt = db.Column(db.DateTime()) # Fix: adding pulled by feature to tickets pulledBy = db.Column(db.Integer) office_id = db.Column(db.Integer, db.ForeignKey('offices.id')) task_id = db.Column(db.Integer, db.ForeignKey('tasks.id')) def __init__(self, number=100, office_id=1, task_id=1, name=None, n=False, p=False, pulledBy=0): self.number = number self.office_id = office_id self.task_id = task_id self.name = name self.n = n # fixing mass use tickets multi operators conflict self.p = p self.pulledBy = pulledBy
class Task(db.Model, base_task.BaseTask): __tablename__ = "Task" Priority = [('major', 'major'), ('normal', 'normal'), ('minor', 'minor')] id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) description = db.Column(db.String(500)) start_date = db.Column(db.Date(), nullable=False) expected_end_date = db.Column(db.Date(), nullable=True) actual_end_date = db.Column(db.Date(), nullable=True) status = db.Column(db.Integer, db.ForeignKey('Task_status.id')) Task_status = relationship("Task_status", backref=backref("Task_status", uselist=False)) priority = db.Column(ChoiceType(Priority)) reporter = db.Column(db.Integer, db.ForeignKey("User.id")) assignee = db.Column(db.Integer, db.ForeignKey('User.id')) User = relationship('User', primaryjoin=('and_(' 'Task.reporter == User.id, ' 'Task.assignee == User.id' ')'), innerjoin=True) # User_reporter = relationship("User", backref="User_reporter", foreign_keys="User.reporter") # User_assignee = relationship("User", backref="User_assigned", foreign_keys="User.assignee") def __init__(self, title, description, start_date, expected_end_date, actual_end_date, status, priority, reporter, assignee): self.title = title self.description = description self.start_date = start_date self.expected_end_date = expected_end_date self.actual_end_date = actual_end_date self.status = status self.priority = priority self.reporter = reporter self.assignee = assignee
class Record(Model): __tablename__ = 'records' id = Column(db.Integer, primary_key=True) hrsa_id = Column(db.String()) entity = Column(db.String()) hrsa_designation_id = Column(db.Integer, db.ForeignKey('hrsa_designations.id')) state_id = Column(db.Integer, db.ForeignKey('states.id')) year = Column(db.String()) full_year = Column(db.Integer) opa_findings = Column(db.String()) sanction = Column(db.String()) cap_status = Column(db.String()) closure_date = Column(db.Date()) entity_contact = Column(db.String()) tags = relationship('Tag', secondary='tags', lazy='dynamic', backref=db.backref('records', lazy=True))
class Mesures(db.Model): __tablename__ = 'mesures' id = db.Column(db.Integer, primary_key=True) niveau = db.Column(db.String(100), nullable=False) etat = db.Column(db.String(100), ) date = db.Column(db.Date(), nullable=False) code_station = db.Column(db.Integer, db.ForeignKey('station.code'), nullable=False) id_polluant = db.Colulmn(db.Integer, db.ForeignKey('polluant.id'), nullable=False) def __init__(self, niveau, etat, date, code_station, id_polluant): self.niveau = niveau self.etat = etat self.date = date self.code_station = code_station self.id_polluant = id_polluant def __str__(self): return f'relevé du {self.date}'
class VSProject(CRUDMixin, db.Model): """" 项目模型 """ __tablename__ = 'tbl_vsppm_project' id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 名称 name = db.Column(db.String(90), nullable=False, unique=True) # 开始日期 begin = db.Column(db.Date()) # 结束日期 end = db.Column(db.Date()) # 项目类型 type = db.Column(db.String(20), default='sprint') # 历时天数 days = db.Column(db.Integer) # 状态 status = db.Column(db.String(30), default='wait') # 描述 desc = db.Column(db.String(256)) # 公司id company_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_company.id')) # 部门id department_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_department.id')) # 项目开启者 opened_by_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 项目开启日期 opened_datetime = db.Column(db.DateTime(timezone=True)) # 项目关闭者 closed_by_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 项目关闭日期 closed_datetime = db.Column(db.DateTime(timezone=True)) # 项目取消者 canceled_by_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 项目取消日期 canceled_datetime = db.Column(db.DateTime(timezone=True)) # 项目管理员id manager_admin_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 测试管理员id test_admin_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 发布管理员id release_admin_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) # 需求管理员id require_admin_id = db.Column(db.Integer, db.ForeignKey('tbl_vsppm_user.id')) access = db.Column(db.String(20), default='open') # 创建时间 created_ts = db.Column(db.DateTime(timezone=True), default=datetime.datetime.utcnow) # 更新时间 updated_ts = db.Column(db.DateTime(timezone=True), default=datetime.datetime.utcnow) # 激活状态 active = db.Column(db.Boolean(), default=True) # http://docs.sqlalchemy.org/en/rel_0_9/orm/join_conditions.html#handling-multiple-join-paths opened_by = db.relationship('VSUser', foreign_keys=[opened_by_id]) closed_by = db.relationship('VSUser', foreign_keys=[closed_by_id]) canceled_by = db.relationship('VSUser', foreign_keys=[canceled_by_id]) manager_admin = db.relationship('VSUser', foreign_keys=[manager_admin_id]) test_admin = db.relationship('VSUser', foreign_keys=[test_admin_id]) release_admin = db.relationship('VSUser', foreign_keys=[release_admin_id]) require_admin = db.relationship('VSUser', foreign_keys=[require_admin_id]) # 项目成员 members = db.relationship('VSUser', secondary=vsppm_project_member, backref=db.backref('projects')) company = db.relationship('VSCompany', backref=db.backref('projects')) department = db.relationship('VSDepartment', backref=db.backref('projects')) def __init__(self, **kwargs): super(VSProject, self).__init__(**kwargs) def __repr__(self): return '<VSProject #%s:%r>' % (self.id, self.name)