diff --git a/.gitignore b/.gitignore index 09add58..782016b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,11 @@ -# temporarily remove image folder -static/images +# Remove all development files +uploads/ + +# remove all PyCharm files +.idea + +# remove all VSCode files +.vscode # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/app.py b/app.py index 8f770b3..20527a3 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,6 @@ from flask import Flask, render_template, send_from_directory, abort, url_for, j from werkzeug.utils import secure_filename import os - # Get database stuff DB_USER = os.environ.get('USERNAME') DB_PASS = os.environ.get('PASSWORD') @@ -11,13 +10,12 @@ DB_PORT = os.environ.get('PORT') DB = os.environ.get('DATABASE') - # Set flask config BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -IMAGE_DIR = os.path.join(BASE_DIR, 'static/images') +UPLOAD_FOLDER = os.path.join(BASE_DIR, 'uploads') app = Flask(__name__) -app.config['IMAGE_DIR'] = IMAGE_DIR +app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # @@ -27,31 +25,35 @@ app.config['IMAGE_DIR'] = IMAGE_DIR def method_not_allowed(e): error = '405' msg = 'Method sussy wussy' - return render_template('error.html', error = error, msg = msg), 404 + return render_template('error.html', error=error, msg=msg), 404 + @app.errorhandler(404) def page_not_found(e): error = '404' msg = 'Could not find what you need!' - return render_template('error.html', error = error, msg = msg), 404 + return render_template('error.html', error=error, msg=msg), 404 + @app.errorhandler(403) def forbidden(e): error = '403' msg = 'Go away! This is no place for you!' - return render_template('error.html', error = error, msg = msg), 403 + return render_template('error.html', error=error, msg=msg), 403 + @app.errorhandler(410) def gone(e): error = '410' msg = 'The page is no longer available! *sad face*' - return render_template('error.html', error = error, msg = msg), 410 + return render_template('error.html', error=error, msg=msg), 410 + @app.errorhandler(500) def internal_server_error(e): error = '500' msg = 'Server died inside :c' - return render_template('error.html', error = error, msg = msg), 500 + return render_template('error.html', error=error, msg=msg), 500 # @@ -59,33 +61,50 @@ def internal_server_error(e): # @app.route('/') def home(): - image_list = os.listdir(app.config['IMAGE_DIR']) - return render_template('home.html', images = image_list) + return render_template('home.html') -@app.route('/image/') -def image(id): + +@app.route('/image/') +def image(file_id): try: - id = int(id) + file_id = int(file_id) except ValueError: abort(404) - - image_list = os.listdir(app.config['IMAGE_DIR']) - fileName = image_list[id] - - return render_template('image.html', fileName = fileName, id = id) + + file_list = os.listdir(os.path.join(app.config['UPLOAD_FOLDER'], 'original')) + file_name = file_list[file_id] + + return render_template('image.html', fileName=file_name, id=file_id) # # METHODS # -@app.route('/fileList', methods = ['GET']) -def imageList(): - image_list = os.listdir(app.config['IMAGE_DIR']) - return jsonify(image_list) +@app.route('/fileList/', methods=['GET']) +def image_list(item_type): + if request.method != 'GET': + abort(405) -@app.route('/file/', methods = ['GET']) -def pfp(filename): - if (request.method == 'GET'): - return send_from_directory(app.config['IMAGE_DIR'], filename) - else: - return None \ No newline at end of file + item_type = secure_filename(item_type) + type_dir = os.path.join(app.config['UPLOAD_FOLDER'], item_type) + if not os.path.isdir(type_dir): + abort(404) + + return jsonify(os.listdir(type_dir)) + + +@app.route('/uploads//', methods=['GET']) +def uploads(item_type, file_id): + if request.method != 'GET': + abort(405) + + item_type = secure_filename(item_type) + type_dir = os.path.join(app.config['UPLOAD_FOLDER'], item_type) + if not os.path.isdir(type_dir): + abort(404) + + file_id = secure_filename(file_id) + if not os.path.isfile(os.path.join(type_dir, file_id)): + abort(404) + + return send_from_directory(type_dir, file_id) diff --git a/static/css/style.css b/static/css/style.css index a24a283..2d969f0 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -39,7 +39,7 @@ nav { box-sizing: border-box; z-index: 2; overflow: hidden; - transition: width 0.4s ease-in-out, background-color 0.3s ease-in-out; + transition: width 0.4s cubic-bezier(0.86, 0, 0.07, 1), background-color 0.3s ease-in-out; } nav:hover { width: 25rem; @@ -100,13 +100,11 @@ main { box-sizing: border-box; } main header { - margin: 0 0 -15rem 0; + margin: 0 0 -10vh 0; padding: 0; width: 100%; height: 40vh; background-color: #121212; - position: fixed; - top: 0; box-sizing: border-box; } main header img { @@ -115,6 +113,7 @@ main header img { left: 0; width: 100%; height: 100%; + filter: blur(0.5rem); -o-object-fit: cover; object-fit: cover; } @@ -125,8 +124,6 @@ main header span { width: 100%; height: 100%; background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), #151515); - -webkit-backdrop-filter: blur(0.5rem); - backdrop-filter: blur(0.5rem); z-index: 1; } @@ -145,7 +142,7 @@ main header span { opacity: 0; z-index: 2; cursor: pointer; - transition: all 0.2s ease-in-out; + transition: all 0.2s cubic-bezier(0.86, 0, 0.07, 1); } #topButton:hover { background-color: #121212; @@ -153,17 +150,17 @@ main header span { } .app { - margin: 10rem 1rem 0 4.5rem; + margin: 0 0 0 3.5rem; padding: 1rem; width: auto; - min-height: calc(150vh - 10rem); + min-height: 90vh; position: relative; display: flex; flex-direction: column; gap: 1rem; background-color: #151515; color: #e8e3e3; - border-radius: 0.5rem 0.5rem 0 0; + border-radius: 8px 8px 0 0; box-sizing: border-box; z-index: 1; overflow: unset; @@ -178,6 +175,29 @@ main header span { color: #8C977D; } +@-webkit-keyframes imgLoading { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +@keyframes imgLoading { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} .gallery { margin: 0; padding: 0; @@ -191,8 +211,11 @@ main header span { padding: 0; height: auto; position: relative; - background-color: #121212; - border-radius: 0.25rem; + background: linear-gradient(-45deg, #151515, #0e0e0e, #151515); + background-size: 400% 400%; + border-radius: 4px; + -webkit-animation: imgLoading 10s ease infinite; + animation: imgLoading 10s ease infinite; box-sizing: border-box; overflow: hidden; } @@ -216,7 +239,7 @@ main header span { z-index: 1; opacity: 0; transform: scale(1.05); - transition: all 0.35s ease-in-out; + transition: all 0.5s cubic-bezier(0.79, 0.14, 0.15, 0.86); } .gallery .gallery__item .gallery__item-info h2 { margin: 0; @@ -229,7 +252,7 @@ main header span { text-overflow: ellipsis; overflow: hidden; opacity: 0; - transition: all 0.35s ease-in-out; + transition: all 0.2s ease-in-out; } .gallery .gallery__item .gallery__item-info p { margin: 0; @@ -241,7 +264,7 @@ main header span { text-overflow: ellipsis; overflow: hidden; opacity: 0; - transition: all 0.35s ease-in-out; + transition: all 0.2s ease-in-out; } .gallery .gallery__item .gallery__item-info:hover { opacity: 1; @@ -264,7 +287,7 @@ main header span { object-fit: cover; -o-object-position: center; object-position: center; - border-radius: 0.5rem; + border-radius: 4px; } .image__container { @@ -276,7 +299,7 @@ main header span { position: sticky; top: 0; display: flex; - border-radius: 0.25rem; + border-radius: 4px; background-color: #121212; box-sizing: border-box; } @@ -289,7 +312,7 @@ main header span { object-fit: contain; -o-object-position: center; object-position: center; - border-radius: 0.25rem; + border-radius: 4px; } .image__info { @@ -299,7 +322,7 @@ main header span { display: flex; flex-direction: column; background-color: #121212; - border-radius: 0.25rem; + border-radius: 4px; box-sizing: border-box; } .image__info h2 { diff --git a/static/css/style.css.map b/static/css/style.css.map index 7b25819..94c53d7 100644 --- a/static/css/style.css.map +++ b/static/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.scss","style.css"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/static/css/style.scss b/static/css/style.scss index 4d304cc..77dd12d 100644 --- a/static/css/style.scss +++ b/static/css/style.scss @@ -1,6 +1,7 @@ $black100: #151515; $black200: #121212; $black300: #101010; +$black400: #0e0e0e; $white100: #e8e3e3; @@ -11,7 +12,7 @@ $green: #8C977D; $blue: #8DA3B9; $purple: #A988B0; -$rad: 0.5rem; +$rad: 8px; $font-header: "Hubot-Sans", sans-serif; $font-body: "Mona-Sans", sans-serif; @@ -66,7 +67,7 @@ nav { box-sizing: border-box; z-index: 2; overflow: hidden; - transition: width 0.4s ease-in-out, background-color 0.3s ease-in-out; + transition: width 0.4s cubic-bezier(.86,0,.07,1), background-color 0.3s ease-in-out; &:hover { width: 25rem; @@ -148,15 +149,13 @@ main { box-sizing: border-box; header { - margin: 0 0 -15rem 0; + margin: 0 0 calc((10vh) * -1) 0; padding: 0; width: 100%; height: 40vh; background-color: $black200; - position: fixed; - top: 0; box-sizing: border-box; @@ -168,6 +167,8 @@ main { width: 100%; height: 100%; + filter: blur(0.5rem); + object-fit: cover; } span { @@ -179,7 +180,6 @@ main { height: 100%; background-image: linear-gradient(to bottom, #00000000, rgba($black100, 1)); - backdrop-filter: blur(0.5rem); z-index: +1; } @@ -208,7 +208,7 @@ main { cursor: pointer; - transition: all 0.2s ease-in-out; + transition: all 0.2s cubic-bezier(.86,0,.07,1); &:hover { background-color: $black200; @@ -217,11 +217,11 @@ main { } .app { - margin: 10rem 1rem 0 4.5rem; + margin: 0 0 0 3.5rem; padding: 1rem; width: auto; - min-height: calc(150vh - 10rem); + min-height: 90vh; position: relative; @@ -250,6 +250,18 @@ main { } } +@keyframes imgLoading { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + .gallery { margin: 0; padding: 0; @@ -268,9 +280,11 @@ main { position: relative; - background-color: $black200; + background: linear-gradient(-45deg, $black100, $black400, $black100); + background-size: 400% 400%; border-radius: calc($rad / 2); - + animation: imgLoading 10s ease infinite; + box-sizing: border-box; overflow: hidden; @@ -301,7 +315,7 @@ main { opacity: 0; // hide transform: scale(1.05); // scale up - transition: all 0.35s ease-in-out; + transition: all 0.5s cubic-bezier(.79,.14,.15,.86); h2 { margin: 0; @@ -318,7 +332,7 @@ main { overflow: hidden; opacity: 0; // hide - transition: all 0.35s ease-in-out; + transition: all 0.2s ease-in-out; } p { @@ -335,7 +349,7 @@ main { overflow: hidden; opacity: 0; // hide - transition: all 0.35s ease-in-out; + transition: all 0.2s ease-in-out; } &:hover { @@ -364,7 +378,7 @@ main { object-fit: cover; object-position: center; - border-radius: $rad; + border-radius: calc($rad / 2); } } diff --git a/static/images/leaves.jpg b/static/images/leaves.jpg new file mode 100644 index 0000000..5a8e723 Binary files /dev/null and b/static/images/leaves.jpg differ diff --git a/templates/home.html b/templates/home.html index 703e711..7a79727 100644 --- a/templates/home.html +++ b/templates/home.html @@ -5,28 +5,51 @@
-

Gallery

+

Gallery

diff --git a/templates/image.html b/templates/image.html index 5739b08..75bee52 100644 --- a/templates/image.html +++ b/templates/image.html @@ -1,12 +1,9 @@ {% extends 'layout.html' %} {% block content %} -
- leaves - -
+
- +

{{ fileName }}

diff --git a/templates/layout.html b/templates/layout.html index aa34a00..839146d 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -50,7 +50,7 @@ } function imgFade(obj) { - $(obj).fadeIn(1000); + $(obj).fadeIn(621); }