Skip to content

Commit 8fc40cb

Browse files
authored
fix: worksheet index (#1763)
1 parent b1e5451 commit 8fc40cb

File tree

2 files changed

+54
-28
lines changed

2 files changed

+54
-28
lines changed

game/templates/game/python_den_level_selection.html

+6-6
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ <h4>Introduction to Python</h4>
7777
<p class="text--warning">In order to access the full content for this course, please log in.</p>
7878
{% endif %}
7979
<div class="col-sm-10 python-den-level">
80-
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
80+
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
8181
</div>
8282
<div class="col-sm-2 python-den-level">
8383
<a class="button button--level button--icon disabled">
8484
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
8585
</div>
8686
{% else %}
8787
<div class="col-sm-7 python-den-level">
88-
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
88+
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
8989
</div>
9090
{% if user|is_logged_in_as_teacher %}
9191
<div class="col-sm-3 python-den-level">
@@ -161,15 +161,15 @@ <h4>Introduction to Python</h4>
161161
<p class="text--warning">In order to access the full content for this course, please log in.</p>
162162
{% endif %}
163163
<div class="col-sm-10 python-den-level">
164-
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
164+
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
165165
</div>
166166
<div class="col-sm-2 python-den-level">
167167
<a class="button button--level button--icon disabled">
168168
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
169169
</div>
170170
{% else %}
171171
<div class="col-sm-7 python-den-level">
172-
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
172+
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
173173
</div>
174174
{% if user|is_logged_in_as_teacher %}
175175
<div class="col-sm-3 python-den-level">
@@ -234,15 +234,15 @@ <h4>Introduction to Python</h4>
234234
<p class="text--warning">In order to access the full content for this course, please log in.</p>
235235
{% endif %}
236236
<div class="col-sm-10 python-den-level">
237-
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
237+
<a class="disabled">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
238238
</div>
239239
<div class="col-sm-2 python-den-level">
240240
<a class="button button--level button--icon disabled">
241241
Worksheet<span class="iconify" data-icon="mdi:open-in-new"></span></a>
242242
</div>
243243
{% else %}
244244
<div class="col-sm-7 python-den-level">
245-
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %}</a>
245+
<a href="https://editor.raspberrypi.org/en/projects/blank-python-starter" target="_blank">{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</a>
246246
</div>
247247
{% if user|is_logged_in_as_teacher %}
248248
<div class="col-sm-3 python-den-level">

game/views/level_selection.py

+48-22
Original file line numberDiff line numberDiff line change
@@ -80,29 +80,55 @@ def fetch_episode_data(early_access, start=1, end=12):
8080
data = fetch_episode_data_from_database(early_access, start, end)
8181
cache.set(key, data)
8282

83-
return [
84-
dict(
85-
episode,
86-
name=messages.get_episode_title(episode["id"]),
87-
levels=[
88-
dict(level, title=get_level_title(level["name"]))
89-
for level in episode["levels"]
90-
],
91-
worksheets=[
92-
{
93-
"id": worksheet.id,
94-
"before_level": worksheet.before_level_id,
95-
"lesson_plan_link": worksheet.lesson_plan_link,
96-
"slides_link": worksheet.slides_link,
97-
"student_worksheet_link": worksheet.student_worksheet_link,
98-
"indy_worksheet_link": worksheet.indy_worksheet_link,
99-
"video_link": worksheet.video_link,
100-
}
101-
for worksheet in Worksheet.objects.filter(episode=episode["id"]).order_by("-before_level")
102-
],
83+
def worksheet_to_dict(index, worksheet):
84+
return {
85+
"id": worksheet.id,
86+
"index": index,
87+
"before_level": worksheet.before_level_id,
88+
"lesson_plan_link": worksheet.lesson_plan_link,
89+
"slides_link": worksheet.slides_link,
90+
"student_worksheet_link": worksheet.student_worksheet_link,
91+
"indy_worksheet_link": worksheet.indy_worksheet_link,
92+
"video_link": worksheet.video_link,
93+
}
94+
95+
episodes = []
96+
for episode in data:
97+
worksheets = [
98+
worksheet_to_dict(index, worksheet)
99+
for index, worksheet in enumerate(
100+
Worksheet.objects.filter(
101+
episode=episode["id"],
102+
before_level__isnull=False,
103+
).order_by("before_level"),
104+
start=1,
105+
)
106+
]
107+
108+
worksheets += [
109+
worksheet_to_dict(index, worksheet)
110+
for index, worksheet in enumerate(
111+
Worksheet.objects.filter(
112+
episode=episode["id"],
113+
before_level__isnull=True,
114+
),
115+
start=1 + len(worksheets),
116+
)
117+
]
118+
119+
episodes.append(
120+
dict(
121+
episode,
122+
name=messages.get_episode_title(episode["id"]),
123+
levels=[
124+
dict(level, title=get_level_title(level["name"]))
125+
for level in episode["levels"]
126+
],
127+
worksheets=worksheets,
128+
)
103129
)
104-
for episode in data
105-
]
130+
131+
return episodes
106132

107133

108134
def get_level_title(i):

0 commit comments

Comments
 (0)