Ejemplo n.º 1
0
class GitHubSummaryUser(BaseModel):
    """GitHub Summary User table

    TODO: GitHubSummaryUser should really be related to
    GitHubSummaryConfiguration versus SlackInstallation
    """

    __tablename__ = "github_summary_user"

    def __repr__(self):  # pragma: no cover
        return f"<User slack: {self.slack_id} github: {self.github_username}>"

    # Attributes
    installation_id = db.Column(
        db.Integer,
        db.ForeignKey("slack_installation.id", name="fk_installation_id"),
        nullable=False,
    )
    slack_id = db.Column(db.String(300), nullable=False)
    github_id = db.Column(db.String(300), nullable=True)
    github_username = db.Column(db.String(300), nullable=True)
    github_state = db.Column(db.String(36), nullable=True)
    github_access_token = db.Column(db.String(100), nullable=True)

    # Relationships
    installation = db.relationship(
        "SlackInstallation", back_populates="github_summary_users"
    )
Ejemplo n.º 2
0
class GitHubSummaryUser(BaseModel):
    # TODO
    # add a field for workspace_id
    # add a relationship for the ORM
    """GitHub Summary User table"""

    __tablename__ = "github_summary_user"

    def __repr__(self):  # pragma: no cover
        return f"<User slack: {self.slack_id} github: {self.github_username}>"

    # Attributes
    installation_id = db.Column(
        db.Integer,
        db.ForeignKey("slack_installation.id", name="fk_installation_id"),
        nullable=False,
    )
    slack_id = db.Column(db.String(300), nullable=False)
    github_id = db.Column(db.String(300), nullable=True)
    github_username = db.Column(db.String(300), nullable=True)
    github_state = db.Column(db.String(36), nullable=True)
    github_access_token = db.Column(db.String(100), nullable=True)

    # Relationships
    installation = db.relationship("SlackInstallation",
                                   back_populates="github_summary_users")
Ejemplo n.º 3
0
class SyncEventDatabaseTask(Task):

    __tablename__ = "sync_event_database_task"

    # Attributes
    id = db.Column(db.Integer, db.ForeignKey("task.id"), primary_key=True)
    data = db.Column("data", db.JSON)

    __mapper_args__ = {"polymorphic_identity": "sync_event_database"}

    def __repr__(self):  # pragma: no cover
        return f"<SyncEventDatabaseTask: {self.data}>"
Ejemplo n.º 4
0
class PostTweetTask(Task):

    __tablename__ = "post_tweet_task"

    # Attributes
    id = db.Column(db.Integer, db.ForeignKey("task.id"), primary_key=True)
    data = db.Column("data", db.JSON)

    __mapper_args__ = {"polymorphic_identity": "post_tweet"}

    def __repr__(self):  # pragma: no cover
        return f"<PostTweetTask: {self.data}>"
Ejemplo n.º 5
0
class PostGitHubSummaryTask(Task):

    __tablename__ = "post_github_summary_task"

    # Attributes
    id = db.Column(db.Integer, db.ForeignKey("task.id"), primary_key=True)
    data = db.Column("data", db.JSON)

    __mapper_args__ = {"polymorphic_identity": "post_github_summary"}

    def __repr__(self):
        return f"<PostGitHubSummaryTask: {self.data}>"
Ejemplo n.º 6
0
class GitHubSummaryConfiguration(BaseModel):
    __tablename__ = "github_summary_configuration"

    def __repr__(self):  # pragma: no cover
        return f"<GitHubSummaryConfiguration>"

    installation_id = db.Column(
        db.Integer,
        db.ForeignKey("slack_installation.id", name="fk_installation_id"),
        nullable=False,
    )
    channel = db.Column(db.String(20), nullable=False)
    time_to_post = db.Column(db.String(20), nullable=True)
    timezone_info = db.Column(db.JSON)

    # Relationships
    slack_installation = db.relationship(
        "SlackInstallation", back_populates="github_summary_config"
    )
Ejemplo n.º 7
0
class SlackAppHomeOpened(BaseModel):
    """Track number of times App Home is opened

    For bot onboarding
    """

    __tablename__ = "slack_app_home_opened"

    installation_id = db.Column(
        db.Integer,
        db.ForeignKey("slack_installation.id", name="fk_installation_id"),
        index=True,
        nullable=False,
    )
    slack_id = db.Column(db.String(30), index=True, nullable=False)
    count = db.Column(db.Integer, nullable=False, default=1)

    # Relationships
    installation = db.relationship("SlackInstallation")
Ejemplo n.º 8
0
class Task(BaseModel):
    """Task Base Table"""

    __tablename__ = "task"

    # Attributes
    job_id = db.Column(db.String(36), index=True)
    name = db.Column(db.String(128), index=True)
    description = db.Column(db.String(128))
    failed = db.Column(db.Boolean, default=False)
    complete = db.Column(db.Boolean, default=False)
    user_id = db.Column(db.Integer,
                        db.ForeignKey("api_user.id", name="fk_task_user_id"))
    type = db.Column(db.String(55))

    __mapper_args__ = {
        "polymorphic_identity": "task",
        "polymorphic_on": "type"
    }

    # Relationships
    user = db.relationship("ApiUser", back_populates="tasks")

    def get_rq_job(self):
        try:
            rq_job = Job.fetch(self.job_id, rq.connection)
        except (RedisError, NoSuchJobError):
            return None
        return rq_job

    def get_progress(self):
        job = self.get_rq_job()
        return job.meta.get("progress", 0) if job is not None else 100

    def __repr__(self):  # pragma: no cover
        return f"<Task: {self.job_id}-{self.name}>"