Skip to content

Commit e0733c4

Browse files
Migrate existing (string) values to populate min_weeks and max_weeks (#2481)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 90418c3 commit e0733c4

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Generated by Django 4.2.16 on 2024-12-03 18:25
2+
3+
import re
4+
5+
from django.db import migrations
6+
7+
8+
def populate_max_min_weeks_fields(apps, schema_editor):
9+
CoursePage = apps.get_model("cms", "CoursePage")
10+
for course_page in CoursePage.objects.all():
11+
if course_page.length:
12+
duration_nums = re.findall(r"\d+", course_page.length)
13+
if len(duration_nums) > 0:
14+
course_page.max_weeks = duration_nums[0]
15+
course_page.min_weeks = duration_nums[0]
16+
course_page.save()
17+
18+
ProgramPage = apps.get_model("cms", "ProgramPage")
19+
for program_page in ProgramPage.objects.all():
20+
if program_page.length and program_page.max_weeks is None:
21+
duration_string = re.findall(
22+
r"\d+[\s-]*[\d+\s]*week", program_page.length.lower()
23+
)
24+
if duration_string:
25+
duration_nums = re.findall(r"\d+", duration_string[0])
26+
else:
27+
duration_string = re.findall(
28+
r"\d+[\s-]*[\d+\s]*month", program_page.length.lower()
29+
)
30+
duration_nums_in_month = re.findall(r"\d+", duration_string[0])
31+
duration_nums = [num * 4 for num in duration_nums_in_month]
32+
program_page.min_weeks = duration_nums[0]
33+
program_page.max_weeks = (
34+
duration_nums[1] if len(duration_nums) > 1 else duration_nums[0]
35+
)
36+
program_page.save()
37+
38+
39+
class Migration(migrations.Migration):
40+
dependencies = [
41+
("cms", "0040_coursepage_max_weeks_coursepage_min_weeks_and_more"),
42+
]
43+
44+
operations = [
45+
migrations.RunPython(
46+
populate_max_min_weeks_fields, reverse_code=migrations.RunPython.noop
47+
),
48+
]

0 commit comments

Comments
 (0)