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(
description=_("Activate selected %(verbose_name_plural)s"),
description=_("Activate selected %(verbose_name_plural)s"), # ty:ignore[invalid-argument-type]
permissions=["change"],
)
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)
@action(
description=_("Deactivate selected %(verbose_name_plural)s"),
description=_("Deactivate selected %(verbose_name_plural)s"), # ty:ignore[invalid-argument-type]
permissions=["change"],
)
def deactivate_selected(
@ -528,7 +528,7 @@ class ProductAdmin(
has_images.short_description = _("has images") # ty:ignore[unresolved-attribute]
@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"],
)
def export_to_marketplaces(
@ -550,7 +550,7 @@ class ProductAdmin(
self.message_user(request=request, message=str(e), level=messages.ERROR)
@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"],
)
def ban_from_marketplaces(

View file

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