summaryrefslogtreecommitdiffstats
path: root/src/Gui/PluginList.py
blob: e57040d1814a8396f29279805352b530c47dcc9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# -*- coding: utf-8 -*-
import CCDBusBackend
from ABRTPlugin import PluginInfo, PluginSettings

class PluginInfoList(list):
    """Class to store list of PluginInfos"""
    def __init__(self,dbus_manager=None):
        self.dm = dbus_manager
        self.ddict = {}

    def load(self):
        if self.dm:
            #print "loading PluginList"
            rows = self.dm.getPluginsInfo()
            #print rows
            for row in rows:
                entry = PluginInfo()
                for column in row:
                    #print "PluginInfoList adding %s:%s" % (column,row[column])
                    entry.__dict__[column] = row[column]
                if entry.Enabled == "yes":
                    #entry.Settings = PluginSettings(self.dm.getPluginSettings(str(entry)))
                    default_settings = self.dm.getPluginSettings(str(entry))
                    entry.load_settings(default_settings)
                self.append(entry)
                self.ddict[entry.getName()] = entry
        else:
            print "db == None!"

    def getEnabledPlugins(self):
        return [x for x in self if x["Enabled"] == 'yes']

    def getActionPlugins(self):
        return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Action']

    def getDatabasePlugins(self):
        return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Database']

    def getAnalyzerPlugins(self):
        return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Analyzer']

    def getReporterPlugins(self):
        return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Reporter']



__PFList = None
__PFList_dbmanager = None

def getPluginInfoList(dbmanager,refresh=None):
    global __PFList
    global __PFList_dbmanager

    if __PFList == None or refresh or __PFList_dbmanager != dbmanager:
        __PFList = PluginInfoList(dbus_manager=dbmanager)
        __PFList.load()
        __PFList_dbmanager = dbmanager
    return __PFList

__PFList = None