Completed
Push — master ( 5e72be...193f1f )
by Daniel
01:47
created

MenuApplication.get_clusters()   A

Complexity

Conditions 1

Size

Total Lines 2

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 2
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):
12
        return self.app.web.menus.register(name, link, self.plugin, icon, description, link_text, cluster, menu)
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 = {}
23
        self._menus["base"] = {}
24
25
    def register(self, name, link, plugin, icon=None, description=None, link_text=None, cluster="base", menu=None):
26
27
        if menu is not None:
28
            return menu.register(name, link, plugin, icon, description, link_text)
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)
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):
53
        self.name = name
54
        self.link = link
55
        self.icon = icon
56
        self.description = description
57
        self.plugin = plugin
58
59
        if link_text is None:
60
            self.link_text = name
61
        else:
62
            self.link_text = link_text
63
64
        self.sub_menus = {}
65
66
    def register(self, name, link, plugin, icon=None, description=None, link_text=None):
67
        if name in self.sub_menus.keys():
68
            raise NameError("sub menu %s already exists for menu %s" % (name, self.name))
69
        self.sub_menus[name] = Menu(name, link, plugin, icon, description, link_text)
70
        return self.sub_menus[name]
71
72
    def unregister(self, name):
73
        if name not in self.sub_menus.keys():
74
            raise NameError("sub menu %s does not exist for menu %s" % (name, self.name))
75
        del(self.sub_menus[name])
76
77