Files
mini-flees/code/utils/misc.py
2023-08-19 12:28:58 +03:00

67 lines
1.6 KiB
Python

from datetime import datetime
from flask import current_app as app
def file_date_human(num):
return datetime.fromtimestamp(num).strftime("%y-%m-%d")
def file_time_human(num):
return datetime.fromtimestamp(num).strftime("%y-%m-%d %H:%M")
def file_size_human(num, HTML=True):
space = " " if HTML else " "
for x in [space + "B", "KB", "MB", "GB", "TB"]:
if num < 1024.0:
if x == space + "B":
return "%d%s%s" % (num, space, x)
return "%3.1f%s%s" % (num, space, x)
num /= 1024.0
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