]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add flask-admin
authorrubenwardy <rw@rubenwardy.com>
Sun, 29 Jul 2018 23:16:03 +0000 (00:16 +0100)
committerrubenwardy <rw@rubenwardy.com>
Sun, 29 Jul 2018 23:16:22 +0000 (00:16 +0100)
app/templates/admin/list.html
app/views/admin.py
requirements.txt

index a2ac6d53bef9858303452c8cf3a33163e42684ae..307821f5740ccf95e7d39b6626688537fd5c147c 100644 (file)
@@ -1,11 +1,12 @@
 {% extends "base.html" %}
 
 {% block title %}
-       Admin Tools
+Admin
 {% endblock %}
 
 {% block content %}
        <ul>
+               <li><a href="db/">Database</a></li>
                <li><a href="{{ url_for('user_list_page') }}">User list</a></li>
                <li><a href="{{ url_for('tag_list_page') }}">Tag Editor</a></li>
                <li><a href="{{ url_for('license_list_page') }}">License Editor</a></li>
index 029d4c98a1dc38891c78f7556c9f845827540496..0e448970595059f63bdf61e6f15970497fecf5b7 100644 (file)
@@ -27,6 +27,34 @@ from flask_wtf import FlaskForm
 from wtforms import *
 from app.utils import loginUser, rank_required, triggerNotif
 import datetime
+from flask_admin import Admin
+from flask_admin.contrib.sqla import ModelView
+
+class MyModelView(ModelView):
+       def is_accessible(self):
+               return current_user.is_authenticated and current_user.rank.atLeast(UserRank.ADMIN)
+
+       def inaccessible_callback(self, name, **kwargs):
+               # redirect to login page if user doesn't have access
+               return redirect(url_for('user.login', next=request.url))
+
+admin = Admin(app, name='ContentDB', template_mode='bootstrap3', url="/admin/db")
+admin.add_view(MyModelView(User, db.session))
+admin.add_view(MyModelView(Package, db.session))
+admin.add_view(MyModelView(Dependency, db.session))
+admin.add_view(MyModelView(EditRequest, db.session))
+admin.add_view(MyModelView(EditRequestChange, db.session))
+admin.add_view(MyModelView(ForumTopic, db.session))
+admin.add_view(MyModelView(License, db.session))
+admin.add_view(MyModelView(MetaPackage, db.session))
+admin.add_view(MyModelView(Notification, db.session))
+admin.add_view(MyModelView(PackageRelease, db.session))
+admin.add_view(MyModelView(PackageScreenshot, db.session))
+admin.add_view(MyModelView(Tag, db.session))
+admin.add_view(MyModelView(Thread, db.session))
+admin.add_view(MyModelView(ThreadReply, db.session))
+admin.add_view(MyModelView(UserEmailVerification, db.session))
+
 
 @app.route("/admin/", methods=["GET", "POST"])
 @rank_required(UserRank.ADMIN)
@@ -79,8 +107,8 @@ def admin_page():
 
                                rel = PackageRelease()
                                rel.package  = package
-                               rel.title    = datetime.date.today().isoformat()
-                               rel.url      = ""
+                               rel.title       = datetime.date.today().isoformat()
+                               rel.url   = ""
                                rel.task_id  = uuid()
                                rel.approved = True
                                db.session.add(rel)
@@ -98,6 +126,7 @@ def admin_page():
        deleted_packages = Package.query.filter_by(soft_deleted=True).all()
        return render_template("admin/list.html", deleted_packages=deleted_packages)
 
+
 class SwitchUserForm(FlaskForm):
        username = StringField("Username")
        submit = SubmitField("Switch")
index c590e1feead5e72b5afabc2c1e41612863731683..c65137818a9a1d41d3fc90482888a2744d85be6c 100644 (file)
@@ -14,3 +14,4 @@ Flask-FlatPages==0.6
 Flask-Migrate==2.1.1
 pillow==5.1.0
 GitPython==2.1.10
+flask-admin==1.5.1