diff --git a/game/templates/game/python_den_level_selection.html b/game/templates/game/python_den_level_selection.html index 0142e06aa..7f590a100 100644 --- a/game/templates/game/python_den_level_selection.html +++ b/game/templates/game/python_den_level_selection.html @@ -77,7 +77,7 @@

Introduction to Python

In order to access the full content for this course, please log in.

{% endif %}
- {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %} + {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}
@@ -85,7 +85,7 @@

Introduction to Python

{% else %}
- {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %} + {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}
{% if user|is_logged_in_as_teacher %}
@@ -161,7 +161,7 @@

Introduction to Python

In order to access the full content for this course, please log in.

{% endif %}
- {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %} + {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}
@@ -169,7 +169,7 @@

Introduction to Python

{% else %}
- {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ forloop.counter }}{% endif %} + {{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}
{% if user|is_logged_in_as_teacher %}
@@ -234,7 +234,7 @@

Introduction to Python

In order to access the full content for this course, please log in.

{% endif %} {% else %} {% if user|is_logged_in_as_teacher %}
diff --git a/game/views/level_selection.py b/game/views/level_selection.py index 9779757bd..0e9247893 100644 --- a/game/views/level_selection.py +++ b/game/views/level_selection.py @@ -80,29 +80,55 @@ def fetch_episode_data(early_access, start=1, end=12): data = fetch_episode_data_from_database(early_access, start, end) cache.set(key, data) - return [ - dict( - episode, - name=messages.get_episode_title(episode["id"]), - levels=[ - dict(level, title=get_level_title(level["name"])) - for level in episode["levels"] - ], - worksheets=[ - { - "id": worksheet.id, - "before_level": worksheet.before_level_id, - "lesson_plan_link": worksheet.lesson_plan_link, - "slides_link": worksheet.slides_link, - "student_worksheet_link": worksheet.student_worksheet_link, - "indy_worksheet_link": worksheet.indy_worksheet_link, - "video_link": worksheet.video_link, - } - for worksheet in Worksheet.objects.filter(episode=episode["id"]).order_by("-before_level") - ], + def worksheet_to_dict(index, worksheet): + return { + "id": worksheet.id, + "index": index, + "before_level": worksheet.before_level_id, + "lesson_plan_link": worksheet.lesson_plan_link, + "slides_link": worksheet.slides_link, + "student_worksheet_link": worksheet.student_worksheet_link, + "indy_worksheet_link": worksheet.indy_worksheet_link, + "video_link": worksheet.video_link, + } + + episodes = [] + for episode in data: + worksheets = [ + worksheet_to_dict(index, worksheet) + for index, worksheet in enumerate( + Worksheet.objects.filter( + episode=episode["id"], + before_level__isnull=False, + ).order_by("before_level"), + start=1, + ) + ] + + worksheets += [ + worksheet_to_dict(index, worksheet) + for index, worksheet in enumerate( + Worksheet.objects.filter( + episode=episode["id"], + before_level__isnull=True, + ), + start=1 + len(worksheets), + ) + ] + + episodes.append( + dict( + episode, + name=messages.get_episode_title(episode["id"]), + levels=[ + dict(level, title=get_level_title(level["name"])) + for level in episode["levels"] + ], + worksheets=worksheets, + ) ) - for episode in data - ] + + return episodes def get_level_title(i):