Browse Source

Add missing stats to overview

sh4nks 9 years ago
parent
commit
0bb19cf642
2 changed files with 42 additions and 28 deletions
  1. 29 12
      flaskbb/management/views.py
  2. 13 16
      flaskbb/themes/aurora/templates/management/overview.html

+ 29 - 12
flaskbb/management/views.py

@@ -22,7 +22,7 @@ from flaskbb import __version__ as flaskbb_version
 from flaskbb._compat import iteritems
 from flaskbb.forum.forms import UserSearchForm
 from flaskbb.utils.settings import flaskbb_config
-from flaskbb.utils.helpers import render_template
+from flaskbb.utils.helpers import render_template, time_diff, get_online_users
 from flaskbb.utils.decorators import admin_required, moderator_required
 from flaskbb.utils.permissions import can_ban_user, can_edit_user
 from flaskbb.extensions import db
@@ -40,17 +40,34 @@ management = Blueprint("management", __name__)
 @management.route("/")
 @moderator_required
 def overview():
-    python_version = "%s.%s" % (sys.version_info[0], sys.version_info[1])
-    user_count = User.query.count()
-    topic_count = Topic.query.count()
-    post_count = Post.query.count()
-    return render_template("management/overview.html",
-                           python_version=python_version,
-                           flask_version=flask_version,
-                           flaskbb_version=flaskbb_version,
-                           user_count=user_count,
-                           topic_count=topic_count,
-                           post_count=post_count)
+    # user and group stats
+    banned_users = User.query.filter(
+        Group.banned == True,
+        Group.id == User.primary_group_id
+    ).count()
+    if not current_app.config["REDIS_ENABLED"]:
+        online_users = User.query.filter(User.lastseen >= time_diff()).count()
+    else:
+        online_users = len(get_online_users())
+
+    stats = {
+        # user stats
+        "all_users": User.query.count(),
+        "banned_users": banned_users,
+        "online_users": online_users,
+        "all_groups": Group.query.count(),
+        # forum stats
+        "report_count": Report.query.count(),
+        "topic_count": Topic.query.count(),
+        "post_count": Post.query.count(),
+        # misc stats
+        "plugins": get_all_plugins(),
+        "python_version": "%s.%s" % (sys.version_info[0], sys.version_info[1]),
+        "flask_version": flask_version,
+        "flaskbb_version": flaskbb_version
+    }
+
+    return render_template("management/overview.html", **stats)
 
 
 @management.route("/settings", methods=["GET", "POST"])

+ 13 - 16
flaskbb/themes/aurora/templates/management/overview.html

@@ -20,6 +20,7 @@
                 <div class="stats">
                     <div class="row stats-row">
                         <div class="col-md-12 col-sm-12 col-xs-12">
+                            <!-- TODO: (Later) Show new reports, updates, etc -->
                             <div class="alert-message alert-message-success">
                                 <h4>Everything seems alright.</h4>
                                 <p>No new notifications.</p>
@@ -33,7 +34,7 @@
                                      <i class="fa fa-users text-success"></i>
                                 </div>
                                 <div class="text">
-                                    <var>{{ user_count }}</var>
+                                    <var>{{ all_users }}</var>
                                     <label class="text-muted">users</label>
                                 </div>
                             </div>
@@ -69,16 +70,16 @@
                             <div class="row stats-heading">Statistics</div>
 
                             <div class="row stats-item">
-                                <div class="key pull-left">Registered Users</div><div class="value pull-right">{{ user_count }}</div>
+                                <div class="key pull-left">Registered Users</div><div class="value pull-right">{{ all_users }}</div>
                             </div>
                             <div class="row stats-item">
-                                <div class="key pull-left">Online Users</div><div class="value pull-right">{{ user_count }}</div>
+                                <div class="key pull-left">Online Users</div><div class="value pull-right">{{ online_users }}</div>
                             </div>
                             <div class="row stats-item">
-                                <div class="key pull-left">Banned Users</div><div class="value pull-right">{{ user_count }}</div>
+                                <div class="key pull-left">Banned Users</div><div class="value pull-right">{{ banned_users }}</div>
                             </div>
                             <div class="row stats-item">
-                                <div class="key pull-left">Groups</div><div class="value pull-right">{{ user_count }}</div>
+                                <div class="key pull-left">Groups</div><div class="value pull-right">{{ all_groups }}</div>
                             </div>
                             <div class="row stats-item">
                                 <div class="key pull-left">Topics</div><div class="value pull-right">{{ topic_count }}</div>
@@ -87,7 +88,7 @@
                                 <div class="key pull-left">Posts</div><div class="value pull-right">{{ post_count }}</div>
                             </div>
                             <div class="row stats-item">
-                                <div class="key pull-left">Reports</div><div class="value pull-right">{{ post_count }}</div>
+                                <div class="key pull-left">Reports</div><div class="value pull-right">{{ report_count }}</div>
                             </div>
                         </div>
 
@@ -97,9 +98,11 @@
                             <div class="row stats-item">
                                 <div class="key pull-left">FlaskBB</div><div class="value pull-right">{{ flaskbb_version }}</div>
                             </div>
+                            <!--  TODO: Implement a API. one day..
                             <div class="row stats-item">
                                 <div class="key pull-left">FlaskBB API</div><div class="value pull-right">v1</div>
                             </div>
+                            -->
                             <div class="row stats-item">
                                 <div class="key pull-left">Flask</div><div class="value pull-right">{{ flask_version }}</div>
                             </div>
@@ -111,18 +114,12 @@
                         <div class="col-md-4 col-sm-4 col-xs-4">
                             <div class="row stats-heading">Plugins</div>
 
+                            {% for plugin in plugins %}
+
                             <div class="row stats-item">
-                                <div class="key pull-left">Portal</div><div class="value pull-right">0.1.2</div>
-                            </div>
-                            <div class="row stats-item">
-                                <div class="key pull-left">Polls</div><div class="value pull-right">1.3.0</div>
-                            </div>
-                            <div class="row stats-item">
-                                <div class="key pull-left">RSS Feed</div><div class="value pull-right">0.0.1</div>
-                            </div>
-                            <div class="row stats-item">
-                                <div class="key pull-left">Username Colors</div><div class="value pull-right">2.11</div>
+                                <div class="key pull-left">{{ plugin.name }}</div><div class="value pull-right">{{ plugin.version }}</div>
                             </div>
+                            {% endfor %}
                         </div>
                     </div>
                 </div>