etiquette/decorators.py

52 lines
1.4 KiB
Python
Raw Normal View History

2016-11-06 04:24:43 +00:00
import flask
2016-11-06 00:58:37 +00:00
from flask import request
2016-11-06 04:24:43 +00:00
import functools
import time
2016-11-06 00:58:37 +00:00
import uuid
2016-11-27 09:06:11 +00:00
import warnings
2016-11-06 00:58:37 +00:00
def _generate_session_token():
token = str(uuid.uuid4())
#print('MAKE SESSION', token)
return token
2016-11-06 04:24:43 +00:00
2016-11-06 00:58:37 +00:00
def give_session_token(function):
@functools.wraps(function)
def wrapped(*args, **kwargs):
# Inject new token so the function doesn't know the difference
token = request.cookies.get('etiquette_session', None)
if not token:
token = _generate_session_token()
request.cookies = dict(request.cookies)
request.cookies['etiquette_session'] = token
ret = function(*args, **kwargs)
# Send the token back to the client
if not isinstance(ret, flask.Response):
ret = flask.Response(ret)
ret.set_cookie('etiquette_session', value=token, max_age=60)
return ret
2016-11-06 04:24:43 +00:00
return wrapped
def not_implemented(function):
'''
Decorator to remember what needs doing.
'''
warnings.warn('%s is not implemented' % function.__name__)
return function
def time_me(function):
'''
2016-11-27 09:06:11 +00:00
After the function is run, print the elapsed time.
2016-11-06 04:24:43 +00:00
'''
@functools.wraps(function)
def timed_function(*args, **kwargs):
start = time.time()
result = function(*args, **kwargs)
end = time.time()
print('%s: %0.8f' % (function.__name__, end-start))
return result
return timed_function