Skip to content

Commit fa96a39

Browse files
Add max min price for product page (#2773)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 7950e40 commit fa96a39

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Generated by Django 4.2.22 on 2025-07-02 19:44
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("cms", "0045_remove_unnecessary_null_true"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="coursepage",
14+
name="max_price",
15+
field=models.SmallIntegerField(
16+
blank=True, help_text="Specify the maximum product price.", null=True
17+
),
18+
),
19+
migrations.AddField(
20+
model_name="coursepage",
21+
name="min_price",
22+
field=models.SmallIntegerField(
23+
blank=True, help_text="Specify the minimum product price.", null=True
24+
),
25+
),
26+
migrations.AddField(
27+
model_name="programpage",
28+
name="max_price",
29+
field=models.SmallIntegerField(
30+
blank=True, help_text="Specify the maximum product price.", null=True
31+
),
32+
),
33+
migrations.AddField(
34+
model_name="programpage",
35+
name="min_price",
36+
field=models.SmallIntegerField(
37+
blank=True, help_text="Specify the minimum product price.", null=True
38+
),
39+
),
40+
]
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Generated by Django 4.2.22 on 2025-07-03 12:08
2+
3+
import re
4+
5+
from django.db import migrations
6+
7+
8+
def populate_max_min_price(apps, schema_editor):
9+
CoursePage = apps.get_model("cms", "CoursePage")
10+
for page in CoursePage.objects.all():
11+
if page.price:
12+
for price in page.price:
13+
price_str = price.value["text"].lower()
14+
price_nums = re.findall(r"\d+", price_str)
15+
if len(price_nums) > 0:
16+
page.min_price = price_nums[0]
17+
page.max_price = (
18+
price_nums[1] if len(price_nums) > 1 else price_nums[0]
19+
)
20+
page.save()
21+
22+
ProgramPage = apps.get_model("cms", "ProgramPage")
23+
for page in ProgramPage.objects.all():
24+
if page.price:
25+
for price in page.price:
26+
price_str = price.value["text"].lower()
27+
price_nums = re.findall(r"\d+", price_str)
28+
if len(price_nums) > 0:
29+
page.min_price = price_nums[0]
30+
page.max_price = (
31+
price_nums[1] if len(price_nums) > 1 else price_nums[0]
32+
)
33+
page.save()
34+
35+
36+
class Migration(migrations.Migration):
37+
dependencies = [
38+
("cms", "0046_coursepage_max_price_coursepage_min_price_and_more"),
39+
]
40+
41+
operations = [
42+
migrations.RunPython(
43+
populate_max_min_price, reverse_code=migrations.RunPython.noop
44+
),
45+
]

cms/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,18 @@ class Meta:
10221022
use_json_field=True,
10231023
)
10241024

1025+
min_price = models.SmallIntegerField(
1026+
null=True,
1027+
blank=True,
1028+
help_text="Specify the minimum product price.",
1029+
)
1030+
1031+
max_price = models.SmallIntegerField(
1032+
null=True,
1033+
blank=True,
1034+
help_text="Specify the maximum product price.",
1035+
)
1036+
10251037
prerequisites = RichTextField(
10261038
null=True,
10271039
blank=True,
@@ -1108,6 +1120,8 @@ def is_program_page(self):
11081120
FieldPanel("min_weeks"),
11091121
FieldPanel("max_weeks"),
11101122
FieldPanel("price"),
1123+
FieldPanel("min_price"),
1124+
FieldPanel("max_price"),
11111125
FieldPanel("prerequisites"),
11121126
FieldPanel("faq_url"),
11131127
FieldPanel("about"),

0 commit comments

Comments
 (0)