diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-05-29 16:19:17 +0100 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2018-05-29 16:19:17 +0100 |
| commit | 6a13dca2d511bd790e718be34f8a66bfc4cb525e (patch) | |
| tree | 7b9fb5b55319c496b21c5ab0f6757cf8dea142bc /app/views | |
| parent | 048b604a75e6a62cbc257e7c1f2b783e88ba871f (diff) | |
| download | cheatdb-6a13dca2d511bd790e718be34f8a66bfc4cb525e.tar.xz | |
Add thumbnail support
Diffstat (limited to 'app/views')
| -rw-r--r-- | app/views/__init__.py | 2 | ||||
| -rw-r--r-- | app/views/thumbnails.py | 45 |
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) |
