Uploaded image for project: 'mod_python'
  1. mod_python
  2. MODPYTHON-54

Add a way to import a published page into another published page

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.2.7
    • 3.3.1
    • importer
    • None

    Description

      Before mod_python 3.2, standard Python modules and published modules could be imported the same way, using apache.import_module. This had a number of disadvantages, leading to MODPYTHON-8, MODPYTHON-9, MODPYTHON-10, MODPYTHON-11 and MODPYTHON-12.

      All these bugs were fixed by separating the published modules from the standard Python module. apache.import_module can still be used to import standard modules, but published modules are now fully managed by mod_python.publisher, and are not inserted into sys.modules.

      The problem is that there is a use case of importing a published module from another published module :

      /index.py----------------
      def index(req):
      return "Hello, world !"

      def utility_function(foobar):
      return foobar+1

      /other.py----------------
      import os
      directory = os.path.split(_file_)[0]
      other_index = apache.import_module("index",path=[directory])

      def index(req):
      return "%s %i"%(other_index.index(req),other_index.utility_function(2004))

      This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work the expected way since the imported module (other_index in the example) is not the same module as the one the publisher would use to publish /index.py. This could be troublesome if the developer wanted to share some data between the modules, e.g. a cache or a connection pool, but not if he only wanted to share some code.

      Therefore, we need to provide a clean API in mod_python.publisher to allow developers to reference another published module.

      Attachments

        Issue Links

          Activity

            People

              grahamd Graham Phillip Dumpleton
              nlehuen Nicolas Lehuen
              Votes:
              1 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: