class Velocity(db.Model): """ Jira velocity statistic """ __tablename__ = 'jira_velocity' sprint_id = Column(db.INTEGER, nullable=False, unique=True, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey('jira_projects.id'), nullable=False) name = Column(db.VARCHAR(length=256), nullable=False) commitment = Column(db.FLOAT(), nullable=False) completed = Column(db.FLOAT(), nullable=False) start_at = Column(db.TIMESTAMP(), nullable=False) end_at = Column(db.TIMESTAMP(), nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) project_key = db.relationship('Projects', backref=db.backref('project_name', lazy='dynamic')) @staticmethod def create_new_report(data): """ :param data: dict :return: """ # Update project_key, get Project instance data['project_key'] = Projects.query.filter_by(project_key=data['project_key']).first() exists = db.session.query(Velocity.sprint_id).filter_by(sprint_id=data['sprint_id']).scalar() is not None if not exists: report = Velocity(**data) db.session.add(report) logging.info('Create a new velocity data ' + str(report.project_key.project_key) + ' ' + str(report.name)) db.session.commit() else: logging.info('Nothing changed, sprint_id: ' + str(data['sprint_id']) + ' already exist')
class Authors(db.Model): def __repr__(self): return f'{self.author_id}|{self.author_name}' __tablename__ = 'authors' author_id = db.Column(db.Integer(), primary_key=True) author_name = db.Column(db.String(100)) izds = db.relationship("Izd", secondary=association_table, back_populates="authors")
class Worklog(db.Model): __tablename__ = 'jira_work_stat' id = Column(db.Integer, primary_key=True) project_id = db.Column(db.Integer, db.ForeignKey('jira_projects.id'), nullable=False) sprint_id = db.Column(db.Integer, db.ForeignKey('jira_velocity.sprint_id'), nullable=False) completed_worklog = Column(db.INTEGER, nullable=True) not_completed_worklog = Column(db.INTEGER, nullable=True) dev_count = Column(db.INTEGER, nullable=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) @staticmethod def create_new_worklog(data): exists = db.session.query(Worklog.sprint_id).filter_by(sprint_id=data['sprint_id']).scalar() is not None if not exists: worklog = Worklog(**data) db.session.add(worklog) logging.info('Create a new worklog data for sprint: ' + str(worklog.sprint_id)) db.session.commit() else: logging.info('Nothing changed')
class Izd(db.Model): def __repr__(self): return f'{self.Nom_zak}|{self.book_name}|{self.vid_id}|{self.perep_id}|{self.kol_str}|{self.format_id}|' \ f'{self.tirazh}|{self.data_izg}' __tablename__ = 'izd' Nom_zak = db.Column(db.Integer(), primary_key=True, auto_increment=True) book_name = db.Column(db.String(100)) vid_id = db.Column(db.Integer(), db.ForeignKey('vidi_izd.vid_id')) ISBN = db.Column(db.String(100)) perep_id = db.Column(db.Integer(), db.ForeignKey('tipi_perep.perep_id')) kol_str = db.Column(db.String(40)) format_id = db.Column(db.Integer(), db.ForeignKey('formati.format_id')) tirazh = db.Column(db.String(100)) data_izg = db.Column(db.Date()) god_izd = db.Column(db.String(40)) status_id = db.Column(db.Integer(), db.ForeignKey('statusi.status_id')) stoim = db.Column(db.Integer()) authors = db.relationship('Authors', secondary=association_table, back_populates='izds')
class Statusi(db.Model): __tablename__ = 'statusi' status_id = db.Column(db.Integer(), primary_key=True) status_name = db.Column(db.String(100)) izd = db.relationship('Izd', backref='status')
class Formats(db.Model): __tablename__ = 'formati' format_id = db.Column(db.Integer(), primary_key=True) format_name = db.Column(db.String(40)) izd = db.relationship('Izd', backref='format')
class TipiPerep(db.Model): __tablename__ = 'tipi_perep' perep_id = db.Column(db.Integer(), primary_key=True) perep_name = db.Column(db.String(100)) izd = db.relationship('Izd', backref='tip_perep')
class VidiIzd(db.Model): __tablename__ = 'vidi_izd' vid_id = db.Column(db.Integer(), primary_key=True) vid_name = db.Column(db.String(100)) izd = db.relationship('Izd', backref='vid_izd')
from appvars import db association_table = db.Table('association', db.Column('author_id', db.Integer, db.ForeignKey('authors.author_id')), db.Column('nom_zak', db.Integer, db.ForeignKey('izd.Nom_zak'))) class Izd(db.Model): def __repr__(self): return f'{self.Nom_zak}|{self.book_name}|{self.vid_id}|{self.perep_id}|{self.kol_str}|{self.format_id}|' \ f'{self.tirazh}|{self.data_izg}' __tablename__ = 'izd' Nom_zak = db.Column(db.Integer(), primary_key=True, auto_increment=True) book_name = db.Column(db.String(100)) vid_id = db.Column(db.Integer(), db.ForeignKey('vidi_izd.vid_id')) ISBN = db.Column(db.String(100)) perep_id = db.Column(db.Integer(), db.ForeignKey('tipi_perep.perep_id')) kol_str = db.Column(db.String(40)) format_id = db.Column(db.Integer(), db.ForeignKey('formati.format_id')) tirazh = db.Column(db.String(100)) data_izg = db.Column(db.Date()) god_izd = db.Column(db.String(40)) status_id = db.Column(db.Integer(), db.ForeignKey('statusi.status_id')) stoim = db.Column(db.Integer()) authors = db.relationship('Authors', secondary=association_table, back_populates='izds') class Authors(db.Model): def __repr__(self): return f'{self.author_id}|{self.author_name}'