def publish(self): regenerate = False if not self.path: num = 0 content = None while not content: path = utils.format_post_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 BlogDate.create_for_post(self) # force refresh of cache, before dependencies are run utils.clear_post_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 post dependency # before the list dependencies as the BlogPost entity gets deleted # while calling PostContentGenerator. 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 post if self.path: utils.clear_post_memoizer_cache(self);