docs: def build_modelgraph(docs_path, package_name="yacms"):
      """
      Creates a diagram of all the models for yacms and the given
      package name, generates a smaller version and add it to the
      docs directory for use in model-graph.rst
      """
      to_path = os.path.join(docs_path, "img", "graph.png")
      build_path = os.path.join(docs_path, "build", "_images")
      resized_path = os.path.join(os.path.dirname(to_path), "graph-small.png")
      settings = import_dotted_path(package_name +
                                    ".project_template.project_name.settings")
      apps = [a.rsplit(".")[1] for a in settings.INSTALLED_APPS
              if a.startswith("yacms.") or a.startswith(package_name + ".")]
      try:
          from django_extensions.management.commands import graph_models
      except ImportError:
          warn("Couldn't build model_graph, django_extensions not installed")
      else:
          options = {"inheritance": True, "outputfile": "graph.png",
                     "layout": "dot"}
          try:
              graph_models.Command().execute(*apps, **options)
          except Exception as e:
              warn("Couldn't build model_graph, graph_models failed on: %s" % e)
          else:
              try:
                  move("graph.png", to_path)
              except OSError as e:
                  warn("Couldn't build model_graph, move failed on: %s" % e)
      # docs/img/graph.png should exist in the repo - move it to the build path.
      try:
          if not os.path.exists(build_path):
              os.makedirs(build_path)
          copyfile(to_path, os.path.join(build_path, "graph.png"))
      except OSError as e:
          warn("Couldn't build model_graph, copy to build failed on: %s" % e)
      try:
          from PIL import Image
          image = Image.open(to_path)
          image.width = 800
          image.height = image.size[1] * 800 // image.size[0]
          image.save(resized_path, "PNG", quality=100)
      except Exception as e:
          warn("Couldn't build model_graph, resize failed on: %s" % e)
          return
      # Copy the dashboard screenshot to the build dir too. This doesn't
      # really belong anywhere, so we do it here since this is the only
      # spot we deal with doc images.
      d = "dashboard.png"
      copyfile(os.path.join(docs_path, "img", d), os.path.join(build_path, d))