· 5 years ago · Jul 04, 2020, 09:06 PM
1from flask import Flask, render_template, request, redirect, url_for, make_response
2from flask_wtf import FlaskForm
3from wtforms import TextField
4import json
5from waitress import serve
6from flask_compress import Compress
7import os
8SECRET_KEY = os.urandom(32)
9print(SECRET_KEY)
10currenturls = []
11compress = Compress()
12app = Flask(__name__)
13compress.init_app(app)
14app.config['SECRET_KEY'] = SECRET_KEY
15app.config['COMPRESS_MIMETYPES'] = 'text/html','text/css','text/xml','application/json','application/javascript'
16app.config['COMPRESS_MIN_SIZE'] = 1
17def refresh():
18 try:
19 with open('data.json') as json_file:
20 data = json.load(json_file)
21 except FileNotFoundError:
22 print("data.json file does not exist and needs to be created.")
23 currenturls = []
24 for i in data["urls"]: currenturls.append(i)
25refresh()
26@app.route('/<string:shortened>')
27def funccurrenturls(shortened, data):
28 refresh()
29 if(shortened in currenturls):
30 return render_template("urls.html", value=data["urls"][shortened])
31 return render_template("404.html")
32class RegistrationForm(FlaskForm):
33 URL = TextField('URL')
34 slug = TextField('Slug')
35@app.route('/', methods=['GET', 'POST'])
36def register(data):
37 form = RegistrationForm(request.form)
38 if request.method == 'POST':
39 url = form.URL.data
40 slug = form.slug.data
41 data['urls'].update({slug: url})
42 with open('data.json', 'w') as outfile: json.dump(data, outfile)
43 with open('data.json') as json_file: data = json.load(json_file)
44 currenturls = []
45 for i in data["urls"]: currenturls.append(i)
46 print(currenturls)
47 return redirect(url_for('thank_you'))
48 return render_template('register.html', form=form)
49if __name__ == '__main__':
50 serve(app, host='0.0.0.0', port=80,)