diff --git a/pyramid_formalchemy/__init__.py b/pyramid_formalchemy/__init__.py
index 68695fd..f830575 100644
--- a/pyramid_formalchemy/__init__.py
+++ b/pyramid_formalchemy/__init__.py
@@ -1,19 +1,23 @@
# -*- coding: utf-8 -*-
-def include(config):
+def includeme(config):
"""include formalchemy's zcml"""
- config.load_zcml('pyramid.includes:configure.zcml')
- config.load_zcml('pyramid_formalchemy:configure.zcml')
- config.load_zcml('pyramid_formalchemy:view.zcml')
+ config.add_static_view('fa_admin', 'pyramid_formalchemy:static')
+ config.add_directive('formalchemy_admin', 'pyramid_formalchemy.formalchemy_admin')
def include_jquery(config):
"""include formalchemy and fa.jquery's zcml """
- config.load_zcml('pyramid.includes:configure.zcml')
- config.load_zcml('pyramid_formalchemy:configure.zcml')
- config.load_zcml('fa.jquery:configure.zcml')
+ config.add_static_view('fa_admin', 'fa.jquery:static')
-def configure(config, models=None, forms=None, session_factory=None, package=None, prefix='/admin', use_jquery=True):
+
+def formalchemy_admin(config, route_name,
+ factory='pyramid_formalchemy.resources.Models',
+ view='pyramid_formalchemy.views.ModelView',
+ package=None, models=None, forms=None, session_factory=None):
"""configure formalchemy's admin interface"""
+
+ kw = dict(route_name=route_name, view=view)
+
if models:
models = config.maybe_dotted(models)
if forms:
@@ -29,19 +33,88 @@ def configure(config, models=None, forms=None, session_factory=None, package=Non
if not session_factory:
session_factory = config.maybe_dotted('%s.models.DBSession' % package)
- config.registry.settings.update({
- 'fa.models': models,
- 'fa.forms': forms,
- 'fa.session_factory': session_factory,
- })
+ factory_args = {
+ '__models__': models,
+ '__forms__': forms,
+ '__session_factory__': session_factory,
+ '__fa_route_name__': route_name,
+ }
- prefix = prefix.rstrip('/')
- if not prefix:
- prefix = '/'
+ factory = config.maybe_dotted(factory)
+
+ factory = type('%s_%s' % (factory.__name__, route_name), (factory,), factory_args)
+
+ config.add_route(route_name, '%s/*traverse' % route_name,
+ factory=factory)
+
+ config.add_view(context=factory,
+ renderer='pyramid_formalchemy:templates/admin/models.pt',
+ attr='models',
+ request_method='GET',
+ permission='view',
+ **kw)
+
+ config.add_view(context='pyramid_formalchemy.resources.ModelListing',
+ renderer='pyramid_formalchemy:templates/admin/listing.pt',
+ attr='listing',
+ request_method='GET',
+ permission='view',
+ **kw)
+
+ config.add_view(context='pyramid_formalchemy.resources.ModelListing',
+ renderer='pyramid_formalchemy:templates/admin/new.pt',
+ name='new',
+ attr='new',
+ request_method='GET',
+ permission='new',
+ **kw)
+ config.add_view(context='pyramid_formalchemy.resources.ModelListing',
+ renderer='pyramid_formalchemy:templates/admin/new.pt',
+ attr='create',
+ request_method='POST',
+ permission='new',
+ **kw)
+
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='pyramid_formalchemy:templates/admin/edit.pt',
+ name='edit',
+ attr='edit',
+ request_method='GET',
+ permission='edit',
+ **kw)
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='pyramid_formalchemy:templates/admin/edit.pt',
+ name='edit',
+ attr='update',
+ request_method='POST',
+ permission='edit',
+ **kw)
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='json',
+ attr='update',
+ request_method='POST',
+ permission='edit',
+ **kw)
+
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='pyramid_formalchemy:templates/admin/edit.pt',
+ name='delete',
+ attr='delete',
+ request_method='POST',
+ permission='delete',
+ **kw)
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='pyramid_formalchemy:templates/admin/edit.pt',
+ attr='delete',
+ request_method='DELETE',
+ permission='delete',
+ **kw)
+
+ config.add_view(context='pyramid_formalchemy.resources.Model',
+ renderer='pyramid_formalchemy:templates/admin/show.pt',
+ request_method='GET',
+ permission='view',
+ name='',
+ attr='show',
+ **kw)
- if use_jquery:
- config.add_route('fa_admin', '%s/*traverse' % prefix,
- factory='pyramid_formalchemy.resources.AdminView')
- else:
- config.add_route('fa_admin', '%s/*traverse' % prefix,
- factory='pyramid_formalchemy.resources.AdminView')
diff --git a/pyramid_formalchemy/configure.zcml b/pyramid_formalchemy/configure.zcml
deleted file mode 100644
index 940a647..0000000
--- a/pyramid_formalchemy/configure.zcml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
+ tal:attributes="href request.route_url(request.route_name, traverse='%s/new' % request.model_name)"> ${F_('New')} ${model_name} diff --git a/pyramid_formalchemy/templates/admin/master.pt b/pyramid_formalchemy/templates/admin/master.pt index 4ac20b7..2200071 100644 --- a/pyramid_formalchemy/templates/admin/master.pt +++ b/pyramid_formalchemy/templates/admin/master.pt @@ -26,7 +26,7 @@ + tal:attributes="href request.route_url(request.route_name, traverse=request.model_name)"> ${F_('Cancel')} diff --git a/pyramid_formalchemy/templates/admin/models.pt b/pyramid_formalchemy/templates/admin/models.pt index ac0ed9b..2a57b57 100644 --- a/pyramid_formalchemy/templates/admin/models.pt +++ b/pyramid_formalchemy/templates/admin/models.pt @@ -3,7 +3,7 @@