""" view_functions.py - defines functions called by views to display the correct data about files and paths. """ import os from time import strftime, strptime, ctime from siteconfig import siteconfig def default_context(): """ default_context - returns the minimum info needed to render a template--the domain name (for the home directory), and the top site directories which make up the navbar """ return { 'domain': siteconfig.DOMAIN, 'navbar': siteconfig.MAIN_SITE_DIRS, } def file_last_modified(path): return ctime(os.stat(path).st_ctime) def index_dir(path): """ index_dir - Given a directory at `path`, list it's contents, and sort each item as a file or a directory or a special file. return - a tuple with the values: > a list of directories in `path`, > a list of files in `path`, > (if present), a list of external links to add to the index.html of the directory > (if present), a short description (string) of what the directory contains Lists are sorted alphabetically. *Special files include '.links' and '.description' the format of these files is unquoted CSV and text/html. Both are displayed on the index.html for the given `path` """ dirs = [] files = [] links = [] description = False contents = os.listdir(path) for obj in contents: if os.path.isfile(path + '/' + obj): if obj == siteconfig.LINKS_FILE: with open(path + '/' + obj) as f: links = f.readlines() elif obj == siteconfig.DESC_FILE: description = True elif not obj.startswith('.'): files.append(obj) elif os.path.isdir(path + '/' + obj): if not obj.startswith('.'): dirs.append(obj) return sorted(dirs), sorted(files), sorted(links), description def is_hidden_path(path): """ Tests if the URI path requested by the user, has any hidden paths which should not be rendered """ for d in path.split('/'): if d.startswith('.'): return True return False