fix(models): correct discount_price calculation logic

ensure discount_price reflects the actual discount by using the product's price. Also, suppress type-related issues in admin action descriptions for improved linting compatibility.
This commit is contained in:
Egor Pavlovich Gorbunov 2026-01-26 14:51:05 +03:00
parent 28622cec90
commit 9cab9fdd3a
2 changed files with 5 additions and 5 deletions

View file

@ -155,7 +155,7 @@ class ActivationActionsMixin:
] ]
@action( @action(
description=_("Activate selected %(verbose_name_plural)s"), description=_("Activate selected %(verbose_name_plural)s"), # ty:ignore[invalid-argument-type]
permissions=["change"], permissions=["change"],
) )
def activate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None: def activate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
@ -171,7 +171,7 @@ class ActivationActionsMixin:
self.message_user(request=request, message=str(e), level=messages.ERROR) self.message_user(request=request, message=str(e), level=messages.ERROR)
@action( @action(
description=_("Deactivate selected %(verbose_name_plural)s"), description=_("Deactivate selected %(verbose_name_plural)s"), # ty:ignore[invalid-argument-type]
permissions=["change"], permissions=["change"],
) )
def deactivate_selected( def deactivate_selected(
@ -528,7 +528,7 @@ class ProductAdmin(
has_images.short_description = _("has images") # ty:ignore[unresolved-attribute] has_images.short_description = _("has images") # ty:ignore[unresolved-attribute]
@action( @action(
description=_("Export selected %(verbose_name_plural)s to marketplaces' feeds"), description=_("Export selected %(verbose_name_plural)s to marketplaces' feeds"), # ty:ignore[invalid-argument-type]
permissions=["change"], permissions=["change"],
) )
def export_to_marketplaces( def export_to_marketplaces(
@ -550,7 +550,7 @@ class ProductAdmin(
self.message_user(request=request, message=str(e), level=messages.ERROR) self.message_user(request=request, message=str(e), level=messages.ERROR)
@action( @action(
description=_("Ban selected %(verbose_name_plural)s from marketplaces' feeds"), description=_("Ban selected %(verbose_name_plural)s from marketplaces' feeds"), # ty:ignore[invalid-argument-type]
permissions=["change"], permissions=["change"],
) )
def ban_from_marketplaces( def ban_from_marketplaces(

View file

@ -699,7 +699,7 @@ class Product(ExportModelOperationsMixin("product"), NiceModel):
@cached_property @cached_property
def discount_price(self) -> float | None: def discount_price(self) -> float | None:
promo = self.promos.first() promo = self.promos.first()
return promo.discount_percent if promo else None return (self.price / 100) * promo.discount_percent if promo else None
@property @property
def rating(self) -> float: def rating(self) -> float: