aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-05-29 16:19:17 +0100
committerrubenwardy <rw@rubenwardy.com>2018-05-29 16:19:17 +0100
commit6a13dca2d511bd790e718be34f8a66bfc4cb525e (patch)
tree7b9fb5b55319c496b21c5ab0f6757cf8dea142bc /app/views
parent048b604a75e6a62cbc257e7c1f2b783e88ba871f (diff)
downloadcheatdb-6a13dca2d511bd790e718be34f8a66bfc4cb525e.tar.xz
Add thumbnail support
Diffstat (limited to 'app/views')
-rw-r--r--app/views/__init__.py2
-rw-r--r--app/views/thumbnails.py45
2 files changed, 46 insertions, 1 deletions
diff --git a/app/views/__init__.py b/app/views/__init__.py
index c28ff56..21ed40d 100644
--- a/app/views/__init__.py
+++ b/app/views/__init__.py
@@ -51,7 +51,7 @@ def home_page():
packages = query.order_by(db.desc(Package.created_at)).limit(15).all()
return render_template("index.html", packages=packages, count=count)
-from . import users, githublogin, packages, sass, tasks, admin, notifications, tagseditor, meta
+from . import users, githublogin, packages, sass, tasks, admin, notifications, tagseditor, meta, thumbnails
@menu.register_menu(app, ".help", "Help", order=19, endpoint_arguments_constructor=lambda: { 'path': 'help' })
@app.route('/<path:path>/')
diff --git a/app/views/thumbnails.py b/app/views/thumbnails.py
new file mode 100644
index 0000000..d33e74c
--- /dev/null
+++ b/app/views/thumbnails.py
@@ -0,0 +1,45 @@
+# Content DB
+# Copyright (C) 2018 rubenwardy
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+from flask import *
+from app import app
+
+import glob, os
+from PIL import Image
+
+ALLOWED_RESOLUTIONS=[(332,221)]
+
+def mkdir(path):
+ if not os.path.isdir(path):
+ os.mkdir(path)
+
+@app.route("/thumbnails/<img>")
+@app.route("/thumbnails/<int:w>x<int:h>/<img>")
+def make_thumbnail(img, w=332, h=221):
+ if not (w, h) in ALLOWED_RESOLUTIONS:
+ abort(403)
+
+ mkdir("app/public/thumbnails/")
+ mkdir("app/public/thumbnails/332x221/")
+
+ cache_filepath = "public/thumbnails/{}x{}/{}".format(w, h, img)
+ source_filepath = "public/uploads/" + img
+
+ im = Image.open("app/" + source_filepath)
+ im.thumbnail((w, h), Image.ANTIALIAS)
+ im.save("app/" + cache_filepath, optimize=True)
+ return send_file(cache_filepath)