Browse Source

Further work on the admin panel

sh4nks 11 years ago
parent
commit
91b8aacb5d

+ 31 - 9
flaskbb/admin/views.py

@@ -1,6 +1,9 @@
 # -*- coding: utf-8 -*-
-from flask import Blueprint, render_template
+from flask import Blueprint, render_template, current_app, request
 from flaskbb.decorators import admin_required
+from flaskbb.user.models import User, Group
+from flaskbb.forum.models import Forum, Category
+
 
 admin = Blueprint("admin", __name__)
 
@@ -9,17 +12,36 @@ admin = Blueprint("admin", __name__)
 def overview():
     return render_template("admin/overview.html")
 
+
 @admin.route("/users")
 @admin_required
-def manage_users():
-    pass
+def users():
+    page = request.args.get("page", 1, type=int)
+
+    users = User.query.\
+        paginate(page, current_app.config['USERS_PER_PAGE'], False)
 
-@admin.route("/posts")
+    return render_template("admin/users.html", users=users)
+
+
+@admin.route("/groups")
 @admin_required
-def manage_posts():
-    pass
+def groups():
+    page = request.args.get("page", 1, type=int)
+
+    groups = Group.query.\
+        paginate(page, current_app.config['USERS_PER_PAGE'], False)
+
+    return render_template("admin/groups.html", groups=groups)
+
+
+@admin.route("/categories")
+@admin_required
+def categories():
+    return render_template("admin/categories.html")
+
 
-@admin.route("/pages")
+@admin.route("/forums")
 @admin_required
-def manage_pages():
-    pass
+def forums():
+    return render_template("admin/forums.html")

+ 19 - 15
flaskbb/templates/admin/admin_layout.html

@@ -1,18 +1,22 @@
 {% extends "layout.html" %}
 {% block content %}
-<div class="container">
-    This is the Admin Panel which is still a Work in Progress<br \><br \>
-    <div class="tabbable tabs-left">
-        <ul class="nav nav-tabs nav-left">
-            {%- from 'macros.html' import navlink with context-%}
-            {{ navlink('admin.overview', 'Overview') }}
-            {{ navlink('admin.manage_users', 'Manage Users') }}
-            {{ navlink('admin.manage_posts', 'Manage Posts') }}
-            {{ navlink('admin.manage_pages', 'Manage Pages') }}
-        </ul>
-        <div class="tab-content">
-            {% block admin_content %}{% endblock %}
-        </div>
-    </div>
-</div>
+{%- from 'macros.html' import navlink with context-%}
+
+<div class="row">
+    <div class="col-md-3">
+        <div class="sidebar">
+            <ul class="nav sidenav">
+                <li class="nav-header">Options</li>
+                {{ navlink('admin.overview', 'Overview') }}
+                {{ navlink('admin.users', 'Users') }}
+                {{ navlink('admin.groups', 'Groups') }}
+                {{ navlink('admin.categories', 'Categories') }}
+                {{ navlink('admin.forums', 'Forums') }}
+            </ul>
+        </div><!--/.sidebar -->
+    </div><!--/.col-md-3 -->
+    <div class="col-md-9">
+        {% block admin_content %}{% endblock %}
+    </div><!--/.col-md-9 -->
+</div><!--/.row -->
 {% endblock %}

+ 0 - 20
flaskbb/templates/admin/edit_page.html

@@ -1,20 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-<form action="{{ url_for('admin.edit_page', page_id=page.pid) }}" method="post" name="edit">
-    <fieldset>
-    {%- from 'macros/wtf_macros.html' import form_field -%}
-    {{ form.hidden_tag() }}
-
-    <legend>New Page</legend>
-
-    {{ form_field(form.title) }}
-
-    {{ form_field(form.position) }}
-
-    {{ form_field(form.content, rows="20", class="span10") }}
-
-    <button type="submit" class="btn">Save!</button>
-
-    </fieldset>
-</form>
-{% endblock %}

+ 26 - 0
flaskbb/templates/admin/forums.html

@@ -0,0 +1,26 @@
+{% extends "admin/admin_layout.html" %}
+{% block admin_content %}
+<legend>Manage Forums and Categories</legend>
+<table class="table table-bordered">
+    <thead>
+        <tr>
+            <th>#</th>
+            <th>Forum Name</th>
+            <th>Description</th>
+            <th>Posts/Topics</th>
+        </tr>
+    </thead>
+    <tbody>
+        {#
+        {% for group in groups.items %}
+        <tr>
+            <td>{{ group.id }}</td>
+            <td><a href="#">{{ group.name }}</a></td>
+            <td>{{ group.description }}</td>
+            <td>1</td>
+        </tr>
+        {% endfor %}
+        #}
+    </tbody>
+</table>
+{% endblock %}

+ 24 - 0
flaskbb/templates/admin/groups.html

@@ -0,0 +1,24 @@
+{% extends "admin/admin_layout.html" %}
+{% block admin_content %}
+<legend>Manage Groups</legend>
+<table class="table table-bordered">
+    <thead>
+        <tr>
+            <th>#</th>
+            <th>Group Name</th>
+            <th>Description</th>
+            <th>Members</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for group in groups.items %}
+        <tr>
+            <td>{{ group.id }}</td>
+            <td><a href="#">{{ group.name }}</a></td>
+            <td>{{ group.description }}</td>
+            <td>1</td>
+        </tr>
+        {% endfor %}
+    </tbody>
+</table>
+{% endblock %}

+ 0 - 36
flaskbb/templates/admin/manage_groups.html

@@ -1,36 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th colspan="4">Global Statistics</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td><b>SomeBlocks Version</b></td>
-                        <td>someblocks-20130220-git</td>
-                        <td><b>Posts</b></td>
-                        <td>50 Posts</td>
-                    </tr>
-                    <tr>
-                        <td><b>Python Version</b></td>
-                        <td>{{ py_ver }}</td>
-                        <td><b>Comments</b></td>
-                        <td>1237 Comments</td>
-                    </tr>
-                    <tr>
-                        <td><b>Flask Version</b></td>
-                        <td>0.9</td>
-                        <td><b>User</b></td>
-                        <td>456 Users</td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td><b>Group</b></td>
-                        <td>10 Groups</td>
-                    </tr>
-                </tbody>
-            </table>
-{% endblock %}

+ 0 - 21
flaskbb/templates/admin/manage_info.html

@@ -1,21 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th>Manage Pages</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td colspan="2">
-                            <b><a href="#">Page Title</a></b>
-                        </td>
-                        <td colspan="2">
-                            <i class="icon-trash"></i> <a href="#">Edit Page</a>
-                            <i class="icon-edit"></i> <a href="#">Delete Page</a>
-                        </td>
-                    </tr>
-                </tbody>
-            </table>
-{% endblock %}

+ 0 - 27
flaskbb/templates/admin/manage_pages.html

@@ -1,27 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th>Manage Pages | <small><a href="{{ url_for('admin.new_page') }}">New Page</a><small></th>
-                    </tr>
-                </thead>
-                <tbody>
-                {% for page in pages %}
-                    <tr>
-                        <td colspan="2">
-                            {% if not page.external %}
-                            <b><a href="{{ url_for('frontend.pages', url=page.url) }}">{{ page.title }}</a></b>
-                            {% else %}
-                            <b><a href="{{ page.url }}">{{ page.title }}</a></b> <i class="icon-external-link"></i>
-                            {% endif %}
-                        </td>
-                        <td colspan="2">
-                            <i class="icon-trash"></i> <a href="{{ url_for('admin.edit_page', page_id=page.pid) }}">Edit Page</a>
-                            <i class="icon-edit"></i> <a href="{{ url_for('admin.delete_page', page_id=page.pid) }}">Delete Page</a>
-                        </td>
-                    </tr>
-                {% endfor %}
-                </tbody>
-            </table>
-{% endblock %}

+ 0 - 23
flaskbb/templates/admin/manage_posts.html

@@ -1,23 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th>Manage Posts | <small><a href="{{ url_for('blog.new_post') }}">New Post</a><small></th>
-                    </tr>
-                </thead>
-                <tbody>
-                {% for post in posts %}
-                    <tr>
-                        <td colspan="2">
-                            <b><a href="{{ url_for('blog.post', id=post.pid) }}">{{ post.title }}</a></b>
-                        </td>
-                        <td colspan="2">
-                            <i class="icon-trash"></i> <a href="{{ url_for('blog.edit_post', id = post.pid) }}">Edit Post</a>
-                            <i class="icon-edit"></i> <a href="{{ url_for('blog.delete_post', id = post.pid) }}">Delete Post</a>
-                        </td>
-                    </tr>
-                {% endfor %}
-                </tbody>
-            </table>
-{% endblock %}

