Issue Details (XML | Word | Printable)

Key: MODPYTHON-54
Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Graham Dumpleton
Reporter: Nicolas Lehuen
Votes: 1
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
mod_python

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

Created: 13/May/05 03:21 PM   Updated: 02/Apr/07 11:21 AM
Return to search
Component/s: importer
Affects Version/s: 3.2.7
Fix Version/s: 3.3.1

Time Tracking:
Not Specified

Issue Links:
dependent
 

Resolution Date: 12/Aug/06 08:13 AM


 Description  « Hide
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.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Nicolas Lehuen made changes - 13/May/05 03:32 PM
Field Original Value New Value
Status Open [ 1 ] In Progress [ 3 ]
Nicolas Lehuen made changes - 21/May/05 01:49 AM
Status In Progress [ 3 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Nicolas Lehuen made changes - 21/May/05 01:50 AM
Resolution Fixed [ 1 ]
Status Resolved [ 5 ] Reopened [ 4 ]
Nicolas Lehuen made changes - 29/Jul/05 12:30 AM
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.
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.
Fix Version/s 3.2.0 [ 11060 ]
Environment
Fix Version/s 3.3.0 [ 12310101 ]
Nicolas Lehuen made changes - 22/Oct/05 04:02 PM
Component/s importer [ 12310385 ]
Graham Dumpleton made changes - 10/Mar/06 01:40 PM
Link This issue depends upon MODPYTHON-143 [ MODPYTHON-143 ]
Graham Dumpleton made changes - 01/Apr/06 02:18 PM
Assignee Nicolas Lehuen [ nlehuen ] Graham Dumpleton [ grahamd ]
Graham Dumpleton made changes - 01/Apr/06 02:19 PM
Status Reopened [ 4 ] In Progress [ 3 ]
Graham Dumpleton made changes - 12/Aug/06 08:13 AM
Status In Progress [ 3 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Graham Dumpleton made changes - 02/Apr/07 11:21 AM
Status Resolved [ 5 ] Closed [ 6 ]