def admin_page():
if request.method == "POST":
action = request.form["action"]
+
if action == "delstuckreleases":
PackageRelease.query.filter(PackageRelease.task_id != None).delete()
db.session.commit()
return redirect(url_for("admin.admin_page"))
+
elif action == "checkreleases":
releases = PackageRelease.query.filter(PackageRelease.url.like("/uploads/%")).all()
time.sleep(0.1)
return redirect(url_for("todo.view"))
+
elif action == "reimportpackages":
tasks = []
for package in Package.query.filter_by(approved=True, soft_deleted=False).all():
time.sleep(0.1)
return redirect(url_for("todo.view"))
+
elif action == "importmodlist":
task = importTopicList.delay()
return redirect(url_for("tasks.check", id=task.id, r=url_for("todo.topics")))
+
elif action == "checkusers":
task = checkAllForumAccounts.delay()
return redirect(url_for("tasks.check", id=task.id, r=url_for("admin.admin_page")))
+
elif action == "importscreenshots":
packages = Package.query \
.filter_by(soft_deleted=False) \
importRepoScreenshot.delay(package.id)
return redirect(url_for("admin.admin_page"))
+
elif action == "restore":
package = Package.query.get(request.form["package"])
if package is None:
package.soft_deleted = False
db.session.commit()
return redirect(url_for("admin.admin_page"))
- elif action == "modprovides":
- packages = Package.query.filter_by(type=PackageType.MOD).all()
- mpackage_cache = {}
- for p in packages:
- if len(p.provides) == 0:
- p.provides.append(MetaPackage.GetOrCreate(p.name, mpackage_cache))
- db.session.commit()
- return redirect(url_for("admin.admin_page"))
elif action == "recalcscores":
for p in Package.query.all():
p.recalcScore()
db.session.commit()
return redirect(url_for("admin.admin_page"))
- elif action == "vcsrelease":
- for package in Package.query.filter(Package.repo.isnot(None)).all():
- if package.releases.count() != 0:
- continue
-
- rel = PackageRelease()
- rel.package = package
- rel.title = datetime.date.today().isoformat()
- rel.url = ""
- rel.task_id = uuid()
- rel.approved = True
- db.session.add(rel)
- db.session.commit()
-
- makeVCSRelease.apply_async((rel.id, "master"), task_id=rel.task_id)
-
- msg = "Release {} created".format(rel.title)
- addNotification(package.maintainers, current_user, msg, rel.getEditURL(), package)
- db.session.commit()
elif action == "cleanuploads":
upload_dir = app.config['UPLOAD_DIR']
{% endblock %}
{% block content %}
- <ul>
- <li><a href="{{ url_for('users.list_all') }}">User list</a></li>
- <li><a href="{{ url_for('admin.tag_list') }}">Tag Editor</a></li>
- <li><a href="{{ url_for('admin.license_list') }}">License Editor</a></li>
- <li><a href="{{ url_for('admin.version_list') }}">Version Editor</a></li>
- <li><a href="{{ url_for('admin.switch_user') }}">Sign in as another user</a></li>
- </ul>
+ <div class="row">
+ <div class="col-md-6">
+ <div class="list-group">
+ <a class="list-group-item list-group-item-action" href="{{ url_for('users.list_all') }}">User list</a>
+ <a class="list-group-item list-group-item-action" href="{{ url_for('admin.tag_list') }}">Tag Editor</a>
+ <a class="list-group-item list-group-item-action" href="{{ url_for('admin.license_list') }}">License Editor</a>
+ <a class="list-group-item list-group-item-action" href="{{ url_for('admin.version_list') }}">Version Editor</a>
+ <a class="list-group-item list-group-item-action" href="{{ url_for('admin.switch_user') }}">Sign in as another user</a>
+ </div>
+ </div>
- <div class="card my-4">
- <h2 class="card-header">Do action</h2>
+ <div class="col-md-6">
+ <div class="card mb-4">
+ <h2 class="card-header">Do action</h2>
- <form method="post" action="" class="card-body">
- <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
- <select name="action">
- <option value="delstuckreleases" selected>Delete stuck releases</option>
- <option value="checkreleases">Validate all Zip releases</option>
- <option value="reimportpackages">Reimport meta</option>
- <option value="importmodlist">Import forum topics</option>
- <option value="recalcscores">Recalculate package scores</option>
- <option value="checkusers">Check forum users</option>
- <option value="importscreenshots">Import screenshots from VCS</option>
- <option value="cleanuploads">Delete unreachable uploads</option>
- <!-- <option value="importdepends">Import dependencies from downloads</option> -->
- <!-- <option value="modprovides">Set provides to mod name</option> -->
- <!-- <option value="vcsrelease">Create VCS releases</option> -->
- </select>
- <input type="submit" value="Perform" />
- </form>
- </div>
+ <form method="post" action="" class="card-body">
+ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+ <div class="row px-3">
+ <select name="action" class="custom-select col">
+ <option value="delstuckreleases" selected>Delete stuck releases</option>
+ <option value="checkreleases">Validate all Zip releases</option>
+ <option value="reimportpackages">Reimport meta</option>
+ <option value="importmodlist">Import forum topics</option>
+ <option value="recalcscores">Recalculate package scores</option>
+ <option value="checkusers">Check forum users</option>
+ <option value="importscreenshots">Import screenshots from VCS</option>
+ <option value="cleanuploads">Delete unreachable uploads</option>
+ </select>
+ <input type="submit" value="Perform" class="col-sm-auto btn btn-primary ml-2" />
+ </div>
+ </form>
+ </div>
- <div class="card my-4">
- <h2 class="card-header">Restore Package</h2>
+ <div class="card">
+ <h2 class="card-header">Restore Package</h2>
- <form method="post" action="" class="card-body">
- <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
- <input type="hidden" name="action" value="restore" />
- <select name="package">
- {% for p in deleted_packages %}
- <option value={{ p.id }}>{{ p.id}}) {{ p.title }} by {{ p.author.display_name }}</option>
- {% endfor %}
- </select>
- <input type="submit" value="Restore" />
- </form>
+ <form method="post" action="" class="card-body">
+ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+ <input type="hidden" name="action" value="restore" />
+ <div class="row px-3">
+ <select name="package" class="custom-select col">
+ {% for p in deleted_packages %}
+ <option value={{ p.id }}>{{ p.id}}) {{ p.title }} by {{ p.author.display_name }}</option>
+ {% endfor %}
+ </select>
+ <input type="submit" value="Restore" class="col-sm-auto btn btn-primary ml-2" />
+ </div>
+ </form>
+ </div>
+ </div>
</div>
{% endblock %}