#!/usr/bin/env python import os import sys import yaml from jinja2 import Environment, FileSystemLoader templates = Environment(loader=FileSystemLoader([os.path.realpath(os.path.join(os.getcwd(), "templates")), os.path.join(os.path.split(os.path.realpath(__file__))[0], "templates")])) index_template = templates.get_template("index.html") gallery_index_template = templates.get_template("gallery-index.html") def error(test, error_message): if not test: sys.stderr.write(error_message) sys.stderr.write("\n") sys.stderr.write("Abort.\n") sys.exit(1) def main(): error(os.path.exists(os.path.join(os.getcwd(), "settings.yaml")), "I can't find a settings.yaml in the current working directory") settings = yaml.safe_load(open("settings.yaml", "r")) error(isinstance(settings, dict), "Your settings.yaml should be a dict") error(settings.get("title"), "You should specify a title in your main settings.yaml") title = settings["title"] sub_title = settings.get("sub_title", "") front_page_galleries_cover = [] dirs = filter(lambda x: x not in (".", "..") and os.path.isdir(x) and os.path.exists(os.path.join(os.getcwd(), x, "settings.yaml")), os.listdir(os.getcwd())) error(dirs, "I can't find at least one directory with a settings.yaml in the current working directory, you don't have any gallery?") for gallery in dirs: gallery_settings = yaml.safe_load(open(os.path.join(os.getcwd(), gallery, "settings.yaml"), "r")) error(isinstance(gallery_settings, dict), "Your %s should be a dict" % (os.path.join(gallery, "settings.yaml"))) error(gallery_settings.get("title"), "You should specify a title in %s" % (os.path.join(gallery, "settings.yaml"))) error(gallery_settings.get("cover"), "You should specify a path to a cover picture in %s" % (os.path.join(gallery, "settings.yaml"))) cover_image_path = os.path.join(os.getcwd(), gallery, gallery_settings["cover"]) error(not os.path.exists(cover_image_path), "File for %s cover image doesn't exists at %s" % (gallery, cover_image_path)) gallery_title = gallery_settings["title"] gallery_sub_title = gallery_settings.get("sub_title", "") gallery_date = gallery_settings["date"] if "date" in gallery_settings else "" front_page_galleries_cover.append({ "title": gallery_title, "sub_title": gallery_sub_title, "date": gallery_date, }) front_page_galleries_cover = sorted(front_page_galleries_cover, key=lambda x: x["date"]) if not os.path.exists("build"): os.makedirs("build") if __name__ == '__main__': main()