mirror of
https://github.com/minetest/contentdb.git
synced 2025-01-05 12:47:29 +01:00
Improve permission checking in work queue
This commit is contained in:
parent
71691708ae
commit
8a8b0e505b
@ -35,11 +35,15 @@ class Permission(enum.Enum):
|
|||||||
APPROVE_NEW = "APPROVE_NEW"
|
APPROVE_NEW = "APPROVE_NEW"
|
||||||
CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL"
|
CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL"
|
||||||
|
|
||||||
|
# Only return true if the permission is valid for *all* contexts
|
||||||
|
# See Package.checkPerm for package-specific contexts
|
||||||
def check(self, user):
|
def check(self, user):
|
||||||
if not user.is_authenticated:
|
if not user.is_authenticated:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if self == Permission.APPROVE_NEW:
|
if self == Permission.APPROVE_NEW or \
|
||||||
|
self == Permission.APPROVE_CHANGES or \
|
||||||
|
self == Permission.APPROVE_RELEASE:
|
||||||
return user.rank.atLeast(UserRank.EDITOR)
|
return user.rank.atLeast(UserRank.EDITOR)
|
||||||
else:
|
else:
|
||||||
raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.")
|
raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.")
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% if canApproveNew %}
|
||||||
<h2>Packages Awaiting Approval</h2>
|
<h2>Packages Awaiting Approval</h2>
|
||||||
<ul>
|
<ul>
|
||||||
{% for p in approve_new %}
|
{% for p in approve_new %}
|
||||||
@ -15,7 +16,9 @@
|
|||||||
<li><i>No packages need reviewing.</i></ul>
|
<li><i>No packages need reviewing.</i></ul>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if canApproveRel %}
|
||||||
<h2>Releases Awaiting Approval</h2>
|
<h2>Releases Awaiting Approval</h2>
|
||||||
<ul>
|
<ul>
|
||||||
{% for r in releases %}
|
{% for r in releases %}
|
||||||
@ -30,4 +33,5 @@
|
|||||||
<li><i>No releases need reviewing.</i></ul>
|
<li><i>No releases need reviewing.</i></ul>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -31,15 +31,28 @@ def txp_page():
|
|||||||
return render_template('packages.html', title="Texture Packs", packages=packages)
|
return render_template('packages.html', title="Texture Packs", packages=packages)
|
||||||
|
|
||||||
def canSeeWorkQueue():
|
def canSeeWorkQueue():
|
||||||
return Permission.APPROVE_NEW.check(current_user)
|
return Permission.APPROVE_NEW.check(current_user) or \
|
||||||
|
Permission.APPROVE_RELEASE.check(current_user) or \
|
||||||
|
Permission.APPROVE_CHANGES.check(current_user)
|
||||||
|
|
||||||
@menu.register_menu(app, '.todo', "Work Queue", order=20, visible_when=lambda: canSeeWorkQueue)
|
@menu.register_menu(app, '.todo', "Work Queue", order=20, visible_when=lambda: canSeeWorkQueue)
|
||||||
@app.route("/todo/")
|
@app.route("/todo/")
|
||||||
@login_required
|
@login_required
|
||||||
def todo_page():
|
def todo_page():
|
||||||
|
canApproveNew = Permission.APPROVE_NEW.check(current_user)
|
||||||
|
canApproveRel = Permission.APPROVE_RELEASE.check(current_user)
|
||||||
|
|
||||||
|
packages = None
|
||||||
|
if canApproveNew:
|
||||||
packages = Package.query.filter_by(approved=False).all()
|
packages = Package.query.filter_by(approved=False).all()
|
||||||
|
|
||||||
|
releases = None
|
||||||
|
if canApproveRel:
|
||||||
releases = PackageRelease.query.filter_by(approved=False).all()
|
releases = PackageRelease.query.filter_by(approved=False).all()
|
||||||
return render_template('todo.html', title="Reports and Work Queue", approve_new=packages, releases=releases)
|
|
||||||
|
return render_template('todo.html', title="Reports and Work Queue",
|
||||||
|
approve_new=packages, releases=releases,
|
||||||
|
canApproveNew=canApproveNew, canApproveRel=canApproveRel)
|
||||||
|
|
||||||
|
|
||||||
def getPageByInfo(type, author, name):
|
def getPageByInfo(type, author, name):
|
||||||
|
Loading…
Reference in New Issue
Block a user