Files
intern/utils.py
Andreas Stephanides bfdeda27be gallery blueimp
2017-09-01 22:52:26 +02:00

52 lines
1.5 KiB
Python

"""
Utility Functions for handling files and paths
"""
import os
import re
from os.path import isfile, abspath
from collections import namedtuple
LinkElement=namedtuple("LinkElement", ["title", "url","desc"])
def pjoin2 (pth):
if (not type(pth) is list):
raise AttributeError("path should be a list")
pth=filter(lambda s: len(s.strip())>0, pth)
if len(pth)==0:
raise AttributeError("List for pjoin2 can't be empty")
return u'/'.join(pth) or u''
def pjoin (rt,pth):
return pjoin2([rt,pth])
def list_dir(mypath,ext=None, not_ext=None):
return (f for f in os.listdir(mypath)
if os.path.isfile(os.path.join(mypath, f))
and ((re.match('.*%s$' % not_ext, f) is None) or (not_ext is None))
and ((re.match('.*%s$' % ext, f) is not None) or (ext is None))
)
def path_depth(path):
if path =="":
return 0
p_split=path.split('/')
cc=len(p_split)
if p_split[-1]=='index' or p_split[-1]=='index.json' :
cc=cc-1
return cc
def page_to_link(pages, url_for_method):
"page to url"
for p in pages:
yield LinkElement(title=p.meta.get("title",p.path),
url=url_for_method(name=p.path),
desc='/'.join(p.path.split('/')[-2:-1])
)
def file_to_link(files, url_for_method):
"file to url"
for p in files:
yield LinkElement(title=p,
url=url_for_method(name=p),
desc=""
)