# HG changeset patch # User John Mulligan # Date 1262480025 18000 # Sat Jan 02 19:53:45 2010 -0500 # Node ID 1b7194598aa8b43e9c7d6f4117e1877953ce7b44 # Parent 5206fa5b614b162494f37cbf22b7f31eefc094e7 handle page deletes gracefully diff --git a/muyhomepage2/app/build.py b/muyhomepage2/app/build.py --- a/muyhomepage2/app/build.py +++ b/muyhomepage2/app/build.py @@ -60,11 +60,18 @@ def build(config): website = site.Site() - website.pages = site.read_site_pages(config.page_cache()) + allfiles = set(page.walkpages(config.root())) + website.pages = set() + cached = set() + for cpage in site.read_site_pages(config.page_cache()): + if cpage.filename not in allfiles: + continue + website.pages.add(cpage) + cached.add(cpage.filename) + site.update_site_tags(website, config.tag_cache()) rebuild = set() - cached = [p.filename for p in website.pages] - for pagefile in page.walkpages(config.root()): + for pagefile in allfiles: if pagefile not in cached: npage = page.parse(pagefile) rebuild.add(npage) @@ -76,13 +83,14 @@ for spage in website.pages: if spage.action in config.always_rebuild(): rebuild.add(page.parse(spage.filename)) + # remove any pages from the cache that are gone compile_pages(config, website, rebuild) site.write_site_pages(website, config.page_cache()) site.write_site_tags(website, config.tag_cache()) def compile_pages(config, website, rebuild): - for page in rebuild: + for page in sorted(rebuild, key=lambda p: p.filename): phandler = handle_action( config.handlers(), config.defaulthandler(),