]> git.ipfire.org Git - ipfire.org.git/commitdiff
fireinfo: Show total amount of profiles in database
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Feb 2020 12:12:19 +0000 (12:12 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Feb 2020 12:12:19 +0000 (12:12 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/templates/base.html
src/templates/fireinfo/admin.html [new file with mode: 0644]
src/web/__init__.py
src/web/fireinfo.py

index a5f6e265a978b187e678725c9e60fefe664de4dc..f9657875eb1932c6671144835f25c90537a0d10b 100644 (file)
@@ -197,6 +197,7 @@ templates_download_DATA = \
 templates_downloaddir = $(templatesdir)/download
 
 templates_fireinfo_DATA = \
+       src/templates/fireinfo/admin.html \
        src/templates/fireinfo/driver.html \
        src/templates/fireinfo/index.html \
        src/templates/fireinfo/i-use-1.png \
index 5b0ad327bc915761580e85158e789e3e888c1dfc..3a56f88c3ed5749f055e36cc668620deed8d5aca 100644 (file)
 
                                                <div class="collapse navbar-collapse" id="navbar">
                                                        <ul class="navbar-nav ml-auto">
+                                                               {% if current_user and current_user.is_staff() %}
+                                                                       <li class="nav-item">
+                                                                               <a class="nav-link {% if request.path.startswith("/admin") %}active{% end %}" href="/admin">
+                                                                                       {{ _("Admin") }}
+                                                                               </a>
+                                                                       </li>
+                                                               {% end %}
+
                                                                <li class="nav-item">
                                                                        <a class="nav-link {% if request.path.startswith("/vendors") %}active{% end %}" href="/vendors">
                                                                                {{ _("Vendors") }}
                                                <div class="container">
                                                        <div class="row flex-lg-row-reverse">
                                                                <div class="col-12 col-lg-6 text-center text-lg-right">
-                                                                       {% if not current_user and hostname in ("blog.ipfire.org", "nopaste.ipfire.org", "wiki.ipfire.org") %}
+                                                                       {% if not current_user and hostname in ("blog.ipfire.org", "fireinfo.ipfire.org", "nopaste.ipfire.org", "wiki.ipfire.org") %}
                                                                                <a href="/login">{{ _("Login") }}</a>
                                                                        {% elif current_user %}
                                                                                <p class="mb-0">
diff --git a/src/templates/fireinfo/admin.html b/src/templates/fireinfo/admin.html
new file mode 100644 (file)
index 0000000..66269ba
--- /dev/null
@@ -0,0 +1,19 @@
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Admin") }}{% end block %}
+
+{% block container %}
+       <section>
+               <div class="container">
+                       <div class="row">
+                               <div class="col col-lg-8">
+                                       <h1 class="display-2">{{ "{:,d}".format(count) }}</h1>
+
+                                       <p>
+                                               {{ _("Total amount of systems reporting back to Fireinfo") }}
+                                       </p>
+                               </div>
+                       </div>
+               </div>
+       </section>
+{% end block %}
index 0119d9a29de164365328323071bfe277aa33811b..4821c43824ec55176d6f6401b34bb66593558773 100644 (file)
@@ -198,6 +198,9 @@ class Application(tornado.web.Application):
                self.add_handlers(r"fireinfo(\.dev)?\.ipfire\.org", [
                        (r"/", fireinfo.IndexHandler),
 
+                       # Admin
+                       (r"/admin", fireinfo.AdminIndexHandler),
+
                        # Vendors
                        (r"/vendors", fireinfo.VendorsHandler),
                        (r"/vendors/(pci|usb)/([0-9a-f]{4})", fireinfo.VendorHandler),
@@ -215,7 +218,7 @@ class Application(tornado.web.Application):
 
                        # Send profiles
                        (r"/send/([a-z0-9]+)", fireinfo.ProfileSendHandler),
-               ])
+               ] + authentication_handlers)
 
                # i-use.ipfire.org
                self.add_handlers(r"i-use(\.dev)?\.ipfire\.org", [
index 47bc9258b1141c14f16b88296a5e2c0131fe97ca..a6a9858ab529668bc67fcc52fb4c5145bec6065c 100644 (file)
@@ -286,3 +286,16 @@ class DeviceAndGroupsTableModule(ui_modules.UIModule):
 
                return self.render_string("fireinfo/modules/table-devices-and-groups.html",
                                groups=groups)
+
+
+class AdminIndexHandler(BaseHandler):
+       @tornado.web.authenticated
+       def prepare(self):
+               if not self.current_user.is_staff():
+                       raise tornado.web.HTTPError(401)
+
+       @tornado.web.authenticated
+       def get(self):
+               count = self.backend.fireinfo.get_profile_count()
+
+               self.render("fireinfo/admin.html", count=count)