Done for now
This commit is contained in:
57
app.py
57
app.py
@@ -1,6 +1,15 @@
|
||||
import os
|
||||
|
||||
from flask import Flask, render_template, jsonify, abort, send_file, request, redirect, flash
|
||||
from flask import (
|
||||
Flask,
|
||||
render_template,
|
||||
jsonify,
|
||||
abort,
|
||||
send_file,
|
||||
request,
|
||||
redirect,
|
||||
flash,
|
||||
)
|
||||
from sqlalchemy import func
|
||||
from base64 import standard_b64decode, standard_b64encode
|
||||
from io import BytesIO
|
||||
@@ -8,7 +17,7 @@ from io import BytesIO
|
||||
from model import db, Post, Category, ImageBase64
|
||||
|
||||
# Check for environment variable
|
||||
env_vars = ["DATABASE_URL", "PASSWORD", 'SECRET_KEY']
|
||||
env_vars = ["DATABASE_URL", "PASSWORD", "SECRET_KEY"]
|
||||
|
||||
for env_var in env_vars:
|
||||
if not os.getenv(env_var):
|
||||
@@ -16,10 +25,10 @@ for env_var in env_vars:
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv("DATABASE_URL")
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
app.config['JSON_SORT_KEYS'] = False
|
||||
app.secret_key = os.getenv('SECRET_KEY')
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
|
||||
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
|
||||
app.config["JSON_SORT_KEYS"] = False
|
||||
app.secret_key = os.getenv("SECRET_KEY")
|
||||
|
||||
# Bind db to application
|
||||
db.init_app(app)
|
||||
@@ -28,14 +37,16 @@ db.init_app(app)
|
||||
@app.route("/")
|
||||
def index():
|
||||
posts = Post.get_posts()
|
||||
print(posts[0].title)
|
||||
# print(posts[0].title)
|
||||
|
||||
return render_template("main/index.html", posts=posts)
|
||||
|
||||
|
||||
@app.route('/<string:category_name>')
|
||||
@app.route("/<string:category_name>")
|
||||
def category(category_name):
|
||||
category_item = Category.query.filter(func.lower(Category.name) == category_name.replace('_', ' ')).first()
|
||||
category_item = Category.query.filter(
|
||||
func.lower(Category.name) == category_name.replace("_", " ")
|
||||
).first()
|
||||
|
||||
if not category_item:
|
||||
return abort(404)
|
||||
@@ -45,12 +56,12 @@ def category(category_name):
|
||||
return render_template("main/index.html", posts=posts)
|
||||
|
||||
|
||||
@app.route('/contact')
|
||||
@app.route("/contact")
|
||||
def contact():
|
||||
return render_template("main/contact.html")
|
||||
|
||||
|
||||
@app.route("/api/post/<int:post_id>", methods=["POST"])
|
||||
@app.route("/api/post/<int:post_id>")
|
||||
def get_post(post_id):
|
||||
post = Post.query.get(post_id)
|
||||
|
||||
@@ -60,7 +71,7 @@ def get_post(post_id):
|
||||
return jsonify({"success": False})
|
||||
|
||||
|
||||
@app.route('/images/<string:filename>')
|
||||
@app.route("/images/<string:filename>")
|
||||
def get_image(filename):
|
||||
image_b64 = ImageBase64.query.filter(ImageBase64.filename == filename).first()
|
||||
|
||||
@@ -69,36 +80,40 @@ def get_image(filename):
|
||||
|
||||
image = standard_b64decode(image_b64.data)
|
||||
|
||||
return send_file(BytesIO(image), mimetype=image_b64.mimetype, attachment_filename=filename)
|
||||
return send_file(
|
||||
BytesIO(image), mimetype=image_b64.mimetype, attachment_filename=filename
|
||||
)
|
||||
|
||||
|
||||
@app.route('/adm/uploadfile', methods=['POST', 'GET'])
|
||||
@app.route("/adm/uploadfile", methods=["POST", "GET"])
|
||||
def file_uploaded():
|
||||
if request.method == 'POST':
|
||||
if not request.form.get('password') == os.getenv('PASSWORD'):
|
||||
if request.method == "POST":
|
||||
if not request.form.get("password") == os.getenv("PASSWORD"):
|
||||
flash("Wrong Password")
|
||||
return redirect("/adm/uploadfile")
|
||||
|
||||
# check if the post request has the file part
|
||||
if 'files' not in request.files:
|
||||
if "files" not in request.files:
|
||||
return redirect("/adm/uploadfile")
|
||||
|
||||
files = request.files.getlist('files')
|
||||
files = request.files.getlist("files")
|
||||
|
||||
# if user does not select file, browser also
|
||||
# submit an empty part without filename
|
||||
for file in files:
|
||||
if file.filename == '':
|
||||
if file.filename == "":
|
||||
flash("No files")
|
||||
return redirect("/adm/uploadfile")
|
||||
data = standard_b64encode(file.read()).decode()
|
||||
database_object = ImageBase64(filename=file.filename, mimetype=file.mimetype, data=data)
|
||||
database_object = ImageBase64(
|
||||
filename=file.filename, mimetype=file.mimetype, data=data
|
||||
)
|
||||
db.session.add(database_object)
|
||||
|
||||
db.session.commit()
|
||||
return render_template("adm/uploadfile.html")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
app.app_context().push()
|
||||
db.create_all()
|
||||
|
||||
Reference in New Issue
Block a user