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
{% 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 %}
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)