Overhaul product views a little, per customization needs
This commit is contained in:
parent
f7267597ee
commit
9a6ad16e2f
5 changed files with 94 additions and 54 deletions
|
@ -41,7 +41,9 @@ from .employees import EmployeeFieldRenderer
|
|||
|
||||
from .stores import StoreFieldRenderer
|
||||
from .vendors import VendorFieldRenderer, PurchaseFieldRenderer
|
||||
from .products import (GPCFieldRenderer, DepartmentFieldRenderer, SubdepartmentFieldRenderer, CategoryFieldRenderer,
|
||||
BrandFieldRenderer, ProductFieldRenderer, PriceFieldRenderer, PriceWithExpirationFieldRenderer)
|
||||
from .products import (GPCFieldRenderer, ScancodeFieldRenderer,
|
||||
DepartmentFieldRenderer, SubdepartmentFieldRenderer, CategoryFieldRenderer,
|
||||
BrandFieldRenderer, ProductFieldRenderer,
|
||||
PriceFieldRenderer, PriceWithExpirationFieldRenderer)
|
||||
|
||||
from .batch import BatchIDFieldRenderer, HandheldBatchFieldRenderer
|
||||
|
|
|
@ -27,6 +27,8 @@ Product Field Renderers
|
|||
from __future__ import unicode_literals, absolute_import
|
||||
|
||||
from rattail.gpc import GPC
|
||||
from rattail.db import model
|
||||
from rattail.db.util import maxlen
|
||||
|
||||
from formalchemy import TextFieldRenderer
|
||||
from formalchemy.fields import SelectFieldRenderer
|
||||
|
@ -57,7 +59,26 @@ class ProductFieldRenderer(AutocompleteFieldRenderer):
|
|||
return tags.link_to(product, self.request.route_url('products.view', uuid=product.uuid))
|
||||
|
||||
|
||||
class GPCFieldRenderer(TextFieldRenderer):
|
||||
class ProductKeyFieldRenderer(TextFieldRenderer):
|
||||
"""
|
||||
Base class for product key field renderers.
|
||||
"""
|
||||
|
||||
def render_readonly(self, **kwargs):
|
||||
value = self.raw_value
|
||||
if value is None:
|
||||
return ''
|
||||
value = self.render_value(value)
|
||||
if kwargs.get('link'):
|
||||
product = self.field.parent.model
|
||||
value = tags.link_to(value, kwargs['link'](product))
|
||||
return value
|
||||
|
||||
def render_value(self, value):
|
||||
return unicode(value)
|
||||
|
||||
|
||||
class GPCFieldRenderer(ProductKeyFieldRenderer):
|
||||
"""
|
||||
Renderer for :class:`rattail.gpc.GPC` fields.
|
||||
"""
|
||||
|
@ -67,16 +88,18 @@ class GPCFieldRenderer(TextFieldRenderer):
|
|||
# Hm, should maybe consider hard-coding this...?
|
||||
return len(unicode(GPC(0)))
|
||||
|
||||
def render_readonly(self, **kwargs):
|
||||
gpc = self.raw_value
|
||||
if gpc is None:
|
||||
return ''
|
||||
gpc = unicode(gpc)
|
||||
gpc = '{}-{}'.format(gpc[:-1], gpc[-1])
|
||||
if kwargs.get('link'):
|
||||
product = self.field.parent.model
|
||||
gpc = tags.link_to(gpc, kwargs['link'](product))
|
||||
return gpc
|
||||
def render_value(self, gpc):
|
||||
return gpc.pretty()
|
||||
|
||||
|
||||
class ScancodeFieldRenderer(ProductKeyFieldRenderer):
|
||||
"""
|
||||
Renderer for :class:`rattail.db.model.Product.scancode` field
|
||||
"""
|
||||
|
||||
@property
|
||||
def length(self):
|
||||
return maxlen(model.Product.scancode)
|
||||
|
||||
|
||||
class DepartmentFieldRenderer(SelectFieldRenderer):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue