def publish(self): regenerate = False; if not self.path: num = 0; content = None; while not content: path = utils.format_page_path(self, num); content = static.add(path, '', config.html_mime_type); num += 1; self.path = path; self.put(); # Force regenerate on new publish. Also helps with generation of # chronologically previous and next page. regenerate = True; # force refresh of cache, before dependencies are run utils.clear_page_memoizer_cache(self); for generator_class, deps in self.get_deps(regenerate=regenerate): for dep in deps: if generator_class.can_defer: deferred.defer(generator_class.generate_resource, None, dep); else: generator_class.generate_resource(self, dep); self.put();
def remove(self): if not self.is_saved(): return; # It is important that the get_deps() return the page dependency # before the list dependencies as the Page entity gets deleted # while calling PageContentGenerator. for generator_class, deps in self.get_deps(regenerate=True): for dep in deps: if generator_class.can_defer: if dep == self.key().id(): deferred.defer(generator_class.generate_resource, None, dep, action="delete"); else: deferred.defer(generator_class.generate_resource, None, dep); # Regenerate dependency else: if dep == self.key().id(): generator_class.generate_resource(self, dep, action='delete'); else: generator_class.generate_resource(self, dep); # no longer needed; clear cache for this page if self.path: utils.clear_page_memoizer_cache(self);