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