taymath/helpers.py

55 lines
1.5 KiB
Python

import requests
from flask import redirect, render_template, request, session
from functools import wraps
from sympy import *
import random
x, y, z, t, X, Y, Z, T = symbols('x y z t X Y Z T')
def apology(message, code=400):
"""Render message as an apology to user."""
def escape(s):
"""
Escape special characters.
https://github.com/jacebrowning/memegen#special-characters
"""
for old, new in [("-", "--"), (" ", "-"), ("_", "__"), ("?", "~q"),
("%", "~p"), ("#", "~h"), ("/", "~s"), ("\"", "''")]:
s = s.replace(old, new)
return s
return render_template("apology.html", top=code, bottom=escape(message)), code
def login_required(f):
"""
Decorate routes to require login.
http://flask.pocoo.org/docs/1.0/patterns/viewdecorators/
"""
@wraps(f)
def decorated_function(*args, **kwargs):
if session.get("user_id") is None:
return redirect("/login")
return f(*args, **kwargs)
return decorated_function
def usd(value):
"""Format value as USD."""
return f"${value:,.2f}"
def setup_symbols(f):
f = sympify(f)
# replace commonly used variables with x
for letter in [x, y, z, t, X, Y, Z, T]:
f = f.subs(letter, x)
return f
def gif_apology(message="oopsy", code=400):
"Render gif failure"
PATH = 'static/img/gifs/reaction' + str(random.randint(1,5)) + '.gif'
return render_template("gif_apology.html", PATH=PATH)