cleaning code

This commit is contained in:
Adrian Amaglio 2020-05-01 08:24:21 +02:00
parent f1cc88a0b1
commit 321fa8ffa0

59
main.py
View File

@ -5,15 +5,38 @@ redirect = bottle.redirect
import smtplib import smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
import os import os # for environ vars
import sys # to print ot stderr import sys # to print ot stderr
import re import re # to match our template system
import pymongo import pymongo # database
from dotenv import load_dotenv from dotenv import load_dotenv
import random, string import random, string # for tokens
import html # for sanitization import html # for sanitization
##################################################### Bottle stuff ############################################$
# The exception that is thrown when an argument is missing
class MissingParameterException (Exception):
pass
class StripPathMiddleware(object):
'''
Get that slash out of the request
'''
def __init__(self, a):
self.a = a
def __call__(self, e, h):
e['PATH_INFO'] = e['PATH_INFO'].rstrip('/')
return self.a(e, h)
app = application = bottle.Bottle()
##################################################### Configuration ############################################$
# Load file from .env file. # Load file from .env file.
load_dotenv(os.path.dirname(__file__) + '.env') load_dotenv(os.path.dirname(__file__) + '.env')
@ -21,12 +44,6 @@ token_chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
token_len = 50 token_len = 50
# The exception that is thrown when an argument is missing
class MissingParameterException (Exception):
pass
app = application = bottle.Bottle()
# Get address and port from env # Get address and port from env
listen_address = os.environ['LISTEN_ADDRESS'] if 'LISTEN_ADDRESS' in os.environ else '0.0.0.0' listen_address = os.environ['LISTEN_ADDRESS'] if 'LISTEN_ADDRESS' in os.environ else '0.0.0.0'
listen_port = os.environ['LISTEN_PORT'] if 'LISTEN_PORT' in os.environ else 8080 listen_port = os.environ['LISTEN_PORT'] if 'LISTEN_PORT' in os.environ else 8080
@ -97,14 +114,12 @@ form_regex = '\{\{(\w+)(\|\w+)?\}\}'
@app.post('/fail') @app.post('/fail')
@app.post('/fail/')
def fail (): def fail ():
a = 2/0 a = 2/0
print('lol, failed', file=sys.stderr) print('lol, failed', file=sys.stderr)
return 'failed' return 'failed'
@app.post('/submit') @app.post('/submit')
@app.post('/submit/')
def submission (): def submission ():
# Getting subject # Getting subject
if 'token' in request.forms: if 'token' in request.forms:
@ -212,7 +227,6 @@ def login(request):
##################################################### Forms ############################################$ ##################################################### Forms ############################################$
@app.post('/form') @app.post('/form')
@app.post('/form/')
def create_form (): def create_form ():
# Getting subject template # Getting subject template
if 'subject' in request.forms: if 'subject' in request.forms:
@ -255,7 +269,6 @@ def create_form ():
return 'Créé : ' + token return 'Créé : ' + token
@app.post('/form/list') @app.post('/form/list')
@app.post('/form/list/')
def list_forms (): def list_forms ():
user = login(request) user = login(request)
if user['_privilege'] == 0: if user['_privilege'] == 0:
@ -269,7 +282,6 @@ def list_forms ():
@app.delete('/form/<token>') @app.delete('/form/<token>')
@app.delete('/form/<token>/')
def delete_form(token): def delete_form(token):
# If admin or form owner # If admin or form owner
user = login(request) user = login(request)
@ -296,7 +308,6 @@ def delete_form(token):
##################################################### Users ############################################$ ##################################################### Users ############################################$
@app.post('/user/list') @app.post('/user/list')
@app.post('/user/list/')
def list_users (): def list_users ():
user = login(request) user = login(request)
if user['_privilege'] > 0: if user['_privilege'] > 0:
@ -305,7 +316,6 @@ def list_users ():
return bottle.template("list.tpl", data=mongodb_database['users'].find()) return bottle.template("list.tpl", data=mongodb_database['users'].find())
@app.put('/user/<username>') @app.put('/user/<username>')
@app.put('/user/<username>/')
def create_user (username): def create_user (username):
user = login(request) user = login(request)
if user['_privilege'] > 0: if user['_privilege'] > 0:
@ -323,7 +333,6 @@ def create_user (username):
@app.delete('/user/<username>') @app.delete('/user/<username>')
@app.delete('/user/<username>/')
def delete_user (username): def delete_user (username):
user = login(request) user = login(request)
if user['_privilege'] > 0: if user['_privilege'] > 0:
@ -340,17 +349,7 @@ def delete_user (username):
return 'Supprimé ' + username return 'Supprimé ' + username
##################################################### Bottle stuff ############################################$
class StripPathMiddleware(object):
'''
Get that slash out of the request
'''
def __init__(self, a):
self.a = a
def __call__(self, e, h):
e['PATH_INFO'] = e['PATH_INFO'].rstrip('/')
return self.a(e, h)
if __name__ == '__main__': if __name__ == '__main__':
bottle.run(app=StripPathMiddleware(app), host=listen_address, port=listen_port, debug=True) bottle.run(app=StripPathMiddleware(app), host=listen_address, port=listen_port, debug=True)
else:
prod_app = StripPathMiddleware(app)