diff --git a/apps/course/migrations/0005_alter_course_discount_percentage.py b/apps/course/migrations/0005_alter_course_discount_percentage.py new file mode 100644 index 0000000..df23292 --- /dev/null +++ b/apps/course/migrations/0005_alter_course_discount_percentage.py @@ -0,0 +1,19 @@ +# Generated by Django 5.2.12 on 2026-05-04 09:11 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0004_alter_lessoncompletion_options_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='course', + name='discount_percentage', + field=models.PositiveIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Discount Percentage'), + ), + ] diff --git a/apps/course/models/course.py b/apps/course/models/course.py index c001140..86a6ed2 100644 --- a/apps/course/models/course.py +++ b/apps/course/models/course.py @@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _ from apps.account.models import ProfessorUser from utils.schema import default_timing from utils import generate_slug_for_model +from django.core.validators import MinValueValidator, MaxValueValidator @@ -95,7 +96,7 @@ class Course(models.Model): status = models.CharField(max_length=15, choices=StatusChoices.choices, default=StatusChoices.INACTIVE, verbose_name=_('Course Status')) is_free = models.BooleanField(default=True, verbose_name=_('Is Free')) price = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name=_('Course Price')) - discount_percentage = models.PositiveIntegerField(default=0, verbose_name=_('Discount Percentage')) + discount_percentage = models.PositiveIntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(100)], verbose_name=_('Discount Percentage')) final_price = models.DecimalField( verbose_name=_('Course Final Price'), decimal_places=2, max_digits=10, default=0.00, blank=True, help_text=_('This field is automatically calculated based on the discount percentage.')