diff --git a/tailbone/app.py b/tailbone/app.py
index 28d64f00..7ba66730 100644
--- a/tailbone/app.py
+++ b/tailbone/app.py
@@ -45,7 +45,7 @@ from pyramid.authentication import SessionAuthenticationPolicy
import tailbone.db
from tailbone.auth import TailboneAuthorizationPolicy
-from tailbone.forms import GPCFieldRenderer
+from tailbone.forms import renderers
log = logging.getLogger(__name__)
@@ -119,7 +119,7 @@ def make_pyramid_config(settings):
# Configure FormAlchemy.
formalchemy.config.engine = TemplateEngine()
- formalchemy.FieldSet.default_renderers[GPCType] = GPCFieldRenderer
+ formalchemy.FieldSet.default_renderers[GPCType] = renderers.GPCFieldRenderer
return config
diff --git a/tailbone/forms/__init__.py b/tailbone/forms/__init__.py
index cb07088e..4d89dde9 100644
--- a/tailbone/forms/__init__.py
+++ b/tailbone/forms/__init__.py
@@ -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-2015 Lance Edgar
#
# This file is part of Rattail.
#
@@ -21,7 +20,6 @@
# along with Rattail. If not, see .
#
################################################################################
-
"""
Forms
"""
@@ -30,3 +28,5 @@ from .simpleform import *
from .alchemy import *
from .fields import *
from .renderers import *
+
+from tailbone.forms import renderers
diff --git a/tailbone/forms/renderers/__init__.py b/tailbone/forms/renderers/__init__.py
index c37b58fd..77645e73 100644
--- a/tailbone/forms/renderers/__init__.py
+++ b/tailbone/forms/renderers/__init__.py
@@ -33,4 +33,8 @@ from tailbone.forms.renderers.common import (
from .people import *
from .employees import EmployeeFieldRenderer
-from .products import *
+
+from tailbone.forms.renderers.products import GPCFieldRenderer
+from tailbone.forms.renderers.products import *
+
+from tailbone.forms.renderers.stores import StoreFieldRenderer
diff --git a/tailbone/forms/renderers/stores.py b/tailbone/forms/renderers/stores.py
new file mode 100644
index 00000000..bbe1545c
--- /dev/null
+++ b/tailbone/forms/renderers/stores.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+################################################################################
+#
+# Rattail -- Retail Software Framework
+# Copyright © 2010-2015 Lance Edgar
+#
+# This file is part of Rattail.
+#
+# Rattail is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Affero General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
+# more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Rattail. If not, see .
+#
+################################################################################
+"""
+Store Field Renderers
+"""
+
+from __future__ import unicode_literals
+
+from formalchemy.fields import SelectFieldRenderer
+
+
+class StoreFieldRenderer(SelectFieldRenderer):
+ """
+ Renderer for :class:`rattail.db.model.Store` instance fields.
+ """
+
+ def render_readonly(self, **kwargs):
+ store = self.raw_value
+ if not store:
+ return ''
+ return '{0} - {1}'.format(store.id, store.name)