Improved product UPC search so check digit is optional.
This commit is contained in:
parent
1ade594046
commit
d1b2983a9b
|
@ -46,6 +46,7 @@ from rattail.exceptions import LabelPrintingError
|
||||||
from rattail.db.model import (
|
from rattail.db.model import (
|
||||||
Product, ProductPrice, ProductCost, ProductCode,
|
Product, ProductPrice, ProductCost, ProductCode,
|
||||||
Brand, Vendor, Department, Subdepartment, LabelProfile)
|
Brand, Vendor, Department, Subdepartment, LabelProfile)
|
||||||
|
from rattail.gpc import GPC
|
||||||
|
|
||||||
from rattail.pyramid import Session
|
from rattail.pyramid import Session
|
||||||
from rattail.pyramid.forms import (AutocompleteFieldRenderer,
|
from rattail.pyramid.forms import (AutocompleteFieldRenderer,
|
||||||
|
@ -97,20 +98,22 @@ class ProductsGrid(SearchableAlchemyGridView):
|
||||||
def filter_upc():
|
def filter_upc():
|
||||||
|
|
||||||
def filter_is(q, v):
|
def filter_is(q, v):
|
||||||
|
if not v:
|
||||||
|
return q
|
||||||
try:
|
try:
|
||||||
v = int(v)
|
return q.filter(Product.upc.in_((
|
||||||
|
GPC(v), GPC(v, calc_check_digit='upc'))))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return q
|
return q
|
||||||
else:
|
|
||||||
return q.filter(Product.upc == v) if v else q
|
|
||||||
|
|
||||||
def filter_not(q, v):
|
def filter_not(q, v):
|
||||||
|
if not v:
|
||||||
|
return q
|
||||||
try:
|
try:
|
||||||
v = int(v)
|
return q.filter(~Product.upc.in_((
|
||||||
|
GPC(v), GPC(v, calc_check_digit='upc'))))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return q
|
return q
|
||||||
else:
|
|
||||||
return q.filter(Product.upc != v) if v else q
|
|
||||||
|
|
||||||
return {'is': filter_is, 'nt': filter_not}
|
return {'is': filter_is, 'nt': filter_not}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue