diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-05-25 18:57:30 +0100 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2018-05-25 18:57:30 +0100 |
| commit | 53df124973c15b90e070f9225fcbeccdb0e64e55 (patch) | |
| tree | 68a8b4db145ea7b51d8c1afb07aef8ab6fe2743c /app/views | |
| parent | 8cf5c7204f0ebb787eafb9ffa04c9e61a8d6d3af (diff) | |
| download | cheatdb-53df124973c15b90e070f9225fcbeccdb0e64e55.tar.xz | |
Add edit and delete screenshot
Diffstat (limited to 'app/views')
| -rw-r--r-- | app/views/admin.py | 3 | ||||
| -rw-r--r-- | app/views/packages/__init__.py | 2 | ||||
| -rw-r--r-- | app/views/packages/screenshots.py | 48 |
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) |
