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)
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)
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")