Source code for endoreg_db.models.administration.center.center_product

from django.db import models
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ..product import Product, ProductGroup
    from .center import Center


[docs] class CenterProduct(models.Model): """ Associates a Product with a Center, indicating its usage on a specific date. Attributes: product (Product): The product used. date_used (date): The date the product was used. center (Center): The center where the product was used. """ product = models.ForeignKey( "Product", on_delete=models.CASCADE, related_name="center_products" # Changed related_name for clarity ) date_used = models.DateField() center = models.ForeignKey( "Center", on_delete=models.CASCADE, related_name="center_products", ) if TYPE_CHECKING: product: "Product" center: "Center" class Meta: ordering = ['center', '-date_used', 'product'] verbose_name = "Center Product Usage" verbose_name_plural = "Center Product Usages" def __str__(self) -> str: return f"{self.product} - {self.center} - {self.date_used}"
[docs] def get_product_name(self) -> str: """Returns the name of the product.""" return self.product.name
[docs] def get_product_group(self) -> "ProductGroup | None": """Returns the ProductGroup associated with this product.""" return self.product.product_group
[docs] def get_reference_product(self) -> "Product | None": """Returns the reference Product for this product's group.""" product_group = self.get_product_group() if product_group: return product_group.reference_product return None
[docs] def get_product_weight(self): product = self.product return product.get_product_weight()
[docs] def get_package_weight(self): product = self.product return product.get_package_weight()