MenuPlugin.__init__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 4
rs 10
1
from groundwork.util import gw_get
2
3
4
class MenuPlugin:
5
6
    def __init__(self, plugin):
7
        self.plugin = plugin
8
        self.log = plugin.log
9
        self.app = plugin.app
10
11
    def register(self, name, link, icon=None, description=None, link_text=None, cluster="base", menu=None, func=None):
12
        return self.app.web.menus.register(name, link, self.plugin, icon, description, link_text, cluster, menu, func)
13
14
    def get(self, name=None, plugin=None, cluster="base"):
15
        return self.app.web.menus.get(name, plugin, cluster)
16
17
18
class MenuApplication:
19
    def __init__(self, app):
20
        self._routes = {}
21
        self.app = app
22
        self._menus = {"base": {}}
23
24
    def register(self, name, link, plugin, icon=None, description=None, link_text=None, cluster="base", menu=None,
25
                 func=None):
26
27
        if menu is not None:
28
            return menu.register(name, link, plugin, icon, description, link_text, func)
29
30
        if cluster not in self._menus.keys():
31
            self._menus[cluster] = {}
32
33
        if name in self._menus[cluster].keys():
34
            raise NameError("menu %s already exists in cluster %s" % (name, cluster))
35
36
        self._menus[cluster][name] = Menu(name, link, plugin, icon, description, link_text, func)
37
        return self._menus[cluster][name]
38
39
    def get(self, name=None, plugin=None, cluster="base"):
40
        if cluster not in self._menus.keys():
41
            return {}
42
43
        return gw_get(self._menus[cluster], name, plugin)
44
45
    def get_clusters(self):
46
        return self._menus.keys()
47
48
49
class Menu:
50
    """
51
    """
52
    def __init__(self, name, link, plugin, icon=None, description=None, link_text=None, func=None):
53
        self.name = name
54
        self.link = link
55
        self.icon = icon
56
        self.description = description
57
        self.func = func
58
        self.plugin = plugin
59
60
        if link_text is None:
61
            self.link_text = name
62
        else:
63
            self.link_text = link_text
64
65
        self.sub_menus = {}
66
67
    def register(self, name, link, plugin=None, icon=None, description=None, link_text=None):
68
        if name in self.sub_menus.keys():
69
            raise NameError("sub menu %s already exists for menu %s" % (name, self.name))
70
71
        if plugin is None:
72
            plugin = self.plugin
73
74
        self.sub_menus[name] = Menu(name, link, plugin, icon, description, link_text)
75
        return self.sub_menus[name]
76
77
    def unregister(self, name):
78
        if name not in self.sub_menus.keys():
79
            raise NameError("sub menu %s does not exist for menu %s" % (name, self.name))
80
        del(self.sub_menus[name])
81