aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-05-25 19:06:05 +0100
committerrubenwardy <rw@rubenwardy.com>2018-05-25 19:06:05 +0100
commitfb2552ab558b227f03a3b092eeb6a5f7bc406900 (patch)
treeb15887f939528d1239e1c5080f93aedcded2f690
parent53df124973c15b90e070f9225fcbeccdb0e64e55 (diff)
downloadcheatdb-fb2552ab558b227f03a3b092eeb6a5f7bc406900.tar.xz
Finish screenshot approval feature
-rw-r--r--app/models.py5
-rw-r--r--app/templates/packages/screenshot_edit.html2
-rw-r--r--app/templates/packages/view.html12
-rw-r--r--app/templates/todo.html19
-rw-r--r--app/views/packages/__init__.py4
-rw-r--r--app/views/packages/todo.py9
6 files changed, 41 insertions, 10 deletions
diff --git a/app/models.py b/app/models.py
index e8b66fb..aa67c6a 100644
--- a/app/models.py
+++ b/app/models.py
@@ -83,7 +83,8 @@ class Permission(enum.Enum):
if self == Permission.APPROVE_NEW or \
self == Permission.APPROVE_CHANGES or \
- self == Permission.APPROVE_RELEASE:
+ self == Permission.APPROVE_RELEASE or \
+ self == Permission.APPROVE_SCREENSHOT:
return user.rank.atLeast(UserRank.EDITOR)
else:
raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.")
@@ -353,7 +354,7 @@ class Package(db.Model):
author=self.author.username, name=self.name)
def getMainScreenshotURL(self):
- screenshot = self.screenshots.first()
+ screenshot = self.screenshots.filter_by(approved=True).first()
return screenshot.url if screenshot is not None else None
def getDownloadRelease(self):
diff --git a/app/templates/packages/screenshot_edit.html b/app/templates/packages/screenshot_edit.html
index 7e0f9dc..b53c07e 100644
--- a/app/templates/packages/screenshot_edit.html
+++ b/app/templates/packages/screenshot_edit.html
@@ -5,6 +5,8 @@
{% endblock %}
{% block content %}
+ <img src="{{ screenshot.getThumbnailURL() }}" alt="{{ screenshot.title }}" />
+
{% from "macros/forms.html" import render_field, render_submit_field %}
<form method="POST" action="" enctype="multipart/form-data">
{{ form.hidden_tag() }}
diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html
index 85a0b7d..e0f03c0 100644
--- a/app/templates/packages/view.html
+++ b/app/templates/packages/view.html
@@ -41,11 +41,13 @@
<ul class="screenshot_list">
{% for ss in package.screenshots %}
- <li>
- <a href="{% if package.checkPerm(current_user, 'ADD_SCREENSHOTS') %}{{ ss.getEditURL() }}{% else %}{{ ss.url }}{% endif %}">
- <img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" />
- </a>
- </li>
+ {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
+ <li>
+ <a href="{% if package.checkPerm(current_user, 'ADD_SCREENSHOTS') %}{{ ss.getEditURL() }}{% else %}{{ ss.url }}{% endif %}">
+ <img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" />
+ </a>
+ </li>
+ {% endif %}
{% endfor %}
</ul>
diff --git a/app/templates/todo.html b/app/templates/todo.html
index 35aee9a..b20f26c 100644
--- a/app/templates/todo.html
+++ b/app/templates/todo.html
@@ -8,7 +8,7 @@
{% if canApproveNew %}
<h2>Packages Awaiting Approval</h2>
<ul>
- {% for p in approve_new %}
+ {% for p in packages %}
<li><a href="{{ p.getDetailsURL() }}">
{{ p.title }} by {{ p.author.display_name }}
</a></li>
@@ -18,6 +18,23 @@
</ul>
{% endif %}
+ {% if canApproveScn %}
+ <h2>Screenshots Awaiting Approval</h2>
+ <ul>
+ {% for s in screenshots %}
+ <li>
+ <a href="{{ s.getEditURL() }}">{{ s.title }}</a>
+ on
+ <a href="{{ s.package.getDetailsURL() }}">
+ {{ s.package.title }} by {{ s.package.author.display_name }}
+ </a>
+ </li>
+ {% else %}
+ <li><i>No screenshots need reviewing.</i></ul>
+ {% endfor %}
+ </ul>
+ {% endif %}
+
{% if canApproveRel %}
<h2>Releases Awaiting Approval</h2>
<ul>
diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py
index 4260b1c..48b50e4 100644
--- a/app/views/packages/__init__.py
+++ b/app/views/packages/__init__.py
@@ -195,6 +195,10 @@ def approve_package_page(package):
else:
package.approved = True
+ screenshots = PackageScreenshot.query.filter_by(package=package, approved=False).all()
+ for s in screenshots:
+ screenshots.approved = True
+
triggerNotif(package.author, current_user,
"{} approved".format(package.title), package.getDetailsURL())
db.session.commit()
diff --git a/app/views/packages/todo.py b/app/views/packages/todo.py
index 63f843b..2635604 100644
--- a/app/views/packages/todo.py
+++ b/app/views/packages/todo.py
@@ -26,6 +26,7 @@ from app.models import *
def todo_page():
canApproveNew = Permission.APPROVE_NEW.check(current_user)
canApproveRel = Permission.APPROVE_RELEASE.check(current_user)
+ canApproveScn = Permission.APPROVE_SCREENSHOT.check(current_user)
packages = None
if canApproveNew:
@@ -35,6 +36,10 @@ def todo_page():
if canApproveRel:
releases = PackageRelease.query.filter_by(approved=False).all()
+ screenshots = None
+ if canApproveScn:
+ screenshots = PackageScreenshot.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)
+ packages=packages, releases=releases, screenshots=screenshots,
+ canApproveNew=canApproveNew, canApproveRel=canApproveRel, canApproveScn=canApproveScn)