getting there
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
from datetime import datetime
|
||||
from flask import current_app as app
|
||||
import secrets
|
||||
import string
|
||||
|
||||
VALID_TOKEN_CHARS = string.digits + string.ascii_letters
|
||||
|
||||
|
||||
def random_token():
|
||||
return "".join(secrets.choice(VALID_TOKEN_CHARS) for i in range(8))
|
||||
|
||||
|
||||
def file_date_human(num):
|
||||
@@ -22,45 +29,3 @@ def file_size_human(num, HTML=True):
|
||||
|
||||
def file_size_MB(num):
|
||||
return "{:,.2f}".format(num / (1024 * 1024))
|
||||
|
||||
|
||||
def get_or_none(key, d, none=None):
|
||||
if key in d:
|
||||
return d[key]
|
||||
else:
|
||||
return none
|
||||
|
||||
|
||||
def is_path_safe(path):
|
||||
if path.startswith("."):
|
||||
return False
|
||||
if "/." in path:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def is_valid_url(url, qualifying=None):
|
||||
min_attributes = ("scheme", "netloc")
|
||||
qualifying = min_attributes if qualifying is None else qualifying
|
||||
token = urlparse(url)
|
||||
return all([getattr(token, qualifying_attr) for qualifying_attr in qualifying])
|
||||
|
||||
|
||||
def path2url(path):
|
||||
return pathname2url(path)
|
||||
|
||||
|
||||
def safe_name(s):
|
||||
return safe_string(s, "-_")
|
||||
|
||||
|
||||
def safe_path(s):
|
||||
return safe_string(s, "-_/")
|
||||
|
||||
|
||||
def safe_string(s, valid, no_repeat=False):
|
||||
"""return a safe string, replace non alnum characters with _ . all characters in valid are considered valid."""
|
||||
safe = "".join([c if c.isalnum() or c in valid else "_" for c in s])
|
||||
if no_repeat:
|
||||
safe = re.sub(r"_+", "_", safe)
|
||||
return safe
|
||||
|
||||
Reference in New Issue
Block a user