diff --git a/buildout.cfg b/buildout.cfg
index 86d7456..025a314 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -2,13 +2,14 @@
newest = false
extensions = gp.vcsdevelop
parts = eggs test
-develop = . pyramidapp
+develop = . pyramidapp ../fa.jquery
[eggs]
recipe = zc.recipe.egg
eggs =
pyramid_formalchemy
pyramidapp
+ fa.jquery
WebTest
PasteScript
Sphinx
@@ -20,7 +21,7 @@ eggs =
nose
initialization =
import os
- os.chdir('pyramidapp')
+ os.chdir(os.path.join('${buildout:directory}', 'pyramidapp'))
scripts=
nosetests=nosetests
paster=paster_serve
diff --git a/pyramid_formalchemy/__init__.py b/pyramid_formalchemy/__init__.py
index cf01fa5..443a59c 100644
--- a/pyramid_formalchemy/__init__.py
+++ b/pyramid_formalchemy/__init__.py
@@ -1,9 +1,18 @@
# -*- coding: utf-8 -*-
def include(config):
+ """include formalchemy's zcml"""
+ config.load_zcml('pyramid.includes:configure.zcml')
config.load_zcml('pyramid_formalchemy:configure.zcml')
+ config.load_zcml('pyramid_formalchemy:views.zcml')
-def configure(config, models=None, forms=None, session_factory=None, package=None):
+def include_jquery(config):
+ """include formalchemy's zcml"""
+ config.load_zcml('pyramid.includes:configure.zcml')
+ config.load_zcml('pyramid_formalchemy:configure.zcml')
+ config.load_zcml('fa.jquery:configure.zcml')
+
+def configure(config, models=None, forms=None, session_factory=None, package=None, use_jquery=True):
"""configure formalchemy's admin interface"""
if models:
models = config.maybe_dotted(models)
@@ -26,6 +35,9 @@ def configure(config, models=None, forms=None, session_factory=None, package=Non
'fa.session_factory': session_factory,
})
- config.add_route('fa_admin', '/admin/*traverse',
- factory='pyramid_formalchemy.resources.AdminView')
-
+ if use_jquery:
+ config.add_route('fa_admin', '/admin/*traverse',
+ factory='pyramid_formalchemy.resources.AdminView')
+ else:
+ config.add_route('fa_admin', '/admin/*traverse',
+ factory='pyramid_formalchemy.resources.AdminView')
diff --git a/pyramid_formalchemy/configure.zcml b/pyramid_formalchemy/configure.zcml
index 3547854..940a647 100644
--- a/pyramid_formalchemy/configure.zcml
+++ b/pyramid_formalchemy/configure.zcml
@@ -1,122 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pyramid_formalchemy/resources.py b/pyramid_formalchemy/resources.py
index 892d1e7..c1e9e5a 100644
--- a/pyramid_formalchemy/resources.py
+++ b/pyramid_formalchemy/resources.py
@@ -8,7 +8,7 @@ class AdminView(object):
request.format = 'html'
self.__parent__ = self.__name__ = None
def __getitem__(self, item):
- if item in ('json',):
+ if item in ('json', 'xhr'):
self.request.format = item
return self
model = ModelListing(self.request, item)
@@ -22,7 +22,7 @@ class ModelListing(object):
self.__name__ = name
self.__parent__ = None
def __getitem__(self, item):
- if item in ('json',):
+ if item in ('json', 'xhr'):
self.request.format = item
return self
if item in ('new',):
diff --git a/pyramid_formalchemy/view.zcml b/pyramid_formalchemy/view.zcml
new file mode 100644
index 0000000..20e1093
--- /dev/null
+++ b/pyramid_formalchemy/view.zcml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pyramid_formalchemy/views.py b/pyramid_formalchemy/views.py
index d06a7ff..5ce1da9 100644
--- a/pyramid_formalchemy/views.py
+++ b/pyramid_formalchemy/views.py
@@ -11,7 +11,9 @@ from formalchemy import fatypes
from pyramid.view import view_config
from pyramid.renderers import render
from pyramid.renderers import get_renderer
+from pyramid.response import Response
from pyramid import httpexceptions as exc
+from pyramid.exceptions import NotFound
try:
from formalchemy.ext.couchdb import Document
@@ -99,7 +101,7 @@ class ModelView(object):
return model
elif hasattr(self.model, self.model_name):
return getattr(self.model, self.model_name)
- raise exc.HTTPNotFound(description='model %s not found' % self.model_name)
+ raise NotFound()
def get_fieldset(self, id):
if self.forms and hasattr(self.forms, self.model_name):
@@ -166,7 +168,7 @@ class ModelView(object):
if meth is not None:
return meth(**kwargs)
else:
- return exc.HTTPNotfound()
+ raise NotFound()
kwargs.update(
main = get_renderer('pyramid_formalchemy:templates/admin/master.pt').implementation(),
model_name=self.model_name,
@@ -196,18 +198,18 @@ class ModelView(object):
return data
def render_xhr_format(self, fs=None, **kwargs):
- response.content_type = 'text/html'
+ self.request.response_content_type = 'text/html'
if fs is not None:
- if 'field' in request.GET:
- field_name = request.GET.get('field')
+ if 'field' in self.request.GET:
+ field_name = self.request.GET.get('field')
fields = fs.render_fields
if field_name in fields:
field = fields[field_name]
return field.render()
else:
- return exc.HTTPNotfound()
- return fs.render()
- return ''
+ raise NotFound()
+ return Response(fs.render())
+ return Response('')
def get_page(self, **kwargs):
"""return a ``webhelpers.paginate.Page`` used to display ``Grid``.
@@ -252,7 +254,7 @@ class ModelView(object):
model = S.query(model).get(id)
if model:
return model
- raise exc.HTTPNotFound()
+ raise NotFound()
def get_fieldset(self, id=None):
"""return a ``FieldSet`` object bound to the correct record for ``id``.
diff --git a/pyramidapp/pyramidapp.db b/pyramidapp/pyramidapp.db
new file mode 100644
index 0000000..cbf4612
Binary files /dev/null and b/pyramidapp/pyramidapp.db differ
diff --git a/pyramidapp/pyramidapp/__init__.py b/pyramidapp/pyramidapp/__init__.py
index 9a76d61..faea3d8 100644
--- a/pyramidapp/pyramidapp/__init__.py
+++ b/pyramidapp/pyramidapp/__init__.py
@@ -13,8 +13,8 @@ def main(global_config, **settings):
config.add_static_view('static', 'pyramidapp:static')
config.add_route('home', '/', view='pyramidapp.views.my_view',
view_renderer='templates/mytemplate.pt')
- pyramid_formalchemy.include(config)
- pyramid_formalchemy.configure(config, package='pyramidapp')
+ pyramid_formalchemy.include_jquery(config)
+ pyramid_formalchemy.configure(config, package='pyramidapp', use_jquery=True)
return config.make_wsgi_app()