new version allows downloads from subfolders
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
from flask import current_app as app
|
||||
|
||||
try:
|
||||
from urllib.request import pathname2url
|
||||
except ImportError:
|
||||
from urllib import pathname2url
|
||||
|
||||
def file_date_human(num):
|
||||
return datetime.fromtimestamp(
|
||||
@@ -47,12 +50,50 @@ def get_or_none(key,d,none = None):
|
||||
else:
|
||||
return none
|
||||
|
||||
|
||||
def is_path_safe(path):
|
||||
if path.startswith("."):
|
||||
return False
|
||||
if "/." in path:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def iter_folder_files(path, recursive = True):
|
||||
if recursive:
|
||||
for dirpath, dirnames, filenames in os.walk(path, topdown = False):
|
||||
relative_path = os.path.relpath(dirpath,path)
|
||||
dirnames.sort()
|
||||
if "/." in relative_path:
|
||||
continue
|
||||
if relative_path == ".":
|
||||
relative_path = ""
|
||||
for f in sorted(filenames):
|
||||
if f.startswith("."):
|
||||
continue
|
||||
fp = os.path.join(relative_path, f)
|
||||
yield fp
|
||||
else:
|
||||
for file in sorted(path):
|
||||
fp = os.path.join(path,file)
|
||||
if os.path.isdir(fp):
|
||||
continue
|
||||
if file.startswith("."):
|
||||
continue
|
||||
yield fp
|
||||
|
||||
|
||||
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):
|
||||
""" return a safe string, replace non alnum characters with _ . all characters in valid are considered valid. """
|
||||
return "".join([c if c.isalnum() or c in valid else "_" for c in s])
|
||||
|
||||
Reference in New Issue
Block a user