rapid-router 5.18.0__py2.py3-none-any.whl → 7.6.8__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. example_project/rapid_router_test_settings.py +19 -7
  2. example_project/settings.py +21 -8
  3. example_project/urls.py +5 -6
  4. game/__init__.py +1 -1
  5. game/admin.py +7 -2
  6. game/character.py +8 -0
  7. game/decor.py +40 -0
  8. game/end_to_end_tests/base_game_test.py +34 -27
  9. game/end_to_end_tests/editor_page.py +15 -0
  10. game/end_to_end_tests/game_page.py +88 -20
  11. game/end_to_end_tests/selenium_test_case.py +1 -20
  12. game/end_to_end_tests/test_cow_crashes.py +3 -5
  13. game/end_to_end_tests/test_level_editor.py +273 -10
  14. game/end_to_end_tests/test_level_selection.py +25 -3
  15. game/end_to_end_tests/test_play_through.py +222 -127
  16. game/end_to_end_tests/test_python_levels.py +41 -7
  17. game/end_to_end_tests/test_saving_workspace.py +2 -1
  18. game/forms.py +7 -1
  19. game/level_management.py +26 -11
  20. game/messages.py +899 -337
  21. game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
  22. game/migrations/0026_levels_pt2.py +13 -2
  23. game/migrations/0032_cannot_turn_left_level.py +13 -2
  24. game/migrations/0033_recursion_level.py +13 -2
  25. game/migrations/0034_joes_level.py +13 -2
  26. game/migrations/0035_disable_route_score_level_70.py +0 -2
  27. game/migrations/0036_level_score_73.py +0 -2
  28. game/migrations/0037_level_score_79.py +0 -2
  29. game/migrations/0038_level_score_40.py +0 -1
  30. game/migrations/0042_level_score_73.py +0 -2
  31. game/migrations/0048_add_cow_field_and_blocks.py +0 -2
  32. game/migrations/0049_level_score_34.py +0 -2
  33. game/migrations/0050_level_score_40.py +0 -2
  34. game/migrations/0051_level_score_49.py +0 -1
  35. game/migrations/0086_loop_levels.py +13 -2
  36. game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
  37. game/migrations/0093_alter_level_character_name.py +18 -0
  38. game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
  39. game/migrations/0095_level_commands.py +18 -0
  40. game/migrations/0096_alter_level_commands.py +18 -0
  41. game/migrations/0097_add_python_den_levels.py +1515 -0
  42. game/migrations/0098_add_episode_link_fields.py +44 -0
  43. game/migrations/0099_python_episodes_links.py +103 -0
  44. game/migrations/0100_reorder_python_levels.py +179 -0
  45. game/migrations/0101_rename_episodes.py +45 -0
  46. game/migrations/0102_reoder_episodes_13_14.py +136 -0
  47. game/migrations/0103_level_1015_solution.py +26 -0
  48. game/migrations/0104_remove_level_direct_drive.py +17 -0
  49. game/migrations/0105_delete_invalid_attempts.py +18 -0
  50. game/migrations/0106_fields_to_snake_case.py +48 -0
  51. game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
  52. game/migrations/0108_episode_indy_worksheet_link.py +18 -0
  53. game/migrations/0109_create_episodes_23_and_24.py +99 -0
  54. game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
  55. game/migrations/0111_create_worksheets.py +149 -0
  56. game/migrations/0112_worksheet_locked_classes.py +21 -0
  57. game/migrations/0113_level_needs_approval.py +18 -0
  58. game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
  59. game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
  60. game/migrations/0116_update_worksheet_video_links.py +68 -0
  61. game/migrations/0117_update_solutions_to_if_else.py +61 -0
  62. game/models.py +127 -17
  63. game/permissions.py +51 -19
  64. game/python_den_urls.py +26 -0
  65. game/random_road.py +9 -9
  66. game/serializers.py +12 -17
  67. game/static/django_reverse_js/js/reverse.js +171 -0
  68. game/static/game/css/LilitaOne-Regular.ttf +0 -0
  69. game/static/game/css/backgrounds.css +8 -12
  70. game/static/game/css/dataTables.custom.css +3 -2
  71. game/static/game/css/editor.css +47 -0
  72. game/static/game/css/game.css +37 -43
  73. game/static/game/css/game_screen.css +16 -0
  74. game/static/game/css/level_editor.css +5 -0
  75. game/static/game/css/level_selection.css +17 -2
  76. game/static/game/image/Python_Den_hero_student.png +0 -0
  77. game/static/game/image/Python_levels_page.svg +1954 -0
  78. game/static/game/image/characters/front_view/Electric_van.svg +448 -0
  79. game/static/game/image/characters/top_view/Electric_van.svg +448 -0
  80. game/static/game/image/decor/city/solar_panel.svg +1200 -0
  81. game/static/game/image/decor/farm/solar_panel.svg +86 -0
  82. game/static/game/image/decor/grass/solar_panel.svg +86 -0
  83. game/static/game/image/decor/snow/solar_panel.svg +173 -0
  84. game/static/game/image/electric_van.svg +448 -0
  85. game/static/game/image/icons/description.svg +1 -0
  86. game/static/game/image/icons/hint.svg +1 -0
  87. game/static/game/image/icons/python.svg +1 -1
  88. game/static/game/image/pigeon.svg +684 -0
  89. game/static/game/image/python_den_header.svg +19 -0
  90. game/static/game/js/animation.js +65 -24
  91. game/static/game/js/blockly/msg/js/bg.js +52 -1
  92. game/static/game/js/blockly/msg/js/ca.js +52 -1
  93. game/static/game/js/blockly/msg/js/en-gb.js +2 -0
  94. game/static/game/js/blockly/msg/js/en.js +2 -0
  95. game/static/game/js/blockly/msg/js/es.js +52 -1
  96. game/static/game/js/blockly/msg/js/fr.js +2 -0
  97. game/static/game/js/blockly/msg/js/hi.js +2 -0
  98. game/static/game/js/blockly/msg/js/it.js +52 -1
  99. game/static/game/js/blockly/msg/js/pl.js +52 -1
  100. game/static/game/js/blockly/msg/js/pt-br.js +52 -1
  101. game/static/game/js/blockly/msg/js/ru.js +52 -1
  102. game/static/game/js/blockly/msg/js/ur.js +52 -1
  103. game/static/game/js/blocklyCustomBlocks.js +93 -52
  104. game/static/game/js/button.js +12 -0
  105. game/static/game/js/cow.js +11 -7
  106. game/static/game/js/drawing.js +68 -29
  107. game/static/game/js/editor.js +23 -0
  108. game/static/game/js/game.js +74 -110
  109. game/static/game/js/level_editor.js +646 -274
  110. game/static/game/js/level_moderation.js +33 -2
  111. game/static/game/js/level_selection.js +1 -1
  112. game/static/game/js/loadLanguages.js +2 -2
  113. game/static/game/js/model.js +32 -2
  114. game/static/game/js/pythonControl.js +14 -1
  115. game/static/game/js/scoreboard.js +0 -37
  116. game/static/game/js/scoreboardSharedLevels.js +48 -0
  117. game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
  118. game/static/game/js/sound.js +52 -5
  119. game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
  120. game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
  121. game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
  122. game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
  123. game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
  124. game/static/game/raphael_image/pigeon.svg +685 -0
  125. game/static/game/sass/game.scss +2 -2
  126. game/static/game/sound/clown_horn.mp3 +0 -0
  127. game/static/game/sound/clown_horn.ogg +0 -0
  128. game/static/game/sound/electric_van_starting.mp3 +0 -0
  129. game/static/game/sound/electric_van_starting.ogg +0 -0
  130. game/static/game/sound/pigeon.mp3 +0 -0
  131. game/static/game/sound/pigeon.ogg +0 -0
  132. game/static/game/sound/sleigh_bells.mp3 +0 -0
  133. game/static/game/sound/sleigh_bells.ogg +0 -0
  134. game/static/game/sound/sleigh_crash.mp3 +0 -0
  135. game/static/game/sound/sleigh_crash.ogg +0 -0
  136. game/templates/game/base.html +34 -14
  137. game/templates/game/basenonav.html +11 -5
  138. game/templates/game/game.html +142 -38
  139. game/templates/game/level_editor.html +340 -236
  140. game/templates/game/level_moderation.html +19 -6
  141. game/templates/game/level_selection.html +18 -110
  142. game/templates/game/python_den_level_selection.html +291 -0
  143. game/templates/game/python_den_worksheet.html +101 -0
  144. game/templates/game/scoreboard.html +83 -64
  145. game/tests/test_level_editor.py +94 -26
  146. game/tests/test_level_selection.py +149 -46
  147. game/tests/test_python_den_worksheet.py +85 -0
  148. game/tests/test_scoreboard.py +34 -7
  149. game/tests/utils/level.py +32 -26
  150. game/theme.py +5 -5
  151. game/urls.py +199 -61
  152. game/views/language_code_conversions.py +86 -86
  153. game/views/level.py +155 -63
  154. game/views/level_editor.py +88 -55
  155. game/views/level_moderation.py +23 -0
  156. game/views/level_selection.py +116 -47
  157. game/views/level_solutions.py +491 -106
  158. game/views/scoreboard.py +76 -51
  159. game/views/worksheet.py +25 -0
  160. rapid_router-7.6.8.dist-info/METADATA +174 -0
  161. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/RECORD +164 -104
  162. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
  163. example_project/manage.py +0 -10
  164. game/static/game/image/actions/go.svg +0 -18
  165. game/static/game/js/js-reverse.js +0 -14
  166. game/static/game/js/pqselect.min.js +0 -9
  167. game/static/game/js/widget-scroller.js +0 -906
  168. rapid_router-5.18.0.dist-info/METADATA +0 -17
  169. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info/licenses}/LICENSE.md +0 -0
  170. {rapid_router-5.18.0.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
game/urls.py CHANGED
@@ -1,6 +1,6 @@
1
- from django.conf.urls import url, include
1
+ from django.urls import include, path, re_path
2
2
  from django.views.i18n import JavaScriptCatalog
3
- from django_js_reverse.views import urls_js
3
+ from django_reverse_js.views import urls_js
4
4
 
5
5
  from game.views.api import (
6
6
  level_list,
@@ -50,97 +50,235 @@ from game.views.level_editor import (
50
50
  owned_levels,
51
51
  shared_levels,
52
52
  )
53
- from game.views.level_moderation import level_moderation
54
- from game.views.level_selection import levels, random_level_for_episode
55
- from game.views.scoreboard import scoreboard
53
+ from game.views.level_moderation import level_moderation, approve_level
54
+ from game.views.level_selection import blockly_levels, random_level_for_episode
55
+ from game.views.scoreboard import blockly_scoreboard
56
56
 
57
57
  urlpatterns = [
58
- url(r"^$", levels, name="levels"),
59
- url(r"^submit/$", submit_attempt, name="submit_attempt"),
60
- url(r"^(?P<levelName>[A-Z0-9]+)/$", play_default_level, name="play_default_level"),
61
- url(r"^custom/(?P<levelId>[0-9]+)/$", play_custom_level, name="play_custom_level"),
62
- url(r"^episode/(?P<episodeId>[0-9]+)/$", start_episode, name="start_episode"),
63
- url(r"^levels/random/([0-9]+)/$", random_level_for_episode, name="random_level_for_episode"),
64
- url(r"^scoreboard/$", scoreboard, name="scoreboard"),
65
- url(
58
+ re_path(r"^$", blockly_levels, name="levels"),
59
+ re_path(r"^submit/$", submit_attempt, name="submit_attempt"),
60
+ re_path(
61
+ r"^(?P<level_name>[A-Z0-9]+)/$",
62
+ play_default_level,
63
+ name="play_default_level",
64
+ ),
65
+ re_path(
66
+ r"^custom/(?P<levelId>[0-9]+)/$",
67
+ play_custom_level,
68
+ name="play_custom_level",
69
+ ),
70
+ re_path(
71
+ r"^episode/(?P<episodeId>[0-9]+)/$", start_episode, name="start_episode"
72
+ ),
73
+ re_path(
74
+ r"^levels/random/([0-9]+)/$",
75
+ random_level_for_episode,
76
+ name="random_level_for_episode",
77
+ ),
78
+ re_path(r"^scoreboard/$", blockly_scoreboard, name="scoreboard"),
79
+ re_path(
66
80
  r"^workspace/",
67
81
  include(
68
82
  [
69
- url(r"^load/(?P<workspaceID>[0-9]+)/$", load_workspace, name="load_workspace"),
70
- url(r"^load_list/$", load_list_of_workspaces, name="load_list_of_workspaces"),
71
- url(r"^save/$", save_workspace, name="save_workspace"),
72
- url(r"^save/(?P<workspaceID>[0-9]+)/$", save_workspace, name="save_workspace"),
73
- url(r"^delete/(?P<workspaceID>[0-9]+)/$", delete_workspace, name="delete_workspace"),
74
- url(r"^solution/(?P<level_name>[0-9]+)/$", load_workspace_solution, name="load_workspace_solution"),
83
+ re_path(
84
+ r"^load/(?P<workspaceID>[0-9]+)/$",
85
+ load_workspace,
86
+ name="load_workspace",
87
+ ),
88
+ re_path(
89
+ r"^load_list/$",
90
+ load_list_of_workspaces,
91
+ name="load_list_of_workspaces",
92
+ ),
93
+ re_path(r"^save/$", save_workspace, name="save_workspace"),
94
+ re_path(
95
+ r"^save/(?P<workspaceID>[0-9]+)/$",
96
+ save_workspace,
97
+ name="save_workspace",
98
+ ),
99
+ re_path(
100
+ r"^delete/(?P<workspaceID>[0-9]+)/$",
101
+ delete_workspace,
102
+ name="delete_workspace",
103
+ ),
104
+ re_path(
105
+ r"^solution/(?P<level_name>[0-9]+)/$",
106
+ load_workspace_solution,
107
+ name="load_workspace_solution",
108
+ ),
75
109
  ]
76
110
  ),
77
111
  ),
78
- url(
112
+ re_path(
79
113
  r"^level_moderation/",
80
114
  include(
81
115
  [
82
- url(r"^$", level_moderation, name="level_moderation"),
83
- url(r"^delete/(?P<levelID>[0-9]+)/$", delete_level, name="delete_level"),
116
+ re_path(r"^$", level_moderation, name="level_moderation"),
117
+ re_path(
118
+ r"^delete/(?P<levelID>[0-9]+)/$",
119
+ delete_level,
120
+ name="delete_level",
121
+ ),
122
+ re_path(
123
+ r"^approve/(?P<levelID>[0-9]+)/$",
124
+ approve_level,
125
+ name="approve_level",
126
+ ),
84
127
  ]
85
128
  ),
86
129
  ),
87
- url(
130
+ re_path(
88
131
  r"^level_editor/",
89
132
  include(
90
133
  [
91
- url(r"^$", level_editor, name="level_editor"),
92
- url(r"^(?P<levelId>[0-9]+)/$", level_editor, name="level_editor_chosen_level"),
93
- url(r"^play_anonymous/(?P<levelId>[0-9]+)/$", play_anonymous_level, name="play_anonymous_level"),
94
- url(
134
+ re_path(r"^$", level_editor, name="level_editor"),
135
+ re_path(
136
+ r"^(?P<levelId>[0-9]+)/$",
137
+ level_editor,
138
+ name="level_editor_chosen_level",
139
+ ),
140
+ re_path(
141
+ r"^play_anonymous/(?P<levelId>[0-9]+)/$",
142
+ play_anonymous_level,
143
+ name="play_anonymous_level",
144
+ ),
145
+ re_path(
95
146
  r"^play_custom/(?P<levelId>[0-9]+)/$",
96
147
  play_custom_level_from_editor,
97
148
  name="play_custom_level_from_editor",
98
149
  ),
99
- url(r"^get/(?P<levelID>[0-9]+)/$", load_level_for_editor, name="load_level_for_editor"),
100
- url(r"^delete/(?P<levelId>[0-9]+)/$", delete_level_for_editor, name="delete_level_for_editor"),
101
- url(r"^save/$", save_level_for_editor, name="save_level_for_editor"),
102
- url(r"^save/(?P<levelId>[0-9]+)/$", save_level_for_editor, name="save_level_for_editor"),
103
- url(r"^random/$", generate_random_map_for_editor, name="generate_random_map_for_editor"),
104
- url(
150
+ re_path(
151
+ r"^get/(?P<levelID>[0-9]+)/$",
152
+ load_level_for_editor,
153
+ name="load_level_for_editor",
154
+ ),
155
+ re_path(
156
+ r"^delete/(?P<levelId>[0-9]+)/$",
157
+ delete_level_for_editor,
158
+ name="delete_level_for_editor",
159
+ ),
160
+ re_path(
161
+ r"^save/$",
162
+ save_level_for_editor,
163
+ name="save_level_for_editor",
164
+ ),
165
+ re_path(
166
+ r"^save/(?P<levelId>[0-9]+)/$",
167
+ save_level_for_editor,
168
+ name="save_level_for_editor",
169
+ ),
170
+ re_path(
171
+ r"^random/$",
172
+ generate_random_map_for_editor,
173
+ name="generate_random_map_for_editor",
174
+ ),
175
+ re_path(
105
176
  r"^get_sharing_information/(?P<levelID>[0-9]+)/$",
106
177
  SharingInformationForEditor.as_view(),
107
178
  name="get_sharing_information_for_editor",
108
179
  ),
109
- url(r"^share/(?P<levelID>[0-9]+)/$", ShareLevelView.as_view(), name="share_level_for_editor"),
110
- url(r"^levels/owned/$", owned_levels, name="owned_levels"),
111
- url(r"^levels/shared/$", shared_levels, name="shared_levels"),
180
+ re_path(
181
+ r"^share/(?P<levelID>[0-9]+)/$",
182
+ ShareLevelView.as_view(),
183
+ name="share_level_for_editor",
184
+ ),
185
+ re_path(r"^levels/owned/$", owned_levels, name="owned_levels"),
186
+ re_path(
187
+ r"^levels/shared/$", shared_levels, name="shared_levels"
188
+ ),
112
189
  ]
113
190
  ),
114
191
  ),
115
- url(r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")),
116
- url(
192
+ re_path(
193
+ r"^api-auth/",
194
+ include("rest_framework.urls", namespace="rest_framework"),
195
+ ),
196
+ re_path(
117
197
  r"^api/",
118
198
  include(
119
199
  [
120
- url(r"^$", api_root),
121
- url(r"^blocks/$", block_list, name="block-list"),
122
- url(r"^blocks/(?P<pk>[0-9]+)/$", block_detail, name="block-detail"),
123
- url(r"^characters/$", character_list, name="character-list"),
124
- url(r"^characters/(?P<pk>[0-9]+)/$", character_detail, name="character-detail"),
125
- url(r"^decors/$", decor_list, name="decor-list"),
126
- url(r"^decors/(?P<pk>[0-9]+)/$", decor_detail, name="decor-detail"),
127
- url(r"^episodes/$", episode_list, name="episode-list"),
128
- url(r"^episodes/(?P<pk>[0-9]+)/$", episode_detail, name="episode-detail"),
129
- url(r"^episodes/(?P<pk>[0-9]+)/levels/$", level_for_episode, name="level-for-episode"),
130
- url(r"^levels/$", level_list, name="level-list"),
131
- url(r"^levels/(?P<pk>[0-9]+)/$", level_detail, name="level-detail"),
132
- url(r"^levels/(?P<pk>[0-9]+)/blocks/$", levelblock_for_level, name="levelblock-for-level"),
133
- url(r"^levels/(?P<pk>[0-9]+)/decors/$", leveldecor_for_level, name="leveldecor-for-level"),
134
- url(r"^levels/(?P<pk>[0-9]+)/map/$", map_for_level, name="map-for-level"),
135
- url(r"^levels/(?P<pk>[0-9]+)/mode/$", mode_for_level, name="mode-for-level"),
136
- url(r"^levelblocks/(?P<pk>[0-9]+)/$", levelblock_detail, name="levelblock-detail"),
137
- url(r"^leveldecors/(?P<pk>[0-9]+)/$", leveldecor_detail, name="leveldecor-detail"),
138
- url(r"^maps/$", map_list, name="map-list"),
139
- url(r"^themes/$", theme_list, name="theme-list"),
140
- url(r"^themes/(?P<pk>[0-9]+)/$", theme_detail, name="theme-detail"),
200
+ re_path(r"^$", api_root),
201
+ re_path(r"^blocks/$", block_list, name="block-list"),
202
+ re_path(
203
+ r"^blocks/(?P<pk>[0-9]+)/$",
204
+ block_detail,
205
+ name="block-detail",
206
+ ),
207
+ re_path(
208
+ r"^characters/$", character_list, name="character-list"
209
+ ),
210
+ re_path(
211
+ r"^characters/(?P<pk>[0-9]+)/$",
212
+ character_detail,
213
+ name="character-detail",
214
+ ),
215
+ re_path(r"^decors/$", decor_list, name="decor-list"),
216
+ re_path(
217
+ r"^decors/(?P<pk>[0-9]+)/$",
218
+ decor_detail,
219
+ name="decor-detail",
220
+ ),
221
+ re_path(r"^episodes/$", episode_list, name="episode-list"),
222
+ re_path(
223
+ r"^episodes/(?P<pk>[0-9]+)/$",
224
+ episode_detail,
225
+ name="episode-detail",
226
+ ),
227
+ re_path(
228
+ r"^episodes/(?P<pk>[0-9]+)/levels/$",
229
+ level_for_episode,
230
+ name="level-for-episode",
231
+ ),
232
+ re_path(r"^levels/$", level_list, name="level-list"),
233
+ re_path(
234
+ r"^levels/(?P<pk>[0-9]+)/$",
235
+ level_detail,
236
+ name="level-detail",
237
+ ),
238
+ re_path(
239
+ r"^levels/(?P<pk>[0-9]+)/blocks/$",
240
+ levelblock_for_level,
241
+ name="levelblock-for-level",
242
+ ),
243
+ re_path(
244
+ r"^levels/(?P<pk>[0-9]+)/decors/$",
245
+ leveldecor_for_level,
246
+ name="leveldecor-for-level",
247
+ ),
248
+ re_path(
249
+ r"^levels/(?P<pk>[0-9]+)/map/$",
250
+ map_for_level,
251
+ name="map-for-level",
252
+ ),
253
+ re_path(
254
+ r"^levels/(?P<pk>[0-9]+)/mode/$",
255
+ mode_for_level,
256
+ name="mode-for-level",
257
+ ),
258
+ re_path(
259
+ r"^levelblocks/(?P<pk>[0-9]+)/$",
260
+ levelblock_detail,
261
+ name="levelblock-detail",
262
+ ),
263
+ re_path(
264
+ r"^leveldecors/(?P<pk>[0-9]+)/$",
265
+ leveldecor_detail,
266
+ name="leveldecor-detail",
267
+ ),
268
+ re_path(r"^maps/$", map_list, name="map-list"),
269
+ re_path(r"^themes/$", theme_list, name="theme-list"),
270
+ re_path(
271
+ r"^themes/(?P<pk>[0-9]+)/$",
272
+ theme_detail,
273
+ name="theme-detail",
274
+ ),
141
275
  ]
142
276
  ),
143
277
  ),
144
- url(r"^js-reverse/$", urls_js, name="js-reverse"),
145
- url(r"^js-i18n/$", JavaScriptCatalog.as_view(packages=["game"]), name="rapid-router/javascript-catalog"),
278
+ path("reverse.js", urls_js, name="js-reverse"),
279
+ re_path(
280
+ r"^js-i18n/$",
281
+ JavaScriptCatalog.as_view(packages=["game"]),
282
+ name="rapid-router/javascript-catalog",
283
+ ),
146
284
  ]
@@ -2,89 +2,89 @@
2
2
  # although all these languages have built-in translations for the generic blocks
3
3
 
4
4
  language_code_dict = {
5
- # "ab": "аҧсуа бызшәа",
6
- # "ar": "العربية",
7
- # "az": "azərbaycan",
8
- # "ba": "Башҡорт теле",
9
- # "bcc": "بلۏچی",
10
- # "be": "беларуская",
11
- # "be-tarask": "тарашкевіца",
12
- # "bg": "български",
13
- # "bn": "বাংলা",
14
- # "br": "Brezhoneg",
15
- # "ca": "Català",
16
- # "cs": "čeština",
17
- # "da": "Dansk",
18
- # "de": "Deutsch",
19
- # "diq": "Zazakî",
20
- # "dty": "डोटेली",
21
- # "el": "Ελληνικά",
22
- "en": "English",
23
- "en-gb": "English (UK)",
24
- # "eo": "Esperanto",
25
- # "es": "Español",
26
- # "et": "Eesti",
27
- # "eu": "Euskara",
28
- # "fa": "فارسی",
29
- # "fi": "Suomi",
30
- "fr": "Français",
31
- # "gl": "Galego",
32
- # "gor": "Hulontalo",
33
- # "ha": "Hausa",
34
- # "he": "עברית",
35
- "hi": "हिन्दी",
36
- # "hrx": "Hunsrik",
37
- # "hu": "Magyar",
38
- # "hy": "հայերեն",
39
- # "ia": "Interlingua",
40
- # "id": "Bahasa Indonesia",
41
- # "ig": "Igbo",
42
- # "is": "íslenska",
43
- # "it": "Italiano",
44
- # "ja": "日本語",
45
- # "kab": "Taqbaylit",
46
- # "ko": "한국어",
47
- # "lb": "Lëtzebuergesch",
48
- # "lki": "له‌کی",
49
- # "lo": "ລາວ",
50
- # "lrc": "لۊری شومالی",
51
- # "lt": "Lietuvių",
52
- # "lv": "Latviešu",
53
- # "mk": "македонски",
54
- # "mnw": "ဘာသာမန်",
55
- # "ms": "Bahasa Malaysia",
56
- # "nb": "Norsk bokmål",
57
- # "nl": "Nederlands",
58
- # "oc": "Occitan",
59
- # "pl": "Polski",
60
- # "pms": "Piemontèis",
61
- # "pt": "Português",
62
- # "pt-br": "Português (Brasil)",
63
- # "ro": "Română",
64
- # "ru": "русский",
65
- # "sc": "Sardu",
66
- # "sd": "سنڌي",
67
- # "shn": "လိၵ်ႈတႆး",
68
- # "sk": "Slovenčina",
69
- # "skr-arab": "سرائیکی",
70
- # "sl": "Slovenščina",
71
- # "sq": "Shqip",
72
- # "sr": "српски",
73
- # "sr-latn": "Srpski",
74
- # "sv": "Svenska",
75
- # "ta": "தமிழ்",
76
- # "tcy": "ತುಳು",
77
- # "te": "తెలుగు",
78
- # "th": "ไทย",
79
- # "tl": "Tagalog",
80
- # "tlh": "tlhIngan Hol",
81
- # "tr": "Türkçe",
82
- # "ug-arab": " ئۇيغۇرچە",
83
- # "uk": "українська",
84
- # "ur": "اردو",
85
- # "vi": "Tiếng Việt",
86
- # "xmf": "მარგალური ნინა",
87
- # "yo": "Èdè Yorùbá",
88
- # "zh-hans": "简体中文",
89
- # "zh-hant": "繁體中文"
90
- }
5
+ # "ab": "аҧсуа бызшәа",
6
+ # "ar": "العربية",
7
+ # "az": "azərbaycan",
8
+ # "ba": "Башҡорт теле",
9
+ # "bcc": "بلۏچی",
10
+ # "be": "беларуская",
11
+ # "be-tarask": "тарашкевіца",
12
+ "bg": "български",
13
+ # "bn": "বাংলা",
14
+ # "br": "Brezhoneg",
15
+ "ca": "Català",
16
+ # "cs": "čeština",
17
+ # "da": "Dansk",
18
+ # "de": "Deutsch",
19
+ # "diq": "Zazakî",
20
+ # "dty": "डोटेली",
21
+ # "el": "Ελληνικά",
22
+ "en": "English",
23
+ "en-gb": "English (UK)",
24
+ # "eo": "Esperanto",
25
+ "es": "Español",
26
+ # "et": "Eesti",
27
+ # "eu": "Euskara",
28
+ # "fa": "فارسی",
29
+ # "fi": "Suomi",
30
+ "fr": "Français",
31
+ # "gl": "Galego",
32
+ # "gor": "Hulontalo",
33
+ # "ha": "Hausa",
34
+ # "he": "עברית",
35
+ "hi": "हिन्दी",
36
+ # "hrx": "Hunsrik",
37
+ # "hu": "Magyar",
38
+ # "hy": "հայերեն",
39
+ # "ia": "Interlingua",
40
+ # "id": "Bahasa Indonesia",
41
+ # "ig": "Igbo",
42
+ # "is": "íslenska",
43
+ # "it": "Italiano",
44
+ # "ja": "日本語",
45
+ # "kab": "Taqbaylit",
46
+ # "ko": "한국어",
47
+ # "lb": "Lëtzebuergesch",
48
+ # "lki": "له‌کی",
49
+ # "lo": "ລາວ",
50
+ # "lrc": "لۊری شومالی",
51
+ # "lt": "Lietuvių",
52
+ # "lv": "Latviešu",
53
+ # "mk": "македонски",
54
+ # "mnw": "ဘာသာမန်",
55
+ # "ms": "Bahasa Malaysia",
56
+ # "nb": "Norsk bokmål",
57
+ # "nl": "Nederlands",
58
+ # "oc": "Occitan",
59
+ "pl": "Polski",
60
+ # "pms": "Piemontèis",
61
+ # "pt": "Português",
62
+ "pt-br": "Português (Brasil)",
63
+ # "ro": "Română",
64
+ "ru": "русский",
65
+ # "sc": "Sardu",
66
+ # "sd": "سنڌي",
67
+ # "shn": "လိၵ်ႈတႆး",
68
+ # "sk": "Slovenčina",
69
+ # "skr-arab": "سرائیکی",
70
+ # "sl": "Slovenščina",
71
+ # "sq": "Shqip",
72
+ # "sr": "српски",
73
+ # "sr-latn": "Srpski",
74
+ # "sv": "Svenska",
75
+ # "ta": "தமிழ்",
76
+ # "tcy": "ತುಳು",
77
+ # "te": "తెలుగు",
78
+ # "th": "ไทย",
79
+ # "tl": "Tagalog",
80
+ # "tlh": "tlhIngan Hol",
81
+ # "tr": "Türkçe",
82
+ # "ug-arab": " ئۇيغۇرچە",
83
+ # "uk": "українська",
84
+ # "ur": "اردو",
85
+ # "vi": "Tiếng Việt",
86
+ # "xmf": "მარგალური ნინა",
87
+ # "yo": "Èdè Yorùbá",
88
+ # "zh-hans": "简体中文",
89
+ # "zh-hant": "繁體中文"
90
+ }