diff options
-rw-r--r-- | app/models.py | 3 | ||||
-rw-r--r-- | app/templates/base.html | 34 | ||||
-rw-r--r-- | app/templates/todo.html | 33 | ||||
-rw-r--r-- | app/views/packages.py | 13 |
4 files changed, 66 insertions, 17 deletions
diff --git a/app/models.py b/app/models.py index 839bc49..2ab3655 100644 --- a/app/models.py +++ b/app/models.py @@ -36,6 +36,9 @@ class Permission(enum.Enum): CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL" def check(self, user): + if not user.is_authenticated: + return False + if self == Permission.APPROVE_NEW: return user.rank.atLeast(UserRank.EDITOR) else: diff --git a/app/templates/base.html b/app/templates/base.html index 687d718..f4baef4 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -14,25 +14,27 @@ <ul class="nav navbar-nav"> <li><a href="/">{{ config.USER_APP_NAME }}</a></li> {% for item in current_menu.children recursive %} - <li{% if item.children %} class="dropdown"{% endif %}> - <a href="{{ item.url }}" + {% if item.visible %} + <li{% if item.children %} class="dropdown"{% endif %}> + <a href="{{ item.url }}" + {% if item.children %} + class="dropdown-toggle" + data-toggle="dropdown" + role="button" + aria-expanded="false" + {% endif %}> + {{ item.text }} {% if item.children %} - class="dropdown-toggle" - data-toggle="dropdown" - role="button" - aria-expanded="false" - {% endif %}> - {{ item.text }} + <span class="caret"></span> + {% endif %} + </a> {% if item.children %} - <span class="caret"></span> + <ul class="dropdown-menu" role="menu"> + {{ loop(item.children) }} + </ul> {% endif %} - </a> - {% if item.children %} - <ul class="dropdown-menu" role="menu"> - {{ loop(item.children) }} - </ul> - {% endif %} - </li> + </li> + {% endif %} {% endfor %} </ul> <ul class="nav navbar-nav navbar-right"> diff --git a/app/templates/todo.html b/app/templates/todo.html new file mode 100644 index 0000000..524180a --- /dev/null +++ b/app/templates/todo.html @@ -0,0 +1,33 @@ +{% extends "base.html" %} + +{% block title %} +{{ title }} +{% endblock %} + +{% block content %} + <h2>Packages Awaiting Approval</h2> + <ul> + {% for p in approve_new %} + <li><a href="{{ p.getDetailsURL() }}"> + {{ p.title }} by {{ p.author.display_name }} + </a></li> + {% else %} + <li><i>No packages available</i></ul> + {% endfor %} + </ul> + + <h2>Releases Awaiting Approval</h2> + <ul> + {% for r in releases %} + <li> + <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><i>No packages available</i></ul> + {% endfor %} + </ul> +{% endblock %} diff --git a/app/views/packages.py b/app/views/packages.py index 60ba596..f7773b4 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -30,6 +30,17 @@ def txp_page(): packages = Package.query.filter_by(type=PackageType.TXP, approved=True).all() return render_template('packages.html', title="Texture Packs", packages=packages) +def canSeeWorkQueue(): + return Permission.APPROVE_NEW.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) + def getPageByInfo(type, author, name): user = User.query.filter_by(username=author).first() @@ -70,7 +81,7 @@ class PackageForm(FlaskForm): forums = IntegerField("Forum Topic ID", [InputRequired(), NumberRange(0,999999)]) submit = SubmitField('Save') -@menu.register_menu(app, '.new', 'Create', order=20) +@menu.register_menu(app, '.new', 'Create', order=21, visible_when=lambda: current_user.is_authenticated) @app.route("/new/", methods=['GET', 'POST']) @app.route("/<type>s/<author>/<name>/edit/", methods=['GET', 'POST']) @login_required |