-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutil.py
109 lines (85 loc) · 2.85 KB
/
util.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import gzip
import json
import os
from functools import wraps
import bcrypt
from flask import make_response
from flask import render_template
from flask import request
from flask import session
from werkzeug.utils import secure_filename
ALLOWED_EXTENSIONS = ('png', 'jpg', 'jpeg', 'webp')
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
def save_image(app):
file = request.files['image']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
def hash_password(password):
return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
def check_password(password, hashed_password):
return bcrypt.checkpw(password.encode('utf-8'), hashed_password.encode('utf-8'))
def login_required(func):
"""
Checks if user is loggen in, if not shows the "login_required.jinja2" template
:param func:
:return:
"""
@wraps(func)
def decorated_function(*args, **kwargs):
try:
session["username"]
except (KeyError):
return render_template("authentication/login_required.jinja2")
return (func(*args, **kwargs))
return decorated_function
def admin_required(func):
"""
Checks if user is admin, if not shows the "admin_required.jinja2" template
:param func:
:return:
"""
@wraps(func)
def decorated_function(*args, **kwargs):
try:
is_admin = session["is_admin"]
except KeyError:
return render_template("authentication/admin_required.jinja2")
if is_admin:
return (func(*args, **kwargs))
else:
return render_template("authentication/admin_required.jinja2")
return decorated_function
# region ---------------------------------------LANGUAGE----------------------------------------
# def get_language(func):
# """
# Sets language to hungarian if there's no language in cookies
# :param func:
# :return:
# """
#
# @wraps(func)
# def decorated_function(*args, **kwargs):
# language = request.cookies.get("language")
# if language:
# return (func(language, *args, **kwargs))
# else:
# return (func("hu", *args, **kwargs))
#
# return decorated_function
def json_response(func):
"""
Converts the returned dictionary into a JSON response
:param func:
:return:
"""
@wraps(func)
def decorated_function(*args, **kwargs):
content = gzip.compress(json.dumps(func(*args, **kwargs)).encode('utf8'))
response = make_response(content)
response.headers['Content-length'] = len(content)
response.headers['Content-Encoding'] = 'gzip'
return response
return decorated_function