Add ProductsHandler.get_image_url() etc.

plus misc. tweaks for sake of new "scanning" feature for ordering batches
This commit is contained in:
Lance Edgar 2021-01-31 20:32:14 -06:00
parent ff576a3e8e
commit 26928bc0d1
3 changed files with 24 additions and 2 deletions

View file

@ -26,6 +26,7 @@ Handler for "purchasing" batches
from __future__ import unicode_literals, absolute_import, division from __future__ import unicode_literals, absolute_import, division
import decimal
import logging import logging
import six import six
@ -1820,11 +1821,15 @@ class PurchaseBatchHandler(BatchHandler):
if batch.mode == self.enum.PURCHASE_BATCH_MODE_ORDERING: if batch.mode == self.enum.PURCHASE_BATCH_MODE_ORDERING:
cases_ordered = kwargs.get('cases_ordered') cases_ordered = kwargs.get('cases_ordered')
if cases_ordered is not None: if cases_ordered is not None:
if isinstance(cases_ordered, six.string_types):
cases_ordered = decimal.Decimal(cases_ordered or '0')
cases_diff = cases_ordered - (row.cases_ordered or 0) cases_diff = cases_ordered - (row.cases_ordered or 0)
if cases_diff: if cases_diff:
self.order_row(row, cases=cases_diff) self.order_row(row, cases=cases_diff)
units_ordered = kwargs.get('units_ordered') units_ordered = kwargs.get('units_ordered')
if units_ordered is not None: if units_ordered is not None:
if isinstance(units_ordered, six.string_types):
units_ordered = decimal.Decimal(units_ordered or '0')
units_diff = units_ordered - (row.units_ordered or 0) units_diff = units_ordered - (row.units_ordered or 0)
if units_diff: if units_diff:
self.order_row(row, units=units_diff) self.order_row(row, units=units_diff)

View file

@ -569,12 +569,12 @@ class RattailConfig(object):
spec = self.require('rattail.trainwreck', 'model', usedb=False) spec = self.require('rattail.trainwreck', 'model', usedb=False)
return import_module_path(spec) return import_module_path(spec)
def product_key(self): def product_key(self, default='upc'):
""" """
Returns the name of the attribute which should be treated as the Returns the name of the attribute which should be treated as the
canonical product key field, e.g. 'upc' or 'item_id' etc. canonical product key field, e.g. 'upc' or 'item_id' etc.
""" """
return self.get('rattail', 'product.key', default='upc') return self.get('rattail', 'product.key', default=default) or default
def product_key_title(self, key=None): def product_key_title(self, key=None):
""" """

View file

@ -29,6 +29,7 @@ from __future__ import unicode_literals, absolute_import
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import orm from sqlalchemy import orm
from rattail import pod
from rattail.util import load_object from rattail.util import load_object
from rattail.app import GenericHandler from rattail.app import GenericHandler
@ -42,6 +43,22 @@ class ProductsHandler(GenericHandler):
particular product can be deleted, etc. particular product can be deleted, etc.
""" """
def get_image_url(self, upc=None, product=None, **kwargs):
"""
Return the preferred image URL for the given UPC or product.
"""
if product and product.upc:
upc = product.upc
if upc:
return self.get_pod_image_url(upc)
def get_pod_image_url(self, upc, **kwargs):
"""
Return the POD image URL for the given UPC.
"""
if upc:
return pod.get_image_url(self.config, upc)
def get_uom_sil_codes(self, session, uppercase=False, **kwargs): def get_uom_sil_codes(self, session, uppercase=False, **kwargs):
""" """
This should return a dict, keys of which are UOM abbreviation strings, This should return a dict, keys of which are UOM abbreviation strings,