Hi,
i want to migrate my Pylons projects to Pyramid framework but i have
one architecture problem (the same that i have in Pylons).
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.
Proof Of Concept:
==== cms ====
(pyramid_migrate)p...@b00s:~/pyramid_migrate/shared$ ls
cms site1 site2
(pyramid_migrate)p...@b00s:~/pyramid_migrate/shared$ cat cms/cms/
__init__.py
config = None
(pyramid_migrate)p...@b00s:~/pyramid_migrate/shared$ cat cms/cms/
someview.py
#from site1.models import DBSession
#from site1.models import MyModel
def my_view(request):
# some main ugly code ;-(
import cms
model_path = cms.config.package_name + '.models'
temp = __import__(model_path, globals(), locals(), ['*'], -2)
DBSession = temp.DBSession
MyModel = temp.MyModel
dbsession = DBSession()
root =
dbsession.query(MyModel).filter(MyModel.name==u'root').first()
return {'root':root, 'project':'site1'}
==== site1 config ====
(pyramid_migrate)p...@b00s:~/pyramid_migrate/shared$ cat site1/site1/
__init__.py
import sys
from pyramid.configuration import Configurator
from pyramid.settings import asbool
from site1.models import initialize_sql
# where is our cms project
sys.path.append('../cms')
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
db_string = settings.get('db_string')
if db_string is None:
raise ValueError("No 'db_string' value in application
configuration.")
db_echo = settings.get('db_echo', 'false')
initialize_sql(db_string, asbool(db_echo))
config = Configurator(settings=settings)
config.begin()
config.add_static_view('static', 'site1:static')
config.add_route('home', '/', view='site1.views.my_view',
view_renderer='templates/mytemplate.pt')
config.add_route('cms', '/cms', view='cms.someview.my_view',
view_renderer='templates/mytemplate.pt')
config.end()
# set cms/__init__.py (config variable)
import cms
cms.config = config
return config.make_wsgi_app()
Example above is working but it's a little bit ugly. Is there any
better solution for this problem?
--
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.