Esempio n. 1
0
class JobProject(db.Model):
    __tablename__ = 'job_projects'
    job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'), primary_key=True)
    project_id = db.Column(db.Integer,
                           db.ForeignKey('projects.id'),
                           primary_key=True)
    # may optionally be used to specify the name of the parameter this jenkins
    # job uses to set the sha for this project. used when triggering jobs for
    # pull requests for the non-pr projects
    parameter_name = db.Column(db.String(STRING_LENGTH), nullable=True)
Esempio n. 2
0
class Job(db.Model):
    __tablename__ = "jobs"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(STRING_LENGTH), unique=True, nullable=False)
    projects = db.relationship('Project',
                               secondary=JobProject.__table__,
                               backref='jobs')

    def ordered_projects(self):
        return sorted(list(self.projects), key=lambda p: p.name)
Esempio n. 3
0
class BuildSha(db.Model):
    __tablename__ = "build_shas"

    build_id = db.Column(db.Integer,
                         db.ForeignKey('builds.id'),
                         primary_key=True)
    project_id = db.Column(db.Integer,
                           db.ForeignKey('projects.id'),
                           primary_key=True)
    sha = db.Column(db.String(40))

    build = db.relationship(Build)
    project = db.relationship(Project)
Esempio n. 4
0
class Build(db.Model):
    __tablename__ = "builds"

    id = db.Column(db.Integer, primary_key=True)
    build_number = db.Column(db.Integer)
    job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'))
    success = db.Column(db.Boolean, nullable=True)
    status = db.Column(db.Text, nullable=True, default="")

    job = db.relationship('Job')

    def __str__(self):
        return "{}/{}".format(self.job.name, self.build_number)
Esempio n. 5
0
class Project(db.Model):
    __tablename__ = "projects"
    __table_args = (db.UniqueConstraint('owner', 'name'), )

    id = db.Column(db.Integer, primary_key=True)
    owner = db.Column(db.String(STRING_LENGTH), nullable=False)
    name = db.Column(db.String(STRING_LENGTH), nullable=False)
    master_sha = db.Column(db.String(40), nullable=True)

    # A flag to determine whether cinch should post status updates to github
    update_status = db.Column(db.Boolean, nullable=False, default=False)

    def web_url(self):
        return "https://github.com/{}/{}".format(self.owner, self.name)

    def __str__(self):
        return self.name
Esempio n. 6
0
class PullRequest(db.Model):
    __tablename__ = "pull_requests"

    number = db.Column(db.Integer, primary_key=True, autoincrement=False)
    project_id = db.Column(db.Integer,
                           db.ForeignKey('projects.id'),
                           primary_key=True,
                           autoincrement=False)
    head = db.Column(db.String(40), nullable=False)
    merge_head = db.Column(db.String(40), nullable=True)
    owner = db.Column(db.Text, nullable=False)
    title = db.Column(db.Text, nullable=False)
    ahead_of_master = db.Column(db.Integer, nullable=True)
    behind_master = db.Column(db.Integer, nullable=True)
    is_mergeable = db.Column(db.Boolean, nullable=True)
    is_open = db.Column(db.Boolean, nullable=True)

    project = db.relationship('Project', backref='pull_requests')