Add shared GPC search filter, use it for product batch rows.
This commit is contained in:
parent
51e4eda662
commit
69a5eed83b
5 changed files with 41 additions and 34 deletions
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue