Browse Source

More work on the admin panel

sh4nks 11 years ago
parent
commit
99bbecec32

+ 14 - 0
flaskbb/__init__.py

@@ -1 +1,15 @@
+# -*- coding: utf-8 -*-
+"""
+    flaskbb
+    ~~~~~~~~~~~~~~~~~~~~
+
+    FlaskBB is a forum software written in python using the
+    microframework Flask.
+
+    :copyright: (c) 2013 by the FlaskBB Team.
+    :license: BSD, see LICENSE for more details.
+"""
+
+__version__ = '0.1-dev'
+
 from flaskbb.app import create_app
 from flaskbb.app import create_app

+ 118 - 4
flaskbb/admin/views.py

@@ -1,16 +1,30 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-from flask import Blueprint, render_template, current_app, request
+import sys
+
+from flask import (Blueprint, render_template, current_app, request,
+    __version__ as flask_version)
+
 from flaskbb.decorators import admin_required
 from flaskbb.decorators import admin_required
 from flaskbb.user.models import User, Group
 from flaskbb.user.models import User, Group
-from flaskbb.forum.models import Forum, Category
-
+from flaskbb.forum.models import Post, Topic, Forum, Category
+from flaskbb import __version__ as flaskbb_version
 
 
 admin = Blueprint("admin", __name__)
 admin = Blueprint("admin", __name__)
 
 
 @admin.route("/")
 @admin.route("/")
 @admin_required
 @admin_required
 def overview():
 def overview():
-    return render_template("admin/overview.html")
+    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("admin/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)
 
 
 
 
 @admin.route("/users")
 @admin.route("/users")
@@ -51,3 +65,103 @@ def forums():
     forums = Forum.query.\
     forums = Forum.query.\
         paginate(page, current_app.config['USERS_PER_PAGE'], False)
         paginate(page, current_app.config['USERS_PER_PAGE'], False)
     return render_template("admin/forums.html", forums=forums)
     return render_template("admin/forums.html", forums=forums)
+
+
+@admin.route("/users/<int:user_id>/edit")
+@admin_required
+def edit_user(user_id):
+    user = User.query.filter_by(id=user_id).first()
+
+    if user:
+        form = EditUserForm()
+        if form.validate_on_submit():
+            form.populate_obj(user)
+            user.save()
+        else:
+            form.username.data = user.username
+            form.email.data = user.email
+            form.password.data = user.password
+            form.birthday.data = user.birthday
+            form.gender.data = user.gender
+            form.website.data = user.website
+            form.location.data = user.location
+            form.signature.data= user.signature
+            form.avatar.data = user.avatar
+            form.notes.data = user.notes
+            form.primary_group.data = user.primary_group_id
+            form.secondary_groups.data = user.groups
+
+    flash("User successfully edited")
+    return redirect(url_for("admin.users"))
+
+
+@admin.route("/users/<int:user_id>/delete")
+@admin_required
+def delete_user(user_id):
+    user = User.query.filter_by(id=user_id).first()
+    user.delete()
+    flash("User successfully deleted")
+    return redirect(url_for("admin.users"))
+
+
+@admin.route("/users/add")
+@admin_required
+def add_user():
+    form = RegisterForm()
+    if form.validate_on_submit():
+        user = form.save()
+    return redirect(url_for("admin.users"))
+
+
+@admin.route("/groups/<int:group_id>/edit")
+@admin_required
+def edit_group(group_id):
+    group = Group.query.filter_by(id=group_id).first()
+
+    if group:
+        form = EditGroupForm()
+        if form.validate_on_submit():
+            pass
+        else:
+            pass
+
+@admin.route("/groups/<int:group_id>/delete")
+@admin_required
+def delete_group(group_id):
+    group = Group.query.filter.
+
+@admin.route("/groups/add")
+@admin_required
+def add_group():
+    pass
+
+
+@admin.route("/forums/<int:forum_id>/edit")
+@admin_required
+def edit_forum(forum_id):
+    pass
+
+@admin.route("/forums/<int:forum_id>/delete")
+@admin_required
+def delete_forum(forum_id):
+    pass
+
+@admin.route("/forums/add")
+@admin_required
+def add_forum():
+    pass
+
+@admin.route("/categories/<int:category_id>/edit")
+@admin_required
+def edit_category(category_id):
+    pass
+
+@admin.route("/categories/<int:category_id>/delete")
+@admin_required
+def delete_category(category_id):
+    pass
+
+@admin.route("/categories/add")
+@admin_required
+def add_category():
+    pass

+ 5 - 2
flaskbb/templates/admin/categories.html

@@ -1,6 +1,6 @@
 {% extends "admin/admin_layout.html" %}
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
 {% block admin_content %}
-<legend>Manage Categories</legend>
+<legend>Manage Categories | <a href="{{ url_for('admin.add_category') }}">Add Category</a></legend>
 <table class="table table-bordered">
 <table class="table table-bordered">
     <thead>
     <thead>
         <tr>
         <tr>
@@ -16,7 +16,10 @@
             <td>{{ category.id }}</td>
             <td>{{ category.id }}</td>
             <td><a href="#">{{ category.title }}</a></td>
             <td><a href="#">{{ category.title }}</a></td>
             <td>{{ category.description }}</td>
             <td>{{ category.description }}</td>
-            <td>Edit | Remove</td>
+            <td>
+                <a href="{{ url_for('admin.edit_category', category_id = category.id) }}">Edit</a> |
+                <a href="{{ url_for('admin.delete_category', category_id = category.id) }}">Delete</a>
+            </td>
         </tr>
         </tr>
         {% endfor %}
         {% endfor %}
     </tbody>
     </tbody>

+ 5 - 2
flaskbb/templates/admin/forums.html

@@ -1,6 +1,6 @@
 {% extends "admin/admin_layout.html" %}
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
 {% block admin_content %}
-<legend>Manage Forums</legend>
+<legend>Manage Forums | <a href="{{ url_for('admin.add_forum') }}">Add Forum</a></legend>
 <table class="table table-bordered">
 <table class="table table-bordered">
     <thead>
     <thead>
         <tr>
         <tr>
@@ -16,7 +16,10 @@
             <td>{{ forum.id }}</td>
             <td>{{ forum.id }}</td>
             <td><a href="#">{{ forum.title }}</a></td>
             <td><a href="#">{{ forum.title }}</a></td>
             <td>{{ forum.description }}</td>
             <td>{{ forum.description }}</td>
-            <td>Edit | Remove</td>
+            <td>
+                <a href="{{ url_for('admin.edit_forum', forum_id = forum.id) }}">Edit</a> |
+                <a href="{{ url_for('admin.delete_forum', forum_id = forum.id) }}">Delete</a>
+            </td>
         </tr>
         </tr>
         {% endfor %}
         {% endfor %}
     </tbody>
     </tbody>

+ 5 - 2
flaskbb/templates/admin/groups.html

@@ -1,6 +1,6 @@
 {% extends "admin/admin_layout.html" %}
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
 {% block admin_content %}
-<legend>Manage Groups</legend>
+<legend>Manage Groups | <a href="{{ url_for('admin.add_group') }}">Add Group</a></legend>
 <table class="table table-bordered">
 <table class="table table-bordered">
     <thead>
     <thead>
         <tr>
         <tr>
@@ -16,7 +16,10 @@
             <td>{{ group.id }}</td>
             <td>{{ group.id }}</td>
             <td><a href="#">{{ group.name }}</a></td>
             <td><a href="#">{{ group.name }}</a></td>
             <td>{{ group.description }}</td>
             <td>{{ group.description }}</td>
-            <td>Edit | Remove</td>
+            <td>
+                <a href="{{ url_for('admin.edit_group', group_id = group.id) }}">Edit</a> |
+                <a href="{{ url_for('admin.delete_group', group_id = group.id) }}">Delete</a>
+            </td>
         </tr>
         </tr>
         {% endfor %}
         {% endfor %}
     </tbody>
     </tbody>

+ 9 - 9
flaskbb/templates/admin/overview.html

@@ -1,29 +1,29 @@
 {% extends "admin/admin_layout.html" %}
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
 {% block admin_content %}
-<table class="table">
+<table class="table table-bordered">
     <thead>
     <thead>
-        <tr class="success">
+        <tr>
             <th colspan="4">Global Statistics</th>
             <th colspan="4">Global Statistics</th>
         </tr>
         </tr>
     </thead>
     </thead>
     <tbody>
     <tbody>
         <tr>
         <tr>
             <td><b>FlaskBB Version</b></td>
             <td><b>FlaskBB Version</b></td>
-            <td>0.1-dev</td>
+            <td>{{ flaskbb_version }}</td>
             <td><b>Posts</b></td>
             <td><b>Posts</b></td>
-            <td>--</td>
+            <td>{{ post_count }}</td>
         </tr>
         </tr>
         <tr>
         <tr>
             <td><b>Python Version</b></td>
             <td><b>Python Version</b></td>
-            <td>2.7.5</td>
+            <td>{{ python_version }}</td>
             <td><b>Topics</b></td>
             <td><b>Topics</b></td>
-            <td>--</td>
+            <td>{{ topic_count }}</td>
         </tr>
         </tr>
         <tr>
         <tr>
             <td><b>Flask Version</b></td>
             <td><b>Flask Version</b></td>
-            <td>0.10.1</td>
-            <td><b>User</b></td>
-            <td>--</td>
+            <td>{{ flask_version }}</td>
+            <td><b>Users</b></td>
+            <td>{{ user_count }}</td>
         </tr>
         </tr>
     </tbody>
     </tbody>
 </table>
 </table>

+ 5 - 2
flaskbb/templates/admin/users.html

@@ -1,6 +1,6 @@
 {% extends "admin/admin_layout.html" %}
 {% extends "admin/admin_layout.html" %}
 {% block admin_content %}
 {% block admin_content %}
-<legend>Manage Users</legend>
+<legend>Manage Users | <a href="{{ url_for('admin.add_user') }}">Add User</a></legend>
 <table class="table table-bordered">
 <table class="table table-bordered">
     <thead>
     <thead>
         <tr>
         <tr>
@@ -20,7 +20,10 @@
             <td>{{ user.post_count }}</td>
             <td>{{ user.post_count }}</td>
             <td>{{ user.date_joined|format_date('%b %d %Y') }}</td>
             <td>{{ user.date_joined|format_date('%b %d %Y') }}</td>
             <td>{{ user.primary_group.name }}</td>
             <td>{{ user.primary_group.name }}</td>
-            <td>Edit | Remove</td>
+            <td>
+                <a href="{{ url_for('admin.edit_user', user_id = user.id) }}">Edit</a> |
+                <a href="{{ url_for('admin.delete_user', user_id = user.id) }}">Delete</a>
+            </td>
         </tr>
         </tr>
         {% endfor %}
         {% endfor %}
     </tbody>
     </tbody>