pyramid/bodhi/bodhi/models/models.py | 8 ++++----
pyramid/bodhi/bodhi/tests/views/test_views.py | 17 ++++++++++++++++-
pyramid/bodhi/bodhi/views.py | 12 +++++++-----
3 files changed, 27 insertions(+), 10 deletions(-)
New commits:
commit 356bdce860f47aa68fd07a247a5cdce5d126bb69
Author: Luke Macken <lmacken(a)redhat.com>
Date: Tue May 17 13:53:55 2011 -0400
Get our views.py back up to 100% coverage
diff --git a/pyramid/bodhi/bodhi/tests/views/test_views.py
b/pyramid/bodhi/bodhi/tests/views/test_views.py
index ed58a63..f9d0484 100644
--- a/pyramid/bodhi/bodhi/tests/views/test_views.py
+++ b/pyramid/bodhi/bodhi/tests/views/test_views.py
@@ -18,9 +18,24 @@ class ViewTests(unittest.TestCase):
info = view_model_instance_json(context, request)
self.assertEqual(info['context'], context.__json__())
- def test_view_model(self):
+ def test_view_model_json(self):
from bodhi.resources import ReleaseResource
from bodhi.views import view_model_json
request = testing.DummyRequest()
info = view_model_json(ReleaseResource, request)
self.assertEqual(len(info['entries']), 2)
+
+ def test_view_model_instance(self):
+ from bodhi.views import view_model_instance
+ request = testing.DummyRequest()
+ context = DBSession.query(Release).first()
+ info = view_model_instance(context, request)
+ self.assertEqual(type(info['context']), context.__class__)
+
+ def test_view_model(self):
+ from bodhi.resources import ReleaseResource
+ from bodhi.views import view_model
+ request = testing.DummyRequest()
+ info = view_model(ReleaseResource, request)
+ self.assertEqual(len(info['page']), 2)
+ self.assertEqual(info['caption'], 'Releases')
commit 75246c4615eeda9d1de97fb28e09782a62c7cf8f
Author: Luke Macken <lmacken(a)redhat.com>
Date: Tue May 17 13:48:48 2011 -0400
Paginate JSON and optimize our Grid by removing an extra SELECT
diff --git a/pyramid/bodhi/bodhi/models/models.py b/pyramid/bodhi/bodhi/models/models.py
index 83385fc..38a0207 100644
--- a/pyramid/bodhi/bodhi/models/models.py
+++ b/pyramid/bodhi/bodhi/models/models.py
@@ -56,11 +56,11 @@ class BodhiBase(object):
items.append((col.name, prop))
return dict(items)
- @property
- def grid_columns(self):
+ @classmethod
+ def grid_columns(cls):
columns = []
- exclude = getattr(self, '__exclude_columns__', [])
- for col in self.__table__.columns:
+ exclude = getattr(cls, '__exclude_columns__', [])
+ for col in cls.__table__.columns:
if col.name in exclude:
continue
columns.append(col.name)
diff --git a/pyramid/bodhi/bodhi/views.py b/pyramid/bodhi/bodhi/views.py
index afc8f50..0ec2e33 100644
--- a/pyramid/bodhi/bodhi/views.py
+++ b/pyramid/bodhi/bodhi/views.py
@@ -10,9 +10,11 @@ def view_model_instance_json(context, request):
def view_model_json(context, request):
session = DBSession()
- # TODO: pagination
- entries = session.query(context.__model__).all()
- return {'entries': [entry.__json__() for entry in entries]}
+ entries = session.query(context.__model__)
+ current_page = int(request.params.get('page', 1))
+ items_per_page = int(request.params.get('items_per_page', 20))
+ page = Page(entries, page=current_page, items_per_page=items_per_page)
+ return {'entries': [entry.__json__() for entry in page]}
## Mako templated views
@@ -27,7 +29,7 @@ def view_model(context, request):
page_url = PageURL_WebOb(request)
page = Page(entries, page=current_page, url=page_url,
items_per_page=items_per_page)
- # FIXME: entries[0] triggers another query
- grid = Grid([entry.__json__() for entry in page], entries[0].grid_columns)
+ grid = Grid([entry.__json__() for entry in page],
+ context.__model__.grid_columns())
return {'caption': context.__model__.__name__ + 's',
'grid': grid, 'page': page}
Show replies by date