Example #1
0
  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();
Example #2
0
  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);