diff --git a/app/models.py b/app/models.py index 2ab3655..2eaee9b 100644 --- a/app/models.py +++ b/app/models.py @@ -35,11 +35,15 @@ class Permission(enum.Enum): APPROVE_NEW = "APPROVE_NEW" 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): if not user.is_authenticated: 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) else: raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.") diff --git a/app/templates/todo.html b/app/templates/todo.html index edb7d4a..35aee9a 100644 --- a/app/templates/todo.html +++ b/app/templates/todo.html @@ -5,29 +5,33 @@ {% endblock %} {% block content %} -

Packages Awaiting Approval

- - {% endfor %} - + {% if canApproveNew %} +

Packages Awaiting Approval

+ + {% endfor %} + + {% endif %} -

Releases Awaiting Approval

- - {% endfor %} - + {% if canApproveRel %} +

Releases Awaiting Approval

+ + {% endfor %} + + {% endif %} {% endblock %} diff --git a/app/views/packages.py b/app/views/packages.py index 6f2d304..a294ee8 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -31,15 +31,28 @@ def txp_page(): return render_template('packages.html', title="Texture Packs", packages=packages) 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) @app.route("/todo/") @login_required def todo_page(): - packages = Package.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) + 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() + + releases = None + if canApproveRel: + releases = PackageRelease.query.filter_by(approved=False).all() + + return render_template('todo.html', title="Reports and Work Queue", + approve_new=packages, releases=releases, + canApproveNew=canApproveNew, canApproveRel=canApproveRel) def getPageByInfo(type, author, name):