123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # -*- coding: utf-8 -*-
- """
- (c) 2015-2016 - Copyright Red Hat Inc
- Authors:
- Pierre-Yves Chibon <pingou@pingoured.fr>
- """
- from __future__ import unicode_literals, absolute_import
- import sqlalchemy as sa
- import wtforms
- try:
- from flask_wtf import FlaskForm
- except ImportError:
- from flask_wtf import Form as FlaskForm
- from sqlalchemy.orm import relation
- from sqlalchemy.orm import backref
- from pagure.hooks import BaseHook, BaseRunner
- from pagure.lib.model import BASE, Project
- class FedmsgTable(BASE):
- """Stores information about the fedmsg hook deployed on a project.
- Table -- hook_fedmsg
- """
- __tablename__ = "hook_fedmsg"
- id = sa.Column(sa.Integer, primary_key=True)
- project_id = sa.Column(
- sa.Integer,
- sa.ForeignKey("projects.id", onupdate="CASCADE", ondelete="CASCADE"),
- nullable=False,
- unique=True,
- index=True,
- )
- active = sa.Column(sa.Boolean, nullable=False, default=False)
- project = relation(
- "Project",
- remote_side=[Project.id],
- backref=backref(
- "fedmsg_hook",
- cascade="delete, delete-orphan",
- single_parent=True,
- uselist=False,
- ),
- )
- class FedmsgRunner(BaseRunner):
- """Runner for the fedmsg hook, it does nothing as all the magic is
- part of the default hook/runner.
- """
- pass
- class FedmsgForm(FlaskForm):
- """ Form to configure the fedmsg hook. """
- active = wtforms.BooleanField("Active", [wtforms.validators.Optional()])
- DESCRIPTION = """
- This hook pushes commit notification to the fedmsg bus to be consumed by other
- applications.
- It is different from the fedmsg setting present in the project options block
- which publishes notifications about events happening in the project via
- pagure's (web) user interface, for example: new tickets, new comments, new
- pull-requests and so on.
- This hook on the other only acts on commits.
- """
- class Fedmsg(BaseHook):
- """ Fedmsg hooks. """
- name = "Fedmsg"
- description = DESCRIPTION
- form = FedmsgForm
- db_object = FedmsgTable
- backref = "fedmsg_hook"
- form_fields = ["active"]
- runner = FedmsgRunner
- @classmethod
- def install(cls, project, dbobj):
- """Method called to install the hook for a project.
- :arg project: a ``pagure.model.Project`` object to which the hook
- should be installed
- This no longer does anything as the code has now been merged into
- the default hook. So we still need this for people to opt in/out of
- sending fedmsg notifications on commit push, but other than that
- this plugin doesn't do much anymore.
- """
- pass
- @classmethod
- def remove(cls, project):
- """Method called to remove the hook of a project.
- :arg project: a ``pagure.model.Project`` object to which the hook
- should be installed
- This no longer does anything as the code has now been merged into
- the default hook. So we still need this for people to opt in/out of
- sending fedmsg notifications on commit push, but other than that
- this plugin doesn't do much anymore.
- """
- pass
|