From ca241f2bcfc949ca517929ca03ee8d6107e5ed86 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Sat, 6 Dec 2014 22:45:20 +0000 Subject: [PATCH] Add feature to recalculate visitor counts --- rophako/model/tracking.py | 22 +++++++++++++++++++ rophako/modules/admin/__init__.py | 9 ++++++++ .../modules/admin/templates/admin/index.html | 8 ++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/rophako/model/tracking.py b/rophako/model/tracking.py index f9f4d10..4b367eb 100644 --- a/rophako/model/tracking.py +++ b/rophako/model/tracking.py @@ -113,6 +113,28 @@ def log_referrer(request, link): return None +def rebuild_visitor_stats(): + """Recalculate the total unique/hits based on daily info.""" + total_unique = {} + total_hits = 0 + + # Tally them all up! + for date in JsonDB.list_docs("traffic/unique"): + if date == "total": + continue + db = JsonDB.get("traffic/unique/{}".format(date), cache=False) + total_unique.update(db) + for date in JsonDB.list_docs("traffic/hits"): + if date == "total": + continue + db = JsonDB.get("traffic/hits/{}".format(date), cache=False) + total_hits += db.get("hits", 0) + + # Write the outputs. + JsonDB.commit("traffic/unique/total", total_unique) + JsonDB.commit("traffic/hits/total", dict(hits=total_hits)) + + def get_visitor_details(): """Retrieve detailed visitor information for the frontend.""" result = { diff --git a/rophako/modules/admin/__init__.py b/rophako/modules/admin/__init__.py index d64b54b..472ea92 100644 --- a/rophako/modules/admin/__init__.py +++ b/rophako/modules/admin/__init__.py @@ -5,6 +5,7 @@ from flask import g, Blueprint, request, redirect, url_for, session, flash import rophako.model.user as User +import rophako.model.tracking as Tracking from rophako.modules.account import validate_create_form from rophako.utils import template, admin_required @@ -180,3 +181,11 @@ def unimpersonate(): flash("No longer impersonating.") return redirect(url_for("index")) + +@mod.route("/maint/rebuild_visitor_counts") +@admin_required +def rebuild_visitor_counts(): + """Rebuild visitor counts.""" + Tracking.rebuild_visitor_stats() + flash("Visitor counts recalculated.") + return redirect(url_for(".index")) diff --git a/rophako/modules/admin/templates/admin/index.html b/rophako/modules/admin/templates/admin/index.html index a26b9eb..5c64417 100644 --- a/rophako/modules/admin/templates/admin/index.html +++ b/rophako/modules/admin/templates/admin/index.html @@ -9,4 +9,10 @@
  • View and Manage Users
  • -{% endblock %} \ No newline at end of file +

    Maintenance Tasks

    + + + +{% endblock %}