]> git.ipfire.org Git - ipfire.org.git/commitdiff
analytics: Show total page views/last 24 hours
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 7 Jan 2024 18:25:12 +0000 (18:25 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 7 Jan 2024 18:25:12 +0000 (18:25 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/analytics.py
src/templates/analytics/index.html
src/web/analytics.py

index 9172adade1ce7d71c5bd3caf29be2b2327477f4f..ac35013038de82169568415f41b0d00439032db7 100644 (file)
@@ -89,7 +89,40 @@ class Analytics(misc.Object):
                        term or "",
                )
 
-       def get_total_page_views(self, host, uri, since=None):
+       def get_total_page_views(self, host, since=None):
+               # Make since an absolute timestamp
+               if since and isinstance(since, datetime.timedelta):
+                       since = datetime.datetime.utcnow() - since
+
+               if since:
+                       res = self.db.get("""
+                               SELECT
+                                       COUNT(*) AS c
+                               FROM
+                                       analytics_unique_visits
+                               WHERE
+                                       host = %s
+                               AND
+                                       created_at >= %s
+                               """, host, since,
+                       )
+               else:
+                       res = self.db.get("""
+                               SELECT
+                                       COUNT(*) AS c
+                               FROM
+                                       analytics_unique_visits
+                               WHERE
+                                       host = %s
+                               """, host,
+                       )
+
+               if res and res.c:
+                       return res.c
+
+               return 0
+
+       def get_page_views(self, host, uri, since=None):
                # Make since an absolute timestamp
                if since and isinstance(since, datetime.timedelta):
                        since = datetime.datetime.utcnow() - since
index 73b54377d943ade1b70288151b964eaa261b7fb8..8cd60afb1f8339b642798a1887be85c3691fb2a4 100644 (file)
@@ -3,6 +3,8 @@
 {% block title %}{{ _("Analytics") }}{% end block %}
 
 {% block container %}
+       {% import datetime %}
+
        <section class="hero is-primary">
                <div class="hero-body">
                        <div class="container">
                        </div>
                </div>
        </section>
+
+       {# Fetch some data #}
+       {% set total_page_views     = backend.analytics.get_total_page_views(request.host) %}
+       {% set total_page_views_24h = backend.analytics.get_total_page_views(request.host,
+               since=datetime.timedelta(hours=24)) %}
+
+       <section class="section">
+               <div class="container">
+                       <div class="level">
+                               <div class="level-item has-text-centered">
+                                       <div>
+                                               <p class="heading">{{ _("Total Page Views") }}</p>
+                                               <p class="title">
+                                                       {{ total_page_views }}
+                                               </p>
+                                       </div>
+                               </div>
+
+                               <div class="level-item has-text-centered">
+                                       <div>
+                                               <p class="heading">{{ _("Total Page Views (Last 24h)") }}</p>
+                                               <p class="title">
+                                                       {{ total_page_views_24h }}
+                                               </p>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </section>
 {% end block %}
index a5f13704de8a15233a26cbe623dc1db1451368aa..ab8179e5704d35317589d0987c602eb5f29c4209 100644 (file)
@@ -21,11 +21,11 @@ class SummaryModule(ui_modules.UIModule):
                        uri = self.request.path
 
                # Fetch the total number of page views
-               total_page_views = self.backend.analytics.get_total_page_views(host, uri)
+               total_page_views = self.backend.analytics.get_page_views(host, uri)
 
                # Fetch the total number of page views in the last 24h
-               total_page_views_24h = self.backend.analytics.get_total_page_views(host, uri,
+               total_page_views_24h = self.backend.analytics.get_page_views(host, uri,
                        since=datetime.timedelta(hours=24))
 
-               return self.render_string("analytics/modules/summary.html",
-                       host=host, uri=uri, total_page_views=total_page_views, total_page_views_24h=total_page_views_24h)
+               return self.render_string("analytics/modules/summary.html", host=host, uri=uri,
+                       total_page_views=total_page_views, total_page_views_24h=total_page_views_24h)