Add shared GPC search filter, use it for product batch rows.

This commit is contained in:
Lance Edgar 2015-03-07 14:19:19 -06:00
parent 51e4eda662
commit 69a5eed83b
5 changed files with 41 additions and 34 deletions

View file

@ -37,9 +37,11 @@ from pyramid.renderers import render
from pyramid_simpleform import Form
from pyramid_simpleform.renderers import FormRenderer
from rattail.core import Object
from edbob.util import prettify
from rattail.core import Object
from rattail.gpc import GPC
class SearchFilter(Object):
"""
@ -228,6 +230,32 @@ def filter_ilike_and_soundex(field):
return filters
def filter_gpc(field):
"""
Returns a filter suitable for a GPC field.
"""
def filter_is(q, v):
if not v:
return q
try:
return q.filter(field.in_((
GPC(v), GPC(v, calc_check_digit='upc'))))
except ValueError:
return q
def filter_not(q, v):
if not v:
return q
try:
return q.filter(~field.in_((
GPC(v), GPC(v, calc_check_digit='upc'))))
except ValueError:
return q
return {'is': filter_is, 'nt': filter_not}
def get_filter_config(prefix, request, filter_map, **kwargs):
"""
Returns a configuration dictionary for a search form.