Howdy!

So, i have one project/package named "cms" and many other projects using cms (pyramid projects site1, site2, site3 etc.). The problem is that cms need to import information about models (DBSession) from the current project.

I worked around this problem (associating externaly defined models with your application's DBSession) in two ways, the first was scrapped after I had to stop using TurboGears and wrote my own framework.

:: Have a function to gather CMS models and inject DBSession into their scope, or inject the model into the application's scope.

This is fairly self-explanatory; you use, say, a setuptools entry point, iterate through them, and monkeypatch your core application's DBSession in.

The second half of it implies creating a model.py model in your application that then ends up containing every object ever used by the CMS in a single module.

The problem here is requiring boilerplate code within applications that want to use the CMS, and likely some fairly hefty locals() jery-rigging at the global scope of the model.

:: Utilize multiple database support to make the CMS independant from your core model.

This has two major benefits:

a) You can, in theory, have no model in your application.
b) It's flexible: You can point the CMS data somewhere else, or the same place.

Though it still needs to be combined with entry point iteration to tie CMS module models in, that code is central to the CMS library, then, not embedded in the consuming application's model.py file. (I want my own CMS to be as easy to use as adding two lines to an INI, importing the CMS root controller class into your own controller tree, and creating an instance of the class somewhere.)

This has the (possible) side benefit, in my case, of not actually requiring a client application at all! The paster INI file can easily point the root controller at the CMS's root controller; then creating a new "site" is as easy as writing a single INI file, no more. (I've used this method quite successfully across a number of projects, with customizations to the CMS - themes and the like - as separately installed modules.)

Whether any of this is viable under Pyramid I could only guess; I'm pretty sure it should be possible, though.

        - Alice.


--
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to