Add ValidGPC
formencode validator
This commit is contained in:
parent
f890405162
commit
acbb3d289c
|
@ -26,8 +26,11 @@ Custom Form Validators
|
|||
|
||||
from __future__ import unicode_literals, absolute_import
|
||||
|
||||
import re
|
||||
|
||||
from rattail.db import model
|
||||
from rattail.db.util import validate_email_address, validate_phone_number
|
||||
from rattail.gpc import GPC
|
||||
|
||||
import formencode as fe
|
||||
import formalchemy as fa
|
||||
|
@ -35,6 +38,26 @@ import formalchemy as fa
|
|||
from tailbone.db import Session
|
||||
|
||||
|
||||
class ValidGPC(fe.validators.FancyValidator):
|
||||
"""
|
||||
Validator for fields which should contain GPC value.
|
||||
"""
|
||||
|
||||
def _to_python(self, value, state):
|
||||
if value is not None:
|
||||
digits = re.sub(r'\D', '', value)
|
||||
if digits:
|
||||
try:
|
||||
return GPC(digits)
|
||||
except ValueError as error:
|
||||
raise fe.Invalid("Invalid UPC: {}".format(error), value, state)
|
||||
|
||||
def _from_python(self, upc, state):
|
||||
if upc is None:
|
||||
return ''
|
||||
return upc.pretty()
|
||||
|
||||
|
||||
class ModelValidator(fe.validators.FancyValidator):
|
||||
"""
|
||||
Generic validator for data model reference fields.
|
||||
|
|
Loading…
Reference in a new issue