|
Pierre-Yves Chibon |
295cfb |
# -*- coding: utf-8 -*-
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
"""
|
|
Pierre-Yves Chibon |
295cfb |
(c) 2016 - Copyright Red Hat Inc
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
Authors:
|
|
Pierre-Yves Chibon |
295cfb |
Pierre-Yves Chibon <pingou@pingoured.fr></pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
"""
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
67d1cc |
from __future__ import unicode_literals, absolute_import
|
|
Aurélien Bompard |
dcf6f6 |
|
|
Pierre-Yves Chibon |
295cfb |
from straight.plugin import load
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Patrick Uiterwijk |
4012dc |
from pagure.lib.model_base import BASE
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Slavek Kabrda |
370e67 |
def get_plugin_names(blacklist=None, without_backref=False):
|
|
Slavek Kabrda |
370e67 |
""" Return the list of plugins names.
|
|
Slavek Kabrda |
370e67 |
|
|
Slavek Kabrda |
370e67 |
:arg blacklist: name or list of names to not return
|
|
Slavek Kabrda |
370e67 |
:type blacklist: string or list of strings
|
|
Slavek Kabrda |
370e67 |
:arg without_backref: whether or not to include hooks that
|
|
Slavek Kabrda |
370e67 |
have backref "None"
|
|
Slavek Kabrda |
370e67 |
:type without_backref: bool
|
|
Slavek Kabrda |
370e67 |
:return: list of plugin names (strings)
|
|
Slavek Kabrda |
370e67 |
"""
|
|
Pierre-Yves Chibon |
295cfb |
from pagure.hooks import BaseHook
|
|
Pierre-Yves Chibon |
9c2953 |
|
|
Pierre-Yves Chibon |
9c2953 |
plugins = load("pagure.hooks", subclasses=BaseHook)
|
|
Pierre-Yves Chibon |
295cfb |
if not blacklist:
|
|
Pierre-Yves Chibon |
295cfb |
blacklist = []
|
|
Pierre-Yves Chibon |
295cfb |
elif not isinstance(blacklist, list):
|
|
Pierre-Yves Chibon |
295cfb |
blacklist = [blacklist]
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
output = [
|
|
Pierre-Yves Chibon |
ee649a |
plugin.name
|
|
Pierre-Yves Chibon |
ee649a |
for plugin in plugins
|
|
Slavek Kabrda |
370e67 |
if plugin.name not in blacklist and (plugin.backref or without_backref)
|
|
Pierre-Yves Chibon |
295cfb |
]
|
|
Pierre-Yves Chibon |
295cfb |
# The default hook is not one we show
|
|
Pierre-Yves Chibon |
9c2953 |
if "default" in output:
|
|
Pierre-Yves Chibon |
9c2953 |
output.remove("default")
|
|
Pierre-Yves Chibon |
295cfb |
return sorted(output)
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
def get_plugin_tables():
|
|
Pierre-Yves Chibon |
9c2953 |
""" Return the list of all plugins. """
|
|
Pierre-Yves Chibon |
9c2953 |
plugins = load("pagure.hooks", subclasses=BASE)
|
|
Pierre-Yves Chibon |
295cfb |
return plugins
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
|
|
Pierre-Yves Chibon |
295cfb |
def get_plugin(plugin_name):
|
|
Pierre-Yves Chibon |
9c2953 |
""" Return the list of plugins names. """
|
|
Pierre-Yves Chibon |
295cfb |
from pagure.hooks import BaseHook
|
|
Pierre-Yves Chibon |
9c2953 |
|
|
Pierre-Yves Chibon |
9c2953 |
plugins = load("pagure.hooks", subclasses=BaseHook)
|
|
Pierre-Yves Chibon |
295cfb |
for plugin in plugins:
|
|
Pierre-Yves Chibon |
295cfb |
if plugin.name == plugin_name:
|
|
Pierre-Yves Chibon |
295cfb |
return plugin
|
|
Patrick Uiterwijk |
4012dc |
|
|
Patrick Uiterwijk |
4012dc |
|
|
Slavek Kabrda |
adbb5f |
def get_enabled_plugins(project):
|
|
Patrick Uiterwijk |
4012dc |
""" Returns a list of plugins enabled for a specific project.
|
|
Patrick Uiterwijk |
4012dc |
|
|
Patrick Uiterwijk |
4012dc |
Args:
|
|
Patrick Uiterwijk |
4012dc |
project (model.Project): The project to look for.
|
|
Patrick Uiterwijk |
4012dc |
Returns: (list): A list of tuples (pluginclass, dbobj) with the plugin
|
|
Patrick Uiterwijk |
4012dc |
classess and dbobjects for plugins enabled for the project.
|
|
Patrick Uiterwijk |
4012dc |
"""
|
|
Patrick Uiterwijk |
4012dc |
from pagure.hooks import BaseHook
|
|
Patrick Uiterwijk |
4012dc |
|
|
Patrick Uiterwijk |
4012dc |
enabled = []
|
|
Patrick Uiterwijk |
4012dc |
for plugin in load("pagure.hooks", subclasses=BaseHook):
|
|
Slavek Kabrda |
370e67 |
if plugin.backref is None:
|
|
Slavek Kabrda |
370e67 |
if plugin.is_enabled_for(project):
|
|
Slavek Kabrda |
370e67 |
enabled.append((plugin, None))
|
|
Slavek Kabrda |
370e67 |
else:
|
|
Slavek Kabrda |
370e67 |
plugin.db_object()
|
|
Slavek Kabrda |
370e67 |
if hasattr(project, plugin.backref):
|
|
Slavek Kabrda |
370e67 |
dbobj = getattr(project, plugin.backref)
|
|
Slavek Kabrda |
370e67 |
if dbobj and dbobj.active:
|
|
Slavek Kabrda |
370e67 |
enabled.append((plugin, dbobj))
|
|
Patrick Uiterwijk |
4012dc |
return enabled
|