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

GwWebManager.__context_view()   A

Complexity

Conditions 1

Size

Total Lines 3

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 3
rs 10
1
import os
2
from click import Argument, echo
3
4
from groundwork.patterns import GwCommandsPattern
5
6
7
from groundwork_web.patterns import GwWebPattern
8
9
10
class GwWebManager(GwWebPattern):
11
    def __init__(self, *args, **kwargs):
12
        self.name = self.__class__.__name__
13
        super().__init__(*args, **kwargs)
14
15
    def activate(self):
16
        template_folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "templates")
17
        static_folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "static")
18
        self.web.contexts.register("webmanager",
19
                                   template_folder=template_folder,
20
                                   static_folder=static_folder,
21
                                   url_prefix="/webmanager",
22
                                   description="context for web manager urls")
23
24
        self.web.routes.register("/route", ["GET"], self.__route_view, context="webmanager",
25
                                 name="route_list", description="Lists all registered routes")
26
27
        self.web.routes.register("/menu", ["GET"], self.__menu_view, context="webmanager",
28
                                 name="menu_list", description="Lists all registered menus")
29
30
        self.web.routes.register("/context", ["GET"], self.__context_view, context="webmanager",
31
                                 name="context_list", description="Lists all registered contexts")
32
33
        self.web.routes.register("/provider", ["GET"], self.__provider_view, context="webmanager",
34
                                 name="provider_list", description="Lists all registered providers")
35
36
        self.web.routes.register("/server", ["GET"], self.__server_view, context="webmanager",
37
                                 name="server_list", description="Lists all registered servers")
38
39
        webmanager_menu = self.web.menus.register("WebManager", "/webmanager")
40
        self.web.menus.register("route", "/webmanager/route", menu=webmanager_menu)
41
        self.web.menus.register("menu", "/webmanager/menu", menu=webmanager_menu)
42
        self.web.menus.register("context", "/webmanager/context", menu=webmanager_menu)
43
        self.web.menus.register("provider", "/webmanager/provider", menu=webmanager_menu)
44
        self.web.menus.register("server", "/webmanager/server", menu=webmanager_menu)
45
46
    def deactivate(self):
47
        self.commands.unregister("server_start")
48
        self.commands.unregister("server_list")
49
50
    def __server_start(self, server):
51
        servers = self.app.web.servers.get()
52
        if server not in servers.keys():
53
            echo("Server '%s' not found.")
54
            echo("Available servers: %s" % ",".join(servers.keys()))
55
        else:
56
            echo("Starting server %s" % server)
57
            servers[server].function()
58
59
    def __server_list(self):
60
        servers = self.app.web.servers.get()
61
        echo("List of registered servers\n")
62
        for name, server in servers.items():
63
            echo(name)
64
            echo("*"*len(name))
65
            echo("  Description: %s" % server.description)
66
            echo("  Plugin: %s" % server.plugin.name)
67
68
    def __route_view(self):
69
        routes = self.app.web.routes.get()
70
        return self.web.providers.render("urls.html", urls=routes)
71
72
    def __context_view(self):
73
        contexts = self.app.web.contexts.get()
74
        return self.web.providers.render("contexts.html", contexts=contexts)
75
76
    def __provider_view(self):
77
        providers = self.app.web.providers.get()
78
        return self.web.providers.render("providers.html", providers=providers)
79
80
    def __server_view(self):
81
        servers = self.app.web.servers.get()
82
        return self.web.providers.render("servers.html", servers=servers)
83
84
    def __menu_view(self):
85
        clusters = self.app.web.menus.get_clusters()
86
87
        menus = {}
88
        for cluster in clusters:
89
            menus[cluster] = self.app.web.menus.get(cluster=cluster)
90
91
        return self.web.providers.render("menus.html", menus=menus)
92
93
94