From c06ab63ad9484f17cca0c1f0aebcb96e6794d62e Mon Sep 17 00:00:00 2001 From: Rafael Almeida Date: Mon, 5 Oct 2020 14:52:14 -0300 Subject: [PATCH] Finish MVP 1 --- Procfile | 1 + app.py | 27 +++++++++++++++++++++++++ forms.py | 10 +++++++++ qrcode_generator.py | 13 ++++++++++++ requirements.txt | 18 +++++++++++++++++ static/icon/android-chrome-192x192.png | Bin 0 -> 11290 bytes static/icon/android-chrome-512x512.png | Bin 0 -> 30189 bytes static/icon/apple-touch-icon.png | Bin 0 -> 10065 bytes static/icon/favicon-16x16.png | Bin 0 -> 520 bytes static/icon/favicon-32x32.png | Bin 0 -> 1249 bytes static/icon/favicon.ico | Bin 0 -> 15406 bytes static/icon/site.webmanifest | 1 + templates/base.html | 12 +++++++++++ templates/generate_qrcode.html | 10 +++++++++ templates/index.html | 11 ++++++++++ 15 files changed, 103 insertions(+) create mode 100644 Procfile create mode 100644 app.py create mode 100644 forms.py create mode 100644 qrcode_generator.py create mode 100644 requirements.txt create mode 100644 static/icon/android-chrome-192x192.png create mode 100644 static/icon/android-chrome-512x512.png create mode 100644 static/icon/apple-touch-icon.png create mode 100644 static/icon/favicon-16x16.png create mode 100644 static/icon/favicon-32x32.png create mode 100644 static/icon/favicon.ico create mode 100644 static/icon/site.webmanifest create mode 100644 templates/base.html create mode 100644 templates/generate_qrcode.html create mode 100644 templates/index.html diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..8001d1a --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn app:app \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..f3f78d2 --- /dev/null +++ b/app.py @@ -0,0 +1,27 @@ +from dotenv import main +from qrcode_generator import create_qrcode +from flask import Flask, request +from flask_bootstrap import Bootstrap +from flask.templating import render_template +from dotenv import load_dotenv +from forms import QRCodeForm + +import os + +load_dotenv() + +app = Flask(__name__) +app.config['SECRET_KEY'] = os.getenv('SECRET_KEY') +bootstrap = Bootstrap(app) + +@app.route('/', methods=['POST', 'GET']) +def homepage(): + return render_template('index.html', title='QRCode Generator', form=QRCodeForm()) + +@app.route('/generate_qrcode', methods=['POST']) +def generate_qrcode(): + img_path = create_qrcode(request.form['content']) + return render_template('generate_qrcode.html', title='generated QRCode', img = img_path, content = request.form['content']) + +if __name__ == "__main__": + app.run(threaded=True, port=9691, host='0.0.0.0') diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..d57ffe7 --- /dev/null +++ b/forms.py @@ -0,0 +1,10 @@ +from flask_wtf import FlaskForm +from wtforms import StringField +from wtforms.validators import InputRequired + +class QRCodeForm(FlaskForm): + content = StringField( + label='QRCode content', + description='Link, text, email, phone number... anything!', + validators=[InputRequired()], + ) diff --git a/qrcode_generator.py b/qrcode_generator.py new file mode 100644 index 0000000..b620c5d --- /dev/null +++ b/qrcode_generator.py @@ -0,0 +1,13 @@ +import hashlib +import segno +from datetime import datetime + +IMG_OUTPUT_PATH = 'static/qrcodes/' + +def generate_qrcode_image(content, err_lvl): + return segno.make(content, error = err_lvl) + +def create_qrcode(content, error = 'H'): + filename = IMG_OUTPUT_PATH + hashlib.sha256(f'{content}_{datetime.now()}'.encode('utf-8')).hexdigest() + '.svg' + generate_qrcode_image(content, error).save(filename, scale=10, light='white', dark='black') + return filename diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e24cbf1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,18 @@ +click==7.1.2 +colorama==0.4.3 +dominate==2.5.2 +Flask==1.1.2 +Flask-Bootstrap==3.3.7.1 +Flask-WTF==0.14.3 +gunicorn==20.0.4 +itsdangerous==1.1.0 +Jinja2==2.11.2 +MarkupSafe==1.1.1 +Pillow==7.2.0 +python-dotenv==0.14.0 +qrcode-artistic==2.1.0 +segno==1.3.1 +six==1.15.0 +visitor==0.1.3 +Werkzeug==1.0.1 +WTForms==2.3.3 diff --git a/static/icon/android-chrome-192x192.png b/static/icon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..808fe03db61b3b4b773d303bb74c5cd973581836 GIT binary patch literal 11290 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ŧ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 GA^#6>Wwvhs literal 0 HcmV?d00001 diff --git a/static/icon/apple-touch-icon.png b/static/icon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..957ffc9bb1ba6c47d17bee973a4bca5910f1d6a4 GIT binary patch literal 10065 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 literal 0 HcmV?d00001 diff --git a/static/icon/favicon-16x16.png b/static/icon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b2665c4ea7a5597acb352b5e1f980c3754090b GIT binary patch literal 520 zcmV+j0{8uiP)1j(cjgp6<88o~hatiJ zCCwAO!ApF9|C#R{UI%;)ZMTkh!SC_xv7%qxx6l+q?g4M{>NkV$-DU#1gS(pd#N&b9 zUYEstf^>VzC~xv!qfiEJPWmrpU~sx|+T| zPER>G;o^ejWfBSM>ZU?K0;Ph0gM%o`@i9$JtglmB%gzp?qY+?ij1M0uDx#v|Cz@4ldCJX zw~5Ee&Srj|%S##>u7h+&MnXJZYIT*hHTwI>%Hq=}%E~A%rlW(A5ef<-`1Ca0-J#l} z5HM+GrblNdTU%^wL^7+YXm5`iJ2yveE;Tigip524ZYV9iZDKgOd#0xYd3ogLlT0!> z88tOL_4RahQCS&%@$N1|Lutum<-ZToe;MTmkiT1|hdc16>--Jwe4%GUteDjR0000< KMNUMnLSTY>1@BJ) literal 0 HcmV?d00001 diff --git a/static/icon/favicon-32x32.png b/static/icon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ea7b7c2cd07aef1886ccccd950488f9c680b7b GIT binary patch literal 1249 zcmV<71Rnc|P)2HBYz~4X#aK;DkTC=q8YlHld0IUWwfKFc<@ATIJMZhmUsQj-v zEdubHvpgUNh;F6hro-xi-+-TeAW+RLEC4^m1IK{@|I=~PX%#@a52~7WGy~v=B;ZdV zu8o`rm#G2LeDIfhT@L_f=cV7kxf?`^I}%?2I61%3hGB0hfJ(=YK~A^<K96JUdK7?Ofw$r3nq%G;lm1bg?wz=7fC zef|u2d9ZP#`u~t8pQCWq0g;J{f`bQP#tiuQ5iVSSk`lOe3mO_=#0bdEh0dMrJ3T!F zV%RVn`|KI)+XvUK!J9YGt(%Qow#+ss)B455(uMB?Kniyt(9xp@tX&JGrEvN*Oq>WO zPQa&6p&bn!3RkXJXsfF&%yo4zZywaw!_lMGrU+(chUOI%Kz6o$Ys}1J5U zMQ-_W*tH8rkA{mEy&+XDr%kiA*|XvB;ZVP#c=IOo?hRdnM+KI$-Mekv*|RWioZbor zpbSX%c+l=d7A-Pp5Zt-r1(1^iJ9b!`o-0;_`sd7nq9V9=5Bm2HwQt%4Yu4EJ=FJvq zC>H=JR5yH)cd}wThu3h1s>rUd1nnX!poD_IT zxNRG(45%dZ>j(GmdjUvn%F3*!r3HQZz>_C7MmjKN3_O3{T*Ndl6nf~{Q|Stjuz-#o zvzasru3v}3LP$$90>;GHZh{sYYf`Mrkg5DshCx&12v9`@Bqn-+Cnp>5pd} z>9Sc(OiU+s?t}#kLXs)Rih$p5pn|5uW%6W`TiN2pM#iAj-n|Q}R>9-P#)X9oAuB7? zud`s?I+J3}_e1C~x_Z?j5zeFsIxAEe%Cp(7t-rvIF&qxH?0Wb1A8!qOukN#TiSf_c(SyMD9Z30MIo& za#u13gs$U}xs(PI8_{dI3q<68Ok5x$_iN^^vxxniHZAsV^?Uv=wT+>Y3N{=S00000 LNkvXXu0mjf+G0}G literal 0 HcmV?d00001 diff --git a/static/icon/favicon.ico b/static/icon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..59921092508c40dbef959b45b3b0df27ae659d66 GIT binary patch literal 15406 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 Qz4@H~ZSn62w8RMf53%Ja#sB~S literal 0 HcmV?d00001 diff --git a/static/icon/site.webmanifest b/static/icon/site.webmanifest new file mode 100644 index 0000000..36f03cb --- /dev/null +++ b/static/icon/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"static/icon/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"static/icon/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..baa7e75 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,12 @@ +{% extends "bootstrap/base.html" %} +{% import "bootstrap/wtf.html" as wtf %} + +{% block head %} +{{ super() }} +{% block title %}{{ title | default('@debemdeboas') }}{% endblock %} + + + + +{% endblock %} +{% block html_atrib %}lang="en"{% endblock %} diff --git a/templates/generate_qrcode.html b/templates/generate_qrcode.html new file mode 100644 index 0000000..b1972e8 --- /dev/null +++ b/templates/generate_qrcode.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} + +{% block content %} + +{% endblock %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..b0f87d3 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} + +{% block content %} +
+

welcome to the simple and effective qrcode generator (KISS principle)

+
+ {{ wtf.form_field(form.content) }} + +
+
+{% endblock %}