roundabout,
created on Sunday, 16 February 2025, 08:59:39 (1739696379),
received on Sunday, 16 February 2025, 08:59:42 (1739696382)
Author identity: vlad <vlad.muntoiu@gmail.com>
0946023c7b70c6b824c95aec0217b796eecf861e
app.py
@@ -15,7 +15,7 @@ from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt from flask_migrate import Migrate, current from urllib.parse import urlencode from PIL import Imagefrom PIL import Image, ImageOpsapp = flask.Flask(__name__) bcrypt = Bcrypt(app)
@@ -27,6 +27,13 @@ db = SQLAlchemy(app)
migrate = Migrate(app, db) def make_thumbnail(pil_image): pil_image = ImageOps.exif_transpose(pil_image) pil_image.thumbnail(config.THUMBNAIL_SIZE) pil_image = pil_image.convert("RGB") return pil_image @app.template_filter("split") def split(value, separator=None, maxsplit=-1): return value.split(separator, maxsplit)
@@ -544,8 +551,7 @@ def upload_post():
file.save(path.join(config.DATA_PATH, "pictures", str(resource.id))) pil_image = Image.open(path.join(config.DATA_PATH, "pictures", str(resource.id))) resource.width, resource.height = pil_image.size pil_image.thumbnail(config.THUMBNAIL_SIZE)pil_image = pil_image.convert("RGB")pil_image = make_thumbnail(pil_image)pil_image.save(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id)), **config.THUMBNAIL_SAVE_OPTIONS) db.session.commit()
@@ -703,6 +709,10 @@ def delete_picture(id):
db.session.delete(resource) db.session.commit() # Delete the hard links for the picture and its thumbnail os.unlink(path.join(config.DATA_PATH, "pictures", str(resource.id))) os.unlink(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id))) return flask.redirect("/")
@@ -1323,8 +1333,7 @@ def raw_picture_thumbnail(id):
if not path.exists(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id))): pil_image = Image.open(path.join(config.DATA_PATH, "pictures", str(resource.id))) pil_image.thumbnail(config.THUMBNAIL_SIZE)pil_image = pil_image.convert("RGB")pil_image = make_thumbnail(pil_image)pil_image.save(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id)), **config.THUMBNAIL_SAVE_OPTIONS) response = flask.send_from_directory(path.join(config.DATA_PATH, "picture-thumbnails"),
@@ -1669,6 +1678,24 @@ def api_update_picture(id):
return flask.jsonify({"message": "Picture updated successfully"}) @app.route("/api/picture/<int:id>/delete", methods=["POST"]) def api_delete_picture(id): resource = db.session.get(PictureResource, id) if resource is None: return flask.jsonify({"error": "Picture not found"}), 404 current_user = db.session.get(User, flask.session.get("username")) if current_user is None: return flask.jsonify({"error": "You must be logged in to delete pictures"}), 401 if resource.author != current_user and not current_user.admin: return flask.jsonify({"error": "You are not the author of this picture"}), 403 PictureInGallery.query.filter_by(resource=resource).delete() db.session.delete(resource) db.session.commit() return flask.jsonify({"message": "Picture deleted successfully"}) @app.route("/api/picture/<int:id>/rate", methods=["POST"]) def api_rate_picture(id): resource = db.session.get(PictureResource, id)