fix: add Product.default_vendor_item convenience property
				
					
				
			This commit is contained in:
		
							parent
							
								
									8359e5692e
								
							
						
					
					
						commit
						9b9260ba4b
					
				
					 1 changed files with 28 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -583,6 +583,32 @@ class Product(common.ProductBase, Base):
 | 
			
		|||
        creator=lambda lc: ProductLikeCode(like_code=lc),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    vendor_items = orm.relationship(
 | 
			
		||||
        'VendorItem',
 | 
			
		||||
        back_populates='product',
 | 
			
		||||
        primaryjoin='VendorItem.upc == Product.upc',
 | 
			
		||||
        foreign_keys='VendorItem.upc',
 | 
			
		||||
        order_by='VendorItem.vendor_item_id',
 | 
			
		||||
        doc="""
 | 
			
		||||
        List of :class:`VendorItem` records for this product.
 | 
			
		||||
        """)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def default_vendor_item(self):
 | 
			
		||||
        """
 | 
			
		||||
        Returns the "default" vendor item record.  This will
 | 
			
		||||
        correspond to the :attr:`default_vendor` if possible.
 | 
			
		||||
 | 
			
		||||
        :rtype: :class:`VendorItem` or ``None``
 | 
			
		||||
        """
 | 
			
		||||
        if self.default_vendor:
 | 
			
		||||
            for item in self.vendor_items:
 | 
			
		||||
                if item.vendor_id == self.default_vendor.id:
 | 
			
		||||
                    return item
 | 
			
		||||
 | 
			
		||||
        if self.vendor_items:
 | 
			
		||||
            return self.vendor_items[0]
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def full_description(self):
 | 
			
		||||
        fields = ['brand', 'description', 'size']
 | 
			
		||||
| 
						 | 
				
			
			@ -732,17 +758,12 @@ class VendorItem(Base):
 | 
			
		|||
    upc = sa.Column(sa.String(length=13), nullable=False)
 | 
			
		||||
    product = orm.relationship(
 | 
			
		||||
        Product,
 | 
			
		||||
        back_populates='vendor_items',
 | 
			
		||||
        primaryjoin=Product.upc == upc,
 | 
			
		||||
        foreign_keys=[upc],
 | 
			
		||||
        doc="""
 | 
			
		||||
        Reference to the :class:`Product` to which this record applies.
 | 
			
		||||
        """,
 | 
			
		||||
        backref=orm.backref(
 | 
			
		||||
            'vendor_items',
 | 
			
		||||
            order_by=vendor_item_id,
 | 
			
		||||
            doc="""
 | 
			
		||||
            List of :class:`VendorItem` records for this product.
 | 
			
		||||
            """))
 | 
			
		||||
        """)
 | 
			
		||||
 | 
			
		||||
    brand = sa.Column(sa.String(length=50), nullable=True)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue