Add Product.get_default_pack_item() convenience method

This commit is contained in:
Lance Edgar 2020-03-22 18:31:11 -05:00
parent 26a561ff21
commit 323eb81c1f

View file

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8; -*-
################################################################################ ################################################################################
# #
# Rattail -- Retail Software Framework # Rattail -- Retail Software Framework
# Copyright © 2010-2017 Lance Edgar # Copyright © 2010-2020 Lance Edgar
# #
# This file is part of Rattail. # This file is part of Rattail.
# #
@ -27,6 +27,7 @@ Data Models for Products
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
import datetime import datetime
import logging
import six import six
import sqlalchemy as sa import sqlalchemy as sa
@ -43,6 +44,9 @@ from rattail.db.util import make_full_description
from rattail.util import pretty_quantity from rattail.util import pretty_quantity
log = logging.getLogger(__name__)
@six.python_2_unicode_compatible @six.python_2_unicode_compatible
class Brand(Base): class Brand(Base):
""" """
@ -422,6 +426,20 @@ class Product(Base):
return True return True
return False return False
def get_default_pack_item(self):
"""
Returns the "default" pack item for the current product, which is
assumed to be a unit item.
"""
if self.is_unit_item():
for pack in self.packs:
if pack.default_pack:
return pack
if self.packs:
log.warning("unit item %s has %s packs, but none is default: %s",
self.uuid, len(self.packs), self)
return self.packs[0]
@property @property
def pretty_upc(self): def pretty_upc(self):
""" """