+ 0 - 23
flaskbb/templates/admin/manage_users.html

@@ -1,23 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th>Manage Users</th>
-                    </tr>
-                </thead>
-                <tbody>
-                {% for user in users %}
-                    <tr>
-                        <td colspan="2">
-                            <b><a href="{{ url_for('users.profile', username=user.username) }}">{{ user.username }}</a></b>
-                        </td>
-                        <td colspan="2">
-                            <i class="icon-trash"></i> <a href="{{ url_for('users.editprofile', username = user.username) }}">Edit User</a>
-                            <i class="icon-edit"></i> <a href="{{ url_for('admin.delete_user', username = user.username) }}">Delete User</a>
-                        </td>
-                    </tr>
-                {% endfor %}
-                </tbody>
-            </table>
-{% endblock %}

+ 0 - 25
flaskbb/templates/admin/new_page.html

@@ -1,25 +0,0 @@
-{% extends "admin/admin_base.html" %}
-{% block admin_content %}
-<form action="{{ url_for('admin.new_page') }}" method="post" name="new">
-    <fieldset>
-    {%- from 'macros/wtf_macros.html' import form_field -%}
-
-    {{ form.hidden_tag() }}
-
-    <legend>New Page</legend>
-
-    {{ form_field(form.title) }}
-
-    {{ form_field(form.url, placeholder="e.q. about or about_us") }}
-
-    {{ form_field(form.external) }}
-
-    {{ form_field(form.position) }}
-
-    {{ form_field(form.content, rows="20", class="span10") }}
-
-
-    <button type="submit" class="btn">Submit!</button>
-    </fieldset>
-</form>
-{% endblock %}

+ 27 - 29
flaskbb/templates/admin/overview.html

@@ -1,32 +1,30 @@
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
-
-            <table class="table table-stripped table-hover">
-                <thead>
-                    <tr class="success">
-                        <th colspan="4">Global Statistics</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td><b>FlaskBB Version</b></td>
-                        <td>0.1</td>
-                        <td><b>Posts</b></td>
-                        <td>10 Posts</td>
-                    </tr>
-                    <tr>
-                        <td><b>Python Version</b></td>
-                        <td>2.7.5</td>
-                        <td><b>Comments</b></td>
-                        <td>10 Comments</td>
-                    </tr>
-                    <tr>
-                        <td><b>Flask Version</b></td>
-                        <td>0.10.1</td>
-                        <td><b>User</b></td>
-                        <td>10 Users</td>
-                    </tr>
-                </tbody>
-            </table>
-
+<table class="table">
+    <thead>
+        <tr class="success">
+            <th colspan="4">Global Statistics</th>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td><b>FlaskBB Version</b></td>
+            <td>0.1-dev</td>
+            <td><b>Posts</b></td>
+            <td>--</td>
+        </tr>
+        <tr>
+            <td><b>Python Version</b></td>
+            <td>2.7.5</td>
+            <td><b>Topics</b></td>
+            <td>--</td>
+        </tr>
+        <tr>
+            <td><b>Flask Version</b></td>
+            <td>0.10.1</td>
+            <td><b>User</b></td>
+            <td>--</td>
+        </tr>
+    </tbody>
+</table>
 {% endblock %}

+ 26 - 0
flaskbb/templates/admin/users.html

@@ -0,0 +1,26 @@
+{% extends "admin/admin_layout.html" %}
+{% block admin_content %}
+<legend>Manage Users</legend>
+<table class="table table-bordered">
+    <thead>
+        <tr>
+            <th>#</th>
+            <th>Username</th>
+            <th>Posts</th>
+            <th>Date registered</th>
+            <th>Group</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for user in users.items %}
+        <tr>
+            <td>{{ user.id }}</td>
+            <td><a href="{{ url_for('user.profile', username=user.username) }}">{{ user.username }}</a></td>
+            <td>{{ user.post_count }}</td>
+            <td>{{ user.date_joined|format_date('%b %d %Y') }}</td>
+            <td>{{ user.primary_group.name }}</td>
+        </tr>
+        {% endfor %}
+    </tbody>
+</table>
+{% endblock %}