""" view_functions.py - defines functions called by views to display the correct data about files and paths. """ import os from siteconfig import siteconfig from server import app 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': app.config['DOMAIN'], 'navbar': sorted(app.config['MAIN_SITE_DIRS']), } 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 obj.startswith('.'): continue else: files.append(obj) elif os.path.isdir(path + '/' + obj): if obj.startswith('.'): continue else: dirs.append(obj) return sorted(dirs), sorted(files), sorted(links), description def is_hidden_path(path): """ Tests if last object specified in `path` is hidden. Inspired by Unix. On Windows, directories won't actually be "hidden" but they are still not indexed by this program """ return path.split('/')[-1].startswith('.')