Add grid, CRUD views for Setting model.

This required some tweaks to the base CRUD view etc.
This commit is contained in:
Lance Edgar 2014-11-23 14:27:00 -06:00
parent 86507cf660
commit cc2c2573e5
5 changed files with 205 additions and 32 deletions

View file

@ -1,9 +1,8 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
# Copyright © 2010-2014 Lance Edgar
#
# This file is part of Rattail.
#
@ -21,11 +20,20 @@
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
FormAlchemy Grid Classes
"""
from __future__ import unicode_literals
from sqlalchemy.orm import object_session
try:
from sqlalchemy.inspection import inspect
except ImportError:
inspect = None
from sqlalchemy.orm import class_mapper
from webhelpers.html import tags
from webhelpers.html import HTML
@ -36,7 +44,6 @@ from edbob.util import prettify
from .core import Grid
from ..db import Session
from sqlalchemy.orm import object_session
__all__ = ['AlchemyGrid']
@ -78,14 +85,18 @@ class AlchemyGrid(Grid):
return HTML.tag('th', class_=class_, field=field.key,
title=self.column_titles.get(field.key), c=label)
def view_route_kwargs(self, row):
return {'uuid': row.uuid}
def crud_route_kwargs(self, row):
if inspect:
mapper = inspect(row.__class__)
else:
mapper = class_mapper(row.__class__)
keys = [k.key for k in mapper.primary_key]
values = [getattr(row, k) for k in keys]
return dict(zip(keys, values))
def edit_route_kwargs(self, row):
return {'uuid': row.uuid}
def delete_route_kwargs(self, row):
return {'uuid': row.uuid}
view_route_kwargs = crud_route_kwargs
edit_route_kwargs = crud_route_kwargs
delete_route_kwargs = crud_route_kwargs
def iter_fields(self):
return self._formalchemy_grid.render_fields.itervalues()