Completed
Push — master ( 3b5137...dd25e3 )
by Daniel
52s
created

GwWeb.__server_list()   A

Complexity

Conditions 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 8
rs 9.4285
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 GwWeb(GwWebPattern, GwCommandsPattern):
11
    def __init__(self, *args, **kwargs):
12
        self.name = kwargs.get("name", self.__class__.__name__)
13
        super().__init__(*args, **kwargs)
14
15
    def activate(self):
16
        self.commands.register("server_start", "starts a given server",
17
                               self.__server_start,
18
                               params=[Argument(("server",), required=True)])
19
20
        self.commands.register("server_list", "prints a list of registered server",
21
                               self.__server_list)
22
23
        template_folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "templates")
24
        static_folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "static")
25
        self.web.contexts.register("web",
26
                                   template_folder=template_folder,
27
                                   static_folder=static_folder,
28
                                   url_prefix=None,
29
                                   description="web context, which was created by GwWeb as initial context")
30
31
        if self.app.config.get("SHOW_WEB_TEST_PAGE", True):
32
            self.web.routes.register("/test", ["GET"], self.__test_view,
33
                                     name="Test", description="Test view of GwWeb")
34
35
        # Register the flask debug server.
36
        self.web.servers.register("flask_debug", self.__start_flask_debug_server, "Starts the flask debug server")
37
38
    def deactivate(self):
39
        self.commands.unregister("server_start")
40
        self.commands.unregister("server_list")
41
42
    def __server_start(self, server):
43
        servers = self.app.web.servers.get()
44
        if server not in servers.keys():
45
            echo("Server '%s' not found.")
46
            echo("Available servers: %s" % ",".join(servers.keys()))
47
        else:
48
            echo("Starting server %s" % server)
49
            servers[server].function()
50
51
    def __server_list(self):
52
        servers = self.app.web.servers.get()
53
        echo("List of registered servers\n")
54
        for name, server in servers.items():
55
            echo(name)
56
            echo("*"*len(name))
57
            echo("  Description: %s" % server.description)
58
            echo("  Plugin: %s" % server.plugin.name)
59
60
    def __start_flask_debug_server(self):
61
        self.web.flask.run()
62
63
    def __test_view(self):
64
        return self.web.render("test.html")
65
66
67