Changeset - c3487917ceba
[Not reviewed]
0 2 0
Lance Edgar (lance) - 3 years ago 2021-11-06 17:35:15
lance@edbob.org
Only show POD image if so configured; use "image not found" fallback

also update a random docstring
2 files changed with 26 insertions and 10 deletions:
0 comments (0 inline, 0 general)
rattail/config.py
Show inline comments
 
@@ -571,24 +571,28 @@ class RattailConfig(object):
 

	
 
    def product_key(self, default='upc'):
 
        """
 
        Returns the name of the attribute which should be treated as the
 
        canonical product key field, e.g. 'upc' or 'item_id' etc.
 
        """
 
        return self.get('rattail', 'product.key', default=default) or default
 

	
 
    def product_key_title(self, key=None):
 
        """
 
        Returns the title string to be used when displaying product key field,
 
        e.g. "UPC" or "Part No." etc.
 

	
 
        :param key: The product key for which to return a label.  This
 
           is optional; if not specified then :meth:`product_key()`
 
           will be called to determine the key.
 
        """
 
        title = self.get('rattail', 'product.key_title')
 
        if title:
 
            return title
 
        if not key:
 
            key = self.product_key()
 
        if key == 'upc':
 
            return "UPC"
 
        if key == 'item_id':
 
            return "Item ID"
 
        return prettify(key)
 

	
rattail/products.py
Show inline comments
 
@@ -175,35 +175,47 @@ class ProductsHandler(GenericHandler):
 
                products.append(('sku', product))
 

	
 
        # maybe strip keys out of the result
 
        if not include_keys:
 
            products = [tup[1] for tup in products]
 

	
 
        return products
 

	
 
    def get_image_url(self, product=None, upc=None, **kwargs):
 
        """
 
        Return the preferred image URL for the given UPC or product.
 
        """
 
        base_url = self.config.base_url()
 

	
 
        # we prefer the "image on file" if available
 
        if product and product.image:
 
            url = self.config.base_url()
 
            if url:
 
                return '{}/products/{}/image'.format(url, product.uuid)
 

	
 
        # fallback to the POD image, if available
 
        if product and not upc:
 
            upc = product.upc
 
        if upc:
 
            return self.get_pod_image_url(upc)
 
        if base_url and product and product.image:
 
            return '{}/products/{}/image'.format(base_url, product.uuid)
 

	
 
        # and if this product is a pack item, then we prefer the unit
 
        # item image as fallback, if available
 
        if base_url and product and product.is_pack_item():
 
            unit = product.unit
 
            if unit and unit.image:
 
                return '{}/products/{}/image'.format(base_url, unit.uuid)
 

	
 
        # fallback to the POD image, if available and so configured
 
        if self.config.getbool('tailbone', 'products.show_pod_image',
 
                               default=False):
 
            if product and not upc:
 
                upc = product.upc
 
            if upc:
 
                return self.get_pod_image_url(upc)
 

	
 
        if base_url:
 
            return '{}/tailbone/img/product.png'.format(base_url)
 

	
 
    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 render_price(self, price, html=False, **kwargs):
 
        """
 
        Render the given ``price`` object as text.
 

	
0 comments (0 inline, 0 general)