diff --git a/buildout.cfg b/buildout.cfg index fd19a27..2800aad 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -24,6 +24,7 @@ eggs = lingua scripts= nosetests=tests + pcreate=pcreate interpreter = python [test] diff --git a/pyramid_formalchemy/__init__.py b/pyramid_formalchemy/__init__.py index 64a9b12..2af84ee 100644 --- a/pyramid_formalchemy/__init__.py +++ b/pyramid_formalchemy/__init__.py @@ -74,6 +74,7 @@ def formalchemy_admin(config, route_name, models = config.maybe_dotted(models) if forms: forms = config.maybe_dotted(forms) + if session_factory: session_factory = config.maybe_dotted(session_factory) diff --git a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fainit.py_tmpl b/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fainit.py_tmpl index 7388c96..82d2770 100644 --- a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fainit.py_tmpl +++ b/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fainit.py_tmpl @@ -1,21 +1,46 @@ from {{package}} import models, faforms +import logging + +log = logging.getLogger(__name__) + def includeme(config): config.include('pyramid_formalchemy') - # Adding the jquery libraries - config.include('fa.jquery') + + try: + # Add fanstatic tween if available + config.include('pyramid_fanstatic') + except ImportError: + log.warn('You should install pyramid_fanstatic or register a fanstatic' + ' middleware by hand') + + try: + # Adding the jquery libraries if available + config.include('fa.jquery') + except ImportError: + model_view = 'pyramid_formalchemy.views.ModelView' + else: + model_view = 'fa.jquery.pyramid.ModelView' + + session_factory = getattr(models, "DBSession", None) + if session_factory is not None: + # pyramid_alchemy + session_factory = '{{package}}.models.DBSession' + else: + # Akhet + session_factory = '{{package}}.models.Session' + + # register session and model_view for later use + settings = {'package': '{{package}}', + 'view': model_view, + 'session_factory': session_factory, + } + config.registry.settings['{{package}}.fa_config'] = settings + + config.formalchemy_admin("/admin", models=models, forms=faforms, + **settings) + # Adding the package specific routes config.include('{{package}}.faroutes') - try: - # pyramid_alchemy - session_factory = models.DBSession - except AttributeError: - # akhet - session_factory = models.Session - - config.formalchemy_admin("/admin", - models=models, - forms=faforms, - session_factory=session_factory, - view="fa.jquery.pyramid.ModelView") + log.info('formalchemy_admin registered at /admin') diff --git a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/faroutes.py_tmpl b/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/faroutes.py_tmpl index 46bc43c..1edbc7a 100644 --- a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/faroutes.py_tmpl +++ b/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/faroutes.py_tmpl @@ -1,19 +1,15 @@ from {{package}} import models -def includeme(config): - try: - # pyramid_alchemy - session_factory = models.DBSession - except AttributeError: - # akhet - session_factory = models.Session +import logging - try: - # Example for pyramid_routesalchemy and akhet - from {{package}}.models import MyModel - config.formalchemy_model("/my_model", package='{{package}}', - model='{{package}}.models.MyModel', - session_factory=session_factory, - view='fa.jquery.pyramid.ModelView') - except ImportError: - pass - +log = logging.getLogger(__name__) + + +def includeme(config): + settings = config.registry.settings.get('{{package}}.fa_settings}}', {}) + + # Example to add a specific model + #config.formalchemy_model("/my_model", package='{{package}}', + # model='{{package}}.models.MyModel') + # **settings) + + log.info('{{package}}.faroutes loaded') diff --git a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fareadme.txt b/pyramid_formalchemy/paster_templates/pyramid_fa/README_FORMALCHEMY.txt similarity index 84% rename from pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fareadme.txt rename to pyramid_formalchemy/paster_templates/pyramid_fa/README_FORMALCHEMY.txt index 906ff90..1f3a2d3 100644 --- a/pyramid_formalchemy/paster_templates/pyramid_fa/+package+/fareadme.txt +++ b/pyramid_formalchemy/paster_templates/pyramid_fa/README_FORMALCHEMY.txt @@ -1,9 +1,12 @@ This script does not want to tell you how your app should be set up. As such, it does not set an app up for you. -Please use this template together with other templates, like akhet, +Please use this template together with other templates, like Akhet, pyramid_routesalchemy or pyramid_alchemy. +You should add pyramid_fanstatic and fa.jquery as dependencies in your +setup.py. + To finally include FormAlchemy, modify your main method were you create the wsgi application, and include {{package}}.fainit to the configuration, like that: @@ -21,3 +24,5 @@ If you are using akhet, nothing special needs to be done. After this modifications, you should find the FormAlchemy Admin Interface under /admin + +