Add desktop support for creating inventory batches
with a workflow form of sorts
This commit is contained in:
parent
52e9717288
commit
91bb38573b
4 changed files with 433 additions and 11 deletions
|
@ -585,11 +585,14 @@ class Form(object):
|
|||
else:
|
||||
raise ValueError("unknown type for '{}' field: {}".format(key, type_))
|
||||
|
||||
def set_enum(self, key, enum):
|
||||
def set_enum(self, key, enum, empty=None):
|
||||
if enum:
|
||||
self.enums[key] = enum
|
||||
self.set_type(key, 'enum')
|
||||
self.set_widget(key, dfwidget.SelectWidget(values=list(enum.items())))
|
||||
values = list(enum.items())
|
||||
if empty:
|
||||
values.insert(0, empty)
|
||||
self.set_widget(key, dfwidget.SelectWidget(values=values))
|
||||
else:
|
||||
self.enums.pop(key, None)
|
||||
|
||||
|
|
|
@ -26,9 +26,12 @@ Form Schema Types
|
|||
|
||||
from __future__ import unicode_literals, absolute_import
|
||||
|
||||
import re
|
||||
|
||||
import six
|
||||
|
||||
from rattail.db import model
|
||||
from rattail.gpc import GPC
|
||||
|
||||
import colander
|
||||
|
||||
|
@ -60,6 +63,28 @@ class JQueryTime(colander.Time):
|
|||
return colander.timeparse(cstruct, formats[0])
|
||||
|
||||
|
||||
class GPCType(colander.SchemaType):
|
||||
"""
|
||||
Schema type for product GPC data.
|
||||
"""
|
||||
|
||||
def serialize(self, node, appstruct):
|
||||
if appstruct is colander.null:
|
||||
return colander.null
|
||||
return six.text_type(appstruct)
|
||||
|
||||
def deserialize(self, node, cstruct):
|
||||
if not cstruct:
|
||||
return None
|
||||
digits = re.sub(r'\D', '', cstruct)
|
||||
if not digits:
|
||||
return None
|
||||
try:
|
||||
return GPC(digits)
|
||||
except Exception as err:
|
||||
raise colander.Invalid(node, six.text_type(err))
|
||||
|
||||
|
||||
class ModelType(colander.SchemaType):
|
||||
"""
|
||||
Custom schema type for scalar ORM relationship fields.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue