Skip to content

Commit c8d672c

Browse files
authored
feat: new python den episodes and fix links (#1750)
1 parent 689f489 commit c8d672c

7 files changed

+148
-7
lines changed

game/messages.py

+2
Original file line numberDiff line numberDiff line change
@@ -3339,6 +3339,8 @@ def get_episode_title(episode_id):
33393339
20: "String Manipulation",
33403340
21: "Lists",
33413341
22: "Procedures",
3342+
23: "2D Lists",
3343+
24: "Procedures and Functions"
33423344
}
33433345

33443346
return episode_titles[episode_id]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.16 on 2024-11-27 15:43
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("game", "0106_fields_to_snake_case"),
10+
]
11+
12+
operations = [
13+
migrations.RenameField(
14+
model_name="episode",
15+
old_name="worksheet_link",
16+
new_name="student_worksheet_link",
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.16 on 2024-11-27 15:44
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("game", "0107_rename_worksheet_link_episode_student_worksheet_link"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="episode",
15+
name="indy_worksheet_link",
16+
field=models.CharField(blank=True, default=None, max_length=500, null=True),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
from django.apps.registry import Apps
2+
from django.db import migrations
3+
4+
5+
def create_episodes_23_and_24(apps: Apps, *args):
6+
Episode = apps.get_model("game", "Episode")
7+
8+
episode_23 = Episode.objects.create(
9+
pk=23,
10+
name="2D Lists",
11+
student_worksheet_link="https://code-for-life.gitbook.io/student-resources/python-den-student-resources/worksheet-12-2d-lists",
12+
indy_worksheet_link="https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-12-2d-lists",
13+
video_link="https://www.youtube.com/watch?v=MBU49ivZk6w",
14+
lesson_plan_link="https://code-for-life.gitbook.io/python-lessons-with-raspberry-pi-ide/EMEzsyyl4uRclyA9LDGN/python-12-2d-lists",
15+
slides_link="https://4077022412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwAuC4Q5WQz4ea2O2b2JP%2Fuploads%2F3Q4X7ZDk1TNej5c2e7LW%2FPython%2012%202D%20Lists.pptx?alt=media&token=847d9d69-4610-4c67-a649-0c6e0f88d372",
16+
)
17+
18+
episode_24 = Episode.objects.create(
19+
pk=24,
20+
name="Procedures and Functions",
21+
student_worksheet_link="https://code-for-life.gitbook.io/student-resources/python-den-student-resources/worksheet-13-procedures-and-functions",
22+
indy_worksheet_link="https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-13-procedures-and-functions",
23+
video_link="https://www.youtube.com/watch?v=LJMfI7P3Dzk",
24+
lesson_plan_link="https://code-for-life.gitbook.io/python-lessons-with-raspberry-pi-ide/EMEzsyyl4uRclyA9LDGN/python-13-procedures-and-functions",
25+
slides_link="https://4077022412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwAuC4Q5WQz4ea2O2b2JP%2Fuploads%2Fmr6FvFzY3LVuaGT1zd6d%2FPython%2013%20Procedures%20and%20Functions.pptx?alt=media&token=c5835e00-8d42-4567-8cf4-868b0f23dc0a",
26+
)
27+
28+
episode_23.next_episode = episode_24
29+
episode_23.save()
30+
31+
episode_16 = Episode.objects.get(pk=16)
32+
episode_16.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-1-output-operators-and-data"
33+
episode_16.save()
34+
35+
episode_17 = Episode.objects.get(pk=17)
36+
episode_17.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-2-variables-input-and-casting"
37+
episode_17.save()
38+
39+
episode_18 = Episode.objects.get(pk=18)
40+
episode_18.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-3-selection"
41+
episode_18.save()
42+
43+
episode_19 = Episode.objects.get(pk=19)
44+
episode_19.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-4-complex-selection"
45+
episode_19.save()
46+
47+
episode_12 = Episode.objects.get(pk=12)
48+
episode_12.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-5-iteration-part-1"
49+
episode_12.save()
50+
51+
episode_13 = Episode.objects.get(pk=13)
52+
episode_13.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-7-selection-in-a-loop"
53+
episode_13.save()
54+
55+
episode_14 = Episode.objects.get(pk=14)
56+
episode_14.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-8-indeterminate-loops"
57+
episode_14.save()
58+
59+
episode_20 = Episode.objects.get(pk=20)
60+
episode_20.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-9-string-manipulation"
61+
episode_20.save()
62+
63+
episode_21 = Episode.objects.get(pk=21)
64+
episode_21.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-10-1d-lists"
65+
episode_21.save()
66+
67+
episode_15 = Episode.objects.get(pk=15)
68+
episode_15.next_episode = episode_23
69+
episode_15.indy_worksheet_link = "https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-11-using-for-loops"
70+
episode_15.save()
71+
72+
73+
def delete_episodes_23_and_24(apps: Apps, *args):
74+
Episode = apps.get_model("game", "Episode")
75+
76+
episode_15 = Episode.objects.get(pk=15)
77+
episode_15.next_episode = None
78+
episode_15.indy_worksheet_link = None
79+
episode_15.save()
80+
81+
Episode.objects.filter(pk__in=[
82+
16, 17, 18, 19, 12, 13, 14, 20, 21
83+
]).update(indy_worksheet_link=None)
84+
85+
Episode.objects.filter(pk__in=[23, 24]).delete()
86+
87+
88+
class Migration(migrations.Migration):
89+
90+
dependencies = [
91+
("game", "0108_episode_indy_worksheet_link"),
92+
]
93+
94+
operations = [
95+
migrations.RunPython(
96+
code=create_episodes_23_and_24,
97+
reverse_code=delete_episodes_23_and_24,
98+
)
99+
]

game/models.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ class Episode(models.Model):
6666
slides_link = models.CharField(
6767
max_length=500, null=True, blank=True, default=None
6868
)
69-
worksheet_link = models.CharField(
69+
student_worksheet_link = models.CharField(
70+
max_length=500, null=True, blank=True, default=None
71+
)
72+
indy_worksheet_link = models.CharField(
7073
max_length=500, null=True, blank=True, default=None
7174
)
7275
video_link = models.CharField(

game/templates/game/python_den_level_selection.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ <h4>Introduction to Python</h4>
8585
</div>
8686
{% elif user|is_independent_student %}
8787
<div class="col-sm-3 python-den-level">
88-
<a href="{{episode.worksheet_link}}" class="button button--level button--icon" target="_blank">
88+
<a href="{{episode.indy_worksheet_link}}" class="button button--level button--icon" target="_blank">
8989
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
9090
</div>
9191
<div class="col-sm-2 python-den-level">
@@ -95,7 +95,7 @@ <h4>Introduction to Python</h4>
9595
{% else %}
9696
<div class="col-sm-3"></div>
9797
<div class="col-sm-2 python-den-level">
98-
<a href="{{episode.worksheet_link}}" class="button button--level button--icon" target="_blank">
98+
<a href="{{episode.student_worksheet_link}}" class="button button--level button--icon" target="_blank">
9999
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
100100
</div>
101101
{% endif %}
@@ -161,7 +161,7 @@ <h4>Introduction to Python</h4>
161161
</div>
162162
{% elif user|is_independent_student %}
163163
<div class="col-sm-3 python-den-level">
164-
<a href="{{episode.worksheet_link}}" class="button button--level button--icon" target="_blank">
164+
<a href="{{episode.indy_worksheet_link}}" class="button button--level button--icon" target="_blank">
165165
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
166166
</div>
167167
<div class="col-sm-2 python-den-level">
@@ -171,7 +171,7 @@ <h4>Introduction to Python</h4>
171171
{% else %}
172172
<div class="col-sm-3"></div>
173173
<div class="col-sm-2 python-den-level">
174-
<a href="{{episode.worksheet_link}}" class="button button--level button--icon" target="_blank">
174+
<a href="{{episode.student_worksheet_link}}" class="button button--level button--icon" target="_blank">
175175
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
176176
</div>
177177
{% endif %}
@@ -230,7 +230,7 @@ <h4>Introduction to Python</h4>
230230
</div>
231231
{% elif user|is_independent_student %}
232232
<div class="col-sm-3 python-den-level">
233-
<a href="https://code-for-life.gitbook.io/student-resources/python-den-student-resources/worksheet-6-iteration-part-2" class="button button--level button--icon" target="_blank">
233+
<a href="https://code-for-life.gitbook.io/independent-student-resources/python-den-resources-beta/session-6-iteration-part-2" class="button button--level button--icon" target="_blank">
234234
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
235235
</div>
236236
<div class="col-sm-2 python-den-level">

game/views/level_selection.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ def fetch_episode_data_from_database(early_access, start, end):
6060
"difficulty": episode.difficulty,
6161
"lesson_plan_link": episode.lesson_plan_link,
6262
"slides_link": episode.slides_link,
63-
"worksheet_link": episode.worksheet_link,
63+
"student_worksheet_link": episode.student_worksheet_link,
64+
"indy_worksheet_link": episode.indy_worksheet_link,
6465
"video_link": episode.video_link,
6566
}
6667

0 commit comments

Comments
 (0)