diff --git a/app.py b/app.py index 20527a3..625d672 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,7 @@ from flask import Flask, render_template, send_from_directory, abort, url_for, jsonify, redirect, request, session from werkzeug.utils import secure_filename +import mysql.connector +from mysql.connector import Error import os # Get database stuff @@ -8,7 +10,27 @@ DB_PASS = os.environ.get('PASSWORD') DB_HOST = os.environ.get('HOST') DB_PORT = os.environ.get('PORT') -DB = os.environ.get('DATABASE') +DB_NAME = os.environ.get('DATABASE') + +try: + DB = mysql.connector.connect(host=DB_HOST, + port=DB_PORT, + database=DB_NAME, + user=DB_USER, + password=DB_PASS) + if DB.is_connected(): + db_Info = DB.get_server_info() + print("Connected to MySQL Server version ", db_Info) + + cursor = DB.cursor() + cursor.execute("select database();") + + record = cursor.fetchone() + print("You're connected to database: ", record) + +except Error as e: + print("Error while connecting to MySQL", e) + # Set flask config BASE_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -64,17 +86,24 @@ def home(): return render_template('home.html') -@app.route('/image/') -def image(file_id): +@app.route('/image/') +def image(request_id): + # Check if request_id is valid try: - file_id = int(file_id) + request_id = int(request_id) except ValueError: abort(404) + + # SQL injection prevention + sql = "SELECT imagename FROM images WHERE id = %s" + img_id = (request_id,) + + # Get image details + cursor = DB.cursor() + cursor.execute(sql, img_id) + result = cursor.fetchone() - 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) + return render_template('image.html', fileName=result[0], id=request_id) # @@ -84,27 +113,28 @@ def image(file_id): def image_list(item_type): if request.method != 'GET': abort(405) + + cursor = DB.cursor() + cursor.execute("SELECT id,imagename FROM images ORDER BY id DESC") + + item_list = cursor.fetchall() - 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)) + return jsonify(item_list) -@app.route('/uploads//', methods=['GET']) -def uploads(item_type, file_id): +@app.route('/uploads//', methods=['GET']) +def uploads(quality, request_file): 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): + quality = secure_filename(quality) + quality_dir = os.path.join(app.config['UPLOAD_FOLDER'], quality) + if not os.path.isdir(quality_dir): abort(404) - file_id = secure_filename(file_id) - if not os.path.isfile(os.path.join(type_dir, file_id)): + request_file = secure_filename(request_file) + + if not os.path.isfile(os.path.join(quality_dir, request_file)): abort(404) - return send_from_directory(type_dir, file_id) + return send_from_directory(quality_dir, request_file) diff --git a/example.env b/example.env new file mode 100644 index 0000000..840dbd9 --- /dev/null +++ b/example.env @@ -0,0 +1,8 @@ +# Login +USERNAME = root +PASSWORD = +HOST = localhost +PORT = 3306 + +# Database name +DATABASE = onlylegs diff --git a/static/css/style.css b/static/css/style.css index 8327468..9fbe1df 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -52,7 +52,7 @@ nav div { } nav div a { margin: 0; - padding: 1rem 1rem 1rem 0.7rem; + padding: 1rem 1rem 1rem calc(1rem - 2px); width: 100%; height: 3.5rem; display: flex; @@ -61,7 +61,7 @@ nav div a { gap: 0.5rem; text-decoration: none; color: #e8e3e3; - border-left: 0.3rem solid rgba(0, 0, 0, 0); + border-left: 2px solid rgba(0, 0, 0, 0); box-sizing: border-box; } nav div a i { @@ -81,7 +81,7 @@ nav div a span { } nav div a:hover { background-color: #121212; - border-left: 0.3rem solid #8C977D; + border-left: 2px solid #8C977D; } nav div a:hover * { color: #8C977D; @@ -101,6 +101,7 @@ main header { padding: 0; width: 100%; height: 40vh; + position: relative; background-color: #121212; border-radius: 8px; box-sizing: border-box; @@ -153,7 +154,7 @@ main header span { margin: 0 0 0 3.5rem; padding: 0.5rem; width: auto; - min-height: 90vh; + min-height: 100vh; position: relative; display: flex; flex-direction: column; diff --git a/static/css/style.css.map b/static/css/style.css.map index 99400b2..0119fc8 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 b73b8c4..346e978 100644 --- a/static/css/style.scss +++ b/static/css/style.scss @@ -83,7 +83,7 @@ nav { a { margin: 0; - padding: 1rem 1rem 1rem 0.7rem; + padding: 1rem 1rem 1rem calc(1rem - 2px); width: 100%; height: 3.5rem; @@ -95,7 +95,7 @@ nav { text-decoration: none; color: $white100; - border-left: 0.3rem solid #00000000; + border-left: 2px solid #00000000; box-sizing: border-box; @@ -123,7 +123,7 @@ nav { &:hover { background-color: $black200; - border-left: 0.3rem solid $green; + border-left: 2px solid $green; * { color: $green; @@ -152,6 +152,8 @@ main { width: 100%; height: 40vh; + position: relative; + background-color: $black200; border-radius: $rad; @@ -220,7 +222,7 @@ main { padding: 0.5rem; width: auto; - min-height: 90vh; + min-height: 100vh; position: relative; diff --git a/templates/error.html b/templates/error.html index 5c48b60..7f278d0 100644 --- a/templates/error.html +++ b/templates/error.html @@ -2,6 +2,7 @@ {% block content %}
leaves +

{{error}}

diff --git a/templates/home.html b/templates/home.html index ffb27a2..11e4eda 100644 --- a/templates/home.html +++ b/templates/home.html @@ -12,10 +12,10 @@ let imageList = []; let imageIndex = 0; - function loadMore(startIndex, amount = 10) { + function loadMore(startIndex, amount = 20) { for (let i = startIndex; i < startIndex + amount; i++) { if (i < imageList.length) { - loadImg(i, imageList[i]); + loadImg(imageList[i][0], imageList[i][1]); } } } @@ -41,13 +41,13 @@ success: function(response) { imageList = response; - loadMore(0, 20); - imageIndex += 20; + loadMore(0, 30); + imageIndex += 30; } }); $(window).scroll(function() { - if ($(window).height() + $(window).scrollTop() >= $(document).height() - 200) { + if ($(window).height() + $(window).scrollTop() >= $(document).height() - 500) { loadMore(imageIndex); imageIndex += 10; } diff --git a/templates/layout.html b/templates/layout.html index 9ec3623..84dbc0f 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -15,19 +15,19 @@
{% block content %} {% endblock %} - +