2024-09-14 18:49:57 +00:00
|
|
|
from flask import Flask, render_template, request, redirect, url_for, session
|
2024-09-14 13:29:37 +00:00
|
|
|
from PIL import Image
|
2024-09-14 18:49:57 +00:00
|
|
|
from gen_image import gen_image
|
|
|
|
from printer_info import *
|
|
|
|
from datetime import datetime
|
2024-09-15 10:41:12 +00:00
|
|
|
from print import *
|
|
|
|
from format_image import *
|
2024-09-14 13:29:37 +00:00
|
|
|
import os
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
app.config['UPLOAD_FOLDER'] = 'static/uploads'
|
2024-09-14 18:49:57 +00:00
|
|
|
app.config['TEXT_FOLDER'] = 'static/text'
|
|
|
|
app.secret_key = "blahaj"
|
2024-09-14 13:29:37 +00:00
|
|
|
|
|
|
|
# Ensure the upload directory exists
|
|
|
|
if not os.path.exists(app.config['UPLOAD_FOLDER']):
|
|
|
|
os.makedirs(app.config['UPLOAD_FOLDER'])
|
2024-09-14 18:49:57 +00:00
|
|
|
if not os.path.exists(app.config['TEXT_FOLDER']):
|
|
|
|
os.makedirs(app.config['TEXT_FOLDER'])
|
2024-09-14 13:29:37 +00:00
|
|
|
|
2024-09-15 12:57:26 +00:00
|
|
|
#TODO: make it so sessions don't interfere with eachother
|
2024-09-14 18:49:57 +00:00
|
|
|
|
2024-09-16 15:45:11 +00:00
|
|
|
@app.route('/', methods=['GET', 'POST'])
|
|
|
|
def base():
|
|
|
|
return render_template('base.html')
|
|
|
|
|
2024-09-14 18:49:57 +00:00
|
|
|
@app.route('/image', methods=['GET', 'POST'])
|
|
|
|
def image():
|
2024-09-14 13:29:37 +00:00
|
|
|
if request.method == 'POST':
|
|
|
|
if 'image' not in request.files:
|
|
|
|
return redirect(request.url)
|
|
|
|
file = request.files['image']
|
|
|
|
|
|
|
|
if file.filename == '':
|
|
|
|
return redirect(request.url)
|
|
|
|
if file:
|
|
|
|
extension = os.path.splitext(file.filename)[1]
|
|
|
|
filepath = os.path.join(app.config['UPLOAD_FOLDER'], "upload" + extension)
|
2024-09-15 12:57:26 +00:00
|
|
|
session["filepath"] = filepath
|
2024-09-14 13:29:37 +00:00
|
|
|
|
|
|
|
file.save(filepath)
|
|
|
|
|
|
|
|
# Process image #
|
2024-09-15 12:57:26 +00:00
|
|
|
format_image(filepath).save(filepath)
|
2024-09-14 13:29:37 +00:00
|
|
|
#################
|
2024-09-15 12:57:26 +00:00
|
|
|
|
|
|
|
session["filename"] = "upload"+extension
|
|
|
|
return render_template('image.html', filename=session["filename"], cut=session["cut"])
|
|
|
|
|
|
|
|
session["cut"] = True
|
|
|
|
return render_template('image.html', cut=True)
|
|
|
|
|
|
|
|
|
|
|
|
#TODO: maybe merge some stuff with text-print
|
|
|
|
@app.route('/image-print', methods=['GET', 'POST'])
|
2024-09-16 15:45:11 +00:00
|
|
|
def image_print():
|
2024-09-15 12:57:26 +00:00
|
|
|
if request.method == 'POST':
|
|
|
|
image = format_image_to_label(session["filepath"])
|
|
|
|
print_image(image)
|
|
|
|
|
|
|
|
if 'cut' in request.form:
|
|
|
|
print("printing and cutting")
|
|
|
|
cut_paper()
|
|
|
|
session["cut"] = True;
|
|
|
|
else:
|
|
|
|
print("printing")
|
|
|
|
session["cut"] = False;
|
|
|
|
|
|
|
|
return render_template('image.html', filename=session["filename"], cut=session["cut"])
|
2024-09-14 13:29:37 +00:00
|
|
|
|
2024-09-15 12:57:26 +00:00
|
|
|
return render_template('image.html', filename=session["filename"], cut=session["cut"])
|
2024-09-14 18:49:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
templates = {
|
|
|
|
"DNH": {
|
|
|
|
"text1": {
|
|
|
|
"string": "Do Not Hack",
|
|
|
|
"size": 50,
|
|
|
|
"pos": 0
|
|
|
|
},
|
|
|
|
"text2": {
|
|
|
|
"string": "bottom text",
|
|
|
|
"size": 25,
|
|
|
|
"pos": 55
|
|
|
|
},
|
|
|
|
"cut": True
|
|
|
|
},
|
|
|
|
"Food": {
|
|
|
|
"text1": {
|
|
|
|
"string": "Nickname",
|
|
|
|
"size": 50,
|
|
|
|
"pos": 0
|
|
|
|
},
|
|
|
|
"text2": {
|
|
|
|
"string": "",
|
|
|
|
"size": 25,
|
|
|
|
"pos": 55
|
|
|
|
},
|
|
|
|
"cut": True
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@app.route('/text-template', methods=['GET', 'POST'])
|
|
|
|
def text_template():
|
|
|
|
if request.method == 'POST':
|
|
|
|
template = templates[request.form["template"]]
|
|
|
|
if request.form["template"] == "Food":
|
|
|
|
template["text2"]["string"] = datetime.now().strftime('%Y-%m-%d')
|
|
|
|
|
|
|
|
session["text1"] = template["text1"]
|
|
|
|
session["text2"] = template["text2"]
|
|
|
|
session["cut"] = template["cut"]
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
@app.route('/text-form', methods=['GET', 'POST'])
|
|
|
|
def text_form():
|
|
|
|
if request.method == 'POST':
|
|
|
|
session["text1"] = {
|
|
|
|
"string": request.form["string1"],
|
|
|
|
"size": int(request.form["size1"]),
|
|
|
|
"pos": int(request.form["pos1"]),
|
|
|
|
}
|
|
|
|
session["text2"] = {
|
|
|
|
"string": request.form["string2"],
|
|
|
|
"size": int(request.form["size2"]),
|
|
|
|
"pos": int(request.form["pos2"]),
|
|
|
|
}
|
|
|
|
|
|
|
|
img = gen_image(label_width, session["text1"], session["text2"])
|
|
|
|
filepath = os.path.join(app.config['TEXT_FOLDER'], "text.png")
|
|
|
|
img.save(filepath)
|
|
|
|
print(session)
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/text', methods=['GET', 'POST'])
|
|
|
|
def text():
|
|
|
|
session["text1"] = templates["DNH"]["text1"]
|
|
|
|
session["text2"] = templates["DNH"]["text2"]
|
|
|
|
session["cut"] = templates["DNH"]["cut"]
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/text-print', methods=['GET', 'POST'])
|
2024-09-16 15:45:11 +00:00
|
|
|
def text_print():
|
2024-09-14 18:49:57 +00:00
|
|
|
if request.method == 'POST':
|
2024-09-15 12:57:26 +00:00
|
|
|
image = format_image_to_label("static/text/text.png")
|
2024-09-15 10:41:12 +00:00
|
|
|
print_image(image)
|
|
|
|
|
2024-09-14 18:49:57 +00:00
|
|
|
if 'cut' in request.form:
|
|
|
|
print("printing and cutting")
|
2024-09-15 10:41:12 +00:00
|
|
|
cut_paper()
|
2024-09-14 18:49:57 +00:00
|
|
|
session["cut"] = True;
|
|
|
|
else:
|
|
|
|
print("printing")
|
|
|
|
session["cut"] = False;
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
|
|
|
return render_template('text.html', filename="text.png", text1=session["text1"], text2=session["text2"], cut=session["cut"])
|
|
|
|
|
2024-09-14 13:29:37 +00:00
|
|
|
|
|
|
|
@app.route('/uploads/<filename>')
|
|
|
|
def uploaded_file(filename):
|
|
|
|
return redirect(url_for('static', filename='uploads/' + filename))
|
|
|
|
|
2024-09-14 18:49:57 +00:00
|
|
|
@app.route('/text/<filename>')
|
|
|
|
def generated_file(filename):
|
|
|
|
return redirect(url_for('static', filename='text/' + filename))
|
|
|
|
|
2024-09-14 13:29:37 +00:00
|
|
|
if __name__ == "__main__":
|
|
|
|
app.run(debug=True)
|
|
|
|
|