mirror of
https://github.com/minetest/contentdb.git
synced 2024-11-12 18:43:48 +01:00
Redesign todo page, add ability to Approve All screenshots
This commit is contained in:
parent
896a65fd99
commit
0fd4984e5a
@ -5,53 +5,79 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Awaiting Approval</h2>
|
<h2 class="mb-4">Approval Queue</h2>
|
||||||
|
|
||||||
{% if canApproveNew and packages %}
|
<div class="row">
|
||||||
<h3>Packages</h3>
|
{% if canApproveNew and packages %}
|
||||||
<ul>
|
<div class="col-sm-6">
|
||||||
{% for p in packages %}
|
<div class="card">
|
||||||
<li><a href="{{ p.getDetailsURL() }}">
|
<h3 class="card-header">Packages</h3>
|
||||||
{{ p.title }} by {{ p.author.display_name }}
|
<div class="list-group list-group-flush">
|
||||||
</a></li>
|
{% for p in packages %}
|
||||||
{% else %}
|
<a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
|
||||||
<li><i>No packages need reviewing.</i></ul>
|
{{ p.title }} by {{ p.author.display_name }}
|
||||||
{% endfor %}
|
</a>
|
||||||
</ul>
|
{% else %}
|
||||||
{% endif %}
|
<li class="list-group-item"><i>No packages need reviewing.</i></li>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if canApproveRel and releases %}
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="card">
|
||||||
|
<h3 class="card-header">Releases</h3>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
{% for r in releases %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
||||||
|
on
|
||||||
|
<a href="{{ r.package.getDetailsURL() }}">
|
||||||
|
{{ r.package.title }} by {{ r.package.author.display_name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="list-group-item"><i>No releases need reviewing.</i></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if canApproveScn and screenshots %}
|
{% if canApproveScn and screenshots %}
|
||||||
<h3>Screenshots</h3>
|
<div class="card my-4">
|
||||||
<ul>
|
<h3 class="card-header">Screenshots
|
||||||
{% for s in screenshots %}
|
<form class="float-right" method="post" action="{{ url_for('todo_page') }}">
|
||||||
<li>
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<a href="{{ s.getEditURL() }}">{{ s.title }}</a>
|
<input type="hidden" name="action" value="screenshots_approve_all" />
|
||||||
on
|
<input class="btn btn-sm btn-primary" type="submit" value="Approve All" />
|
||||||
<a href="{{ s.package.getDetailsURL() }}">
|
</form>
|
||||||
{{ s.package.title }} by {{ s.package.author.display_name }}
|
</h3>
|
||||||
</a>
|
<ul class="card-body d-flex p-0 flex-row flex-wrap justify-content-start align-content-start p-4">
|
||||||
</li>
|
{% for s in screenshots %}
|
||||||
{% else %}
|
<li class="packagetile flex-fill"><a href="{{ s.getEditURL() }}"
|
||||||
<li><i>No screenshots need reviewing.</i></ul>
|
style="background-image: url({{ s.getThumbnailURL(3) or '/static/placeholder.png' }});">
|
||||||
{% endfor %}
|
<div class="packagegridscrub"></div>
|
||||||
</ul>
|
<div class="packagegridinfo">
|
||||||
{% endif %}
|
<h3>
|
||||||
|
{{ s.title }}
|
||||||
{% if canApproveRel and releases %}
|
<br />
|
||||||
<h3>Releases</h3>
|
<small>{{ s.package.title }} by {{ s.package.author.display_name }}</small>
|
||||||
<ul>
|
</h3>
|
||||||
{% for r in releases %}
|
<p></p>
|
||||||
<li>
|
</div>
|
||||||
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
</a></li>
|
||||||
on
|
{% else %}
|
||||||
<a href="{{ r.package.getDetailsURL() }}">
|
<li><i>No screenshots need reviewing.</i></li>
|
||||||
{{ r.package.title }} by {{ r.package.author.display_name }}
|
{% endfor %}
|
||||||
</a>
|
{% for i in range(4) %}
|
||||||
</li>
|
<li class="packagetile flex-fill"></li>
|
||||||
{% else %}
|
{% endfor %}
|
||||||
<li><i>No releases need reviewing.</i></ul>
|
</ul>
|
||||||
{% endfor %}
|
</div>
|
||||||
</ul>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if not (packages or screenshots or releases) %}
|
{% if not (packages or screenshots or releases) %}
|
||||||
@ -63,8 +89,16 @@
|
|||||||
<h2>Unadded Topic List</h2>
|
<h2>Unadded Topic List</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
There are
|
{{ total_topics - topics_to_add }} / {{ total_topics }} packages have been been added to cdb,
|
||||||
<a href="{{ url_for('todo_topics_page') }}">{{ topics_to_add }} packages</a>
|
based on cdb's forum parser. {{ topics_to_add }} remaining.
|
||||||
to be added to cdb, based on cdb's forum parser.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div class="progress my-4">
|
||||||
|
{% set perc = 32 %}
|
||||||
|
<div class="progress-bar bg-success" role="progressbar"
|
||||||
|
style="width: {{ perc }}%" aria-valuenow="{{ perc }}" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a class="btn btn-primary" href="{{ url_for('todo_topics_page') }}">View Unadded Topic List</a>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -22,7 +22,7 @@ from app import app
|
|||||||
from app.models import *
|
from app.models import *
|
||||||
from app.querybuilder import QueryBuilder
|
from app.querybuilder import QueryBuilder
|
||||||
|
|
||||||
@app.route("/todo/")
|
@app.route("/todo/", methods=["GET", "POST"])
|
||||||
@login_required
|
@login_required
|
||||||
def todo_page():
|
def todo_page():
|
||||||
canApproveNew = Permission.APPROVE_NEW.check(current_user)
|
canApproveNew = Permission.APPROVE_NEW.check(current_user)
|
||||||
@ -41,16 +41,32 @@ def todo_page():
|
|||||||
if canApproveScn:
|
if canApproveScn:
|
||||||
screenshots = PackageScreenshot.query.filter_by(approved=False).all()
|
screenshots = PackageScreenshot.query.filter_by(approved=False).all()
|
||||||
|
|
||||||
|
if not canApproveNew and not canApproveRel and not canApproveScn:
|
||||||
|
abort(403)
|
||||||
|
|
||||||
topics_to_add = ForumTopic.query \
|
if request.method == "POST":
|
||||||
|
if request.form["action"] == "screenshots_approve_all":
|
||||||
|
if not canApproveScn:
|
||||||
|
abort(403)
|
||||||
|
|
||||||
|
PackageScreenshot.query.update({ "approved": True })
|
||||||
|
db.session.commit()
|
||||||
|
return redirect(url_for("todo_page"))
|
||||||
|
else:
|
||||||
|
abort(400)
|
||||||
|
|
||||||
|
topic_query = ForumTopic.query \
|
||||||
|
.filter_by(discarded=False)
|
||||||
|
|
||||||
|
total_topics = topic_query.count()
|
||||||
|
topics_to_add = topic_query \
|
||||||
.filter(~ db.exists().where(Package.forums==ForumTopic.topic_id)) \
|
.filter(~ db.exists().where(Package.forums==ForumTopic.topic_id)) \
|
||||||
.filter_by(discarded=False) \
|
|
||||||
.count()
|
.count()
|
||||||
|
|
||||||
return render_template("todo/list.html", title="Reports and Work Queue",
|
return render_template("todo/list.html", title="Reports and Work Queue",
|
||||||
packages=packages, releases=releases, screenshots=screenshots,
|
packages=packages, releases=releases, screenshots=screenshots,
|
||||||
canApproveNew=canApproveNew, canApproveRel=canApproveRel, canApproveScn=canApproveScn,
|
canApproveNew=canApproveNew, canApproveRel=canApproveRel, canApproveScn=canApproveScn,
|
||||||
topics_to_add=topics_to_add)
|
topics_to_add=topics_to_add, total_topics=total_topics)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/todo/topics/")
|
@app.route("/todo/topics/")
|
||||||
@ -62,7 +78,7 @@ def todo_topics_page():
|
|||||||
|
|
||||||
tmp_q = ForumTopic.query
|
tmp_q = ForumTopic.query
|
||||||
if not qb.show_discarded:
|
if not qb.show_discarded:
|
||||||
tmp_q = tmp_q.filter_by(discarded=qb.show_discarded)
|
tmp_q = tmp_q.filter_by(discarded=False)
|
||||||
total = tmp_q.count()
|
total = tmp_q.count()
|
||||||
topic_count = query.count()
|
topic_count = query.count()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user