aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-05-25 18:57:30 +0100
committerrubenwardy <rw@rubenwardy.com>2018-05-25 18:57:30 +0100
commit53df124973c15b90e070f9225fcbeccdb0e64e55 (patch)
tree68a8b4db145ea7b51d8c1afb07aef8ab6fe2743c /app/views
parent8cf5c7204f0ebb787eafb9ffa04c9e61a8d6d3af (diff)
downloadcheatdb-53df124973c15b90e070f9225fcbeccdb0e64e55.tar.xz
Add edit and delete screenshot
Diffstat (limited to 'app/views')
-rw-r--r--app/views/admin.py3
-rw-r--r--app/views/packages/__init__.py2
-rw-r--r--app/views/packages/screenshots.py48
3 files changed, 49 insertions, 4 deletions
diff --git a/app/views/admin.py b/app/views/admin.py
index 6c8c4ef..2320cc6 100644
--- a/app/views/admin.py
+++ b/app/views/admin.py
@@ -36,9 +36,10 @@ def admin_page():
return redirect(url_for("check_task", id=task.id, r=url_for("user_list_page")))
elif action == "importscreenshots":
packages = Package.query \
+ .filter_by(soft_deleted=False) \
.outerjoin(PackageScreenshot, Package.id==PackageScreenshot.package_id) \
.filter(PackageScreenshot.id==None) \
- .filter_by(soft_deleted=False).all()
+ .all()
for package in packages:
importRepoScreenshot.delay(package.id)
diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py
index 340dab7..4260b1c 100644
--- a/app/views/packages/__init__.py
+++ b/app/views/packages/__init__.py
@@ -152,7 +152,7 @@ def create_edit_package_page(author=None, name=None):
package = Package.query.filter_by(name=form["name"].data, author_id=author.id).first()
if package is not None:
if package.soft_deleted:
- package.delete()
+ Package.query.filter_by(name=form["name"].data, author_id=author.id).delete()
else:
flash("Package already exists!", "error")
return redirect(url_for("create_edit_package_page"))
diff --git a/app/views/packages/screenshots.py b/app/views/packages/screenshots.py
index 7ffb70e..da21ca7 100644
--- a/app/views/packages/screenshots.py
+++ b/app/views/packages/screenshots.py
@@ -32,11 +32,18 @@ class CreateScreenshotForm(FlaskForm):
fileUpload = FileField("File Upload", [InputRequired()])
submit = SubmitField("Save")
+
+class EditScreenshotForm(FlaskForm):
+ title = StringField("Title/Caption", [Optional()])
+ approved = BooleanField("Is Approved")
+ delete = BooleanField("Delete")
+ submit = SubmitField("Save")
+
@app.route("/packages/<author>/<name>/screenshots/new/", methods=["GET", "POST"])
@login_required
@is_package_page
-def create_screenshot_page(package):
- if not package.checkPerm(current_user, Permission.MAKE_RELEASE):
+def create_screenshot_page(package, id=None):
+ if not package.checkPerm(current_user, Permission.ADD_SCREENSHOTS):
return redirect(package.getDetailsURL())
# Initial form class from post data and default data
@@ -58,3 +65,40 @@ def create_screenshot_page(package):
return redirect(package.getDetailsURL())
return render_template("packages/screenshot_new.html", package=package, form=form)
+
+@app.route("/packages/<author>/<name>/screenshots/<id>/edit/", methods=["GET", "POST"])
+@login_required
+@is_package_page
+def edit_screenshot_page(package, id):
+ screenshot = PackageScreenshot.query.get(id)
+ if screenshot is None or screenshot.package != package:
+ abort(404)
+
+ canEdit = package.checkPerm(current_user, Permission.ADD_SCREENSHOTS)
+ canApprove = package.checkPerm(current_user, Permission.APPROVE_SCREENSHOT)
+ if not (canEdit or canApprove):
+ return redirect(package.getDetailsURL())
+
+ clearNotifications(screenshot.getEditURL())
+
+ # Initial form class from post data and default data
+ form = EditScreenshotForm(formdata=request.form, obj=screenshot)
+ if request.method == "POST" and form.validate():
+ if canEdit and form["delete"].data:
+ PackageScreenshot.query.filter_by(id=id).delete()
+
+ else:
+ wasApproved = screenshot.approved
+
+ if canEdit:
+ screenshot.title = form["title"].data
+
+ if canApprove:
+ screenshot.approved = form["approved"].data
+ else:
+ screenshot.approved = wasApproved
+
+ db.session.commit()
+ return redirect(package.getDetailsURL())
+
+ return render_template("packages/screenshot_edit.html", package=package, screenshot=screenshot, form=form)