rapid-router 5.4.1__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 (354) hide show
  1. example_project/rapid_router_test_settings.py +164 -0
  2. example_project/settings.py +152 -0
  3. example_project/urls.py +15 -0
  4. example_project/{example_project/wsgi.py → wsgi.py} +2 -1
  5. game/__init__.py +1 -1
  6. game/admin.py +43 -4
  7. game/app_settings.py +3 -7
  8. game/character.py +26 -18
  9. game/decor.py +172 -97
  10. game/end_to_end_tests/base_game_test.py +44 -33
  11. game/end_to_end_tests/editor_page.py +17 -2
  12. game/end_to_end_tests/game_page.py +127 -45
  13. game/end_to_end_tests/selenium_test_case.py +1 -20
  14. game/end_to_end_tests/test_cow_crashes.py +3 -5
  15. game/end_to_end_tests/test_language_dropdown.py +14 -0
  16. game/end_to_end_tests/test_level_editor.py +290 -0
  17. game/end_to_end_tests/test_level_failures.py +1 -1
  18. game/end_to_end_tests/test_level_selection.py +79 -0
  19. game/end_to_end_tests/test_play_through.py +240 -102
  20. game/end_to_end_tests/test_python_levels.py +44 -13
  21. game/end_to_end_tests/test_saving_workspace.py +22 -0
  22. game/forms.py +9 -2
  23. game/level_management.py +38 -29
  24. game/messages.py +1218 -203
  25. game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
  26. game/migrations/0026_levels_pt2.py +13 -2
  27. game/migrations/0032_cannot_turn_left_level.py +13 -2
  28. game/migrations/0033_recursion_level.py +13 -2
  29. game/migrations/0034_joes_level.py +13 -2
  30. game/migrations/0035_disable_route_score_level_70.py +0 -2
  31. game/migrations/0036_level_score_73.py +0 -2
  32. game/migrations/0037_level_score_79.py +0 -2
  33. game/migrations/0038_level_score_40.py +0 -1
  34. game/migrations/0042_level_score_73.py +0 -2
  35. game/migrations/0048_add_cow_field_and_blocks.py +0 -2
  36. game/migrations/0049_level_score_34.py +0 -2
  37. game/migrations/0050_level_score_40.py +0 -2
  38. game/migrations/0051_level_score_49.py +0 -1
  39. game/migrations/0076_level_locked_for_class.py +19 -0
  40. game/migrations/0077_alter_level_next_level.py +52 -0
  41. game/migrations/0078_add_block_types.py +23 -0
  42. game/migrations/0079_populate_block_type_add_cow_blocks.py +60 -0
  43. game/migrations/0080_level_disable_algorithm_score.py +18 -0
  44. game/migrations/0081_first_12_levels_no_algo_score.py +29 -0
  45. game/migrations/0082_level_43_solution.py +16 -0
  46. game/migrations/0083_add_cows_to_existing_levels.py +195 -0
  47. game/migrations/0084_alter_block_block_type.py +18 -0
  48. game/migrations/0085_add_new_blocks.py +53 -0
  49. game/migrations/0086_loop_levels.py +482 -0
  50. game/migrations/0087_workspace_python_view_enabled.py +18 -0
  51. game/migrations/0088_rename_episodes.py +35 -0
  52. game/migrations/0089_episodes_in_development.py +30 -0
  53. game/migrations/0090_add_missing_model_solutions.py +144 -0
  54. game/migrations/0091_disable_algo_score_if_no_model_solution.py +46 -0
  55. game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
  56. game/migrations/0093_alter_level_character_name.py +18 -0
  57. game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
  58. game/migrations/0095_level_commands.py +18 -0
  59. game/migrations/0096_alter_level_commands.py +18 -0
  60. game/migrations/0097_add_python_den_levels.py +1515 -0
  61. game/migrations/0098_add_episode_link_fields.py +44 -0
  62. game/migrations/0099_python_episodes_links.py +103 -0
  63. game/migrations/0100_reorder_python_levels.py +179 -0
  64. game/migrations/0101_rename_episodes.py +45 -0
  65. game/migrations/0102_reoder_episodes_13_14.py +136 -0
  66. game/migrations/0103_level_1015_solution.py +26 -0
  67. game/migrations/0104_remove_level_direct_drive.py +17 -0
  68. game/migrations/0105_delete_invalid_attempts.py +18 -0
  69. game/migrations/0106_fields_to_snake_case.py +48 -0
  70. game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
  71. game/migrations/0108_episode_indy_worksheet_link.py +18 -0
  72. game/migrations/0109_create_episodes_23_and_24.py +99 -0
  73. game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
  74. game/migrations/0111_create_worksheets.py +149 -0
  75. game/migrations/0112_worksheet_locked_classes.py +21 -0
  76. game/migrations/0113_level_needs_approval.py +18 -0
  77. game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
  78. game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
  79. game/migrations/0116_update_worksheet_video_links.py +68 -0
  80. game/migrations/0117_update_solutions_to_if_else.py +61 -0
  81. game/models.py +157 -16
  82. game/permissions.py +34 -19
  83. game/python_den_urls.py +26 -0
  84. game/random_road.py +43 -127
  85. game/serializers.py +12 -17
  86. game/static/django_reverse_js/js/reverse.js +171 -0
  87. game/static/game/css/LilitaOne-Regular.ttf +0 -0
  88. game/static/game/css/backgrounds.css +14 -10
  89. game/static/game/css/dataTables.custom.css +4 -2
  90. game/static/game/css/dataTables.jqueryui.css +561 -320
  91. game/static/game/css/editor.css +47 -0
  92. game/static/game/css/game.css +43 -49
  93. game/static/game/css/game_screen.css +116 -53
  94. game/static/game/css/jquery.dataTables.css +455 -251
  95. game/static/game/css/level_editor.css +10 -1
  96. game/static/game/css/level_selection.css +32 -3
  97. game/static/game/css/level_share.css +6 -5
  98. game/static/game/css/skulpt/codemirror.css +1 -0
  99. game/static/game/image/Python_Den_hero_student.png +0 -0
  100. game/static/game/image/Python_levels_page.svg +1954 -0
  101. game/static/game/image/characters/front_view/Electric_van.svg +448 -0
  102. game/static/game/image/characters/top_view/Electric_van.svg +448 -0
  103. game/static/game/image/characters/top_view/Sleigh.svg +436 -0
  104. game/static/game/image/decor/city/solar_panel.svg +1200 -0
  105. game/static/game/image/decor/farm/solar_panel.svg +86 -0
  106. game/static/game/image/decor/grass/solar_panel.svg +86 -0
  107. game/static/game/image/decor/snow/barn.svg +1788 -0
  108. game/static/game/image/decor/snow/cfc.svg +1050 -147
  109. game/static/game/image/decor/snow/crops.svg +7370 -0
  110. game/static/game/image/decor/snow/hospital.svg +1220 -0
  111. game/static/game/image/decor/snow/house1.svg +971 -0
  112. game/static/game/image/decor/snow/house2.svg +1574 -0
  113. game/static/game/image/decor/snow/school.svg +1071 -0
  114. game/static/game/image/decor/snow/shop.svg +3211 -0
  115. game/static/game/image/decor/snow/solar_panel.svg +173 -0
  116. game/static/game/image/electric_van.svg +448 -0
  117. game/static/game/image/icons/add_house.svg +26 -0
  118. game/static/game/image/icons/delete_house.svg +26 -0
  119. game/static/game/image/icons/description.svg +1 -0
  120. game/static/game/image/icons/hint.svg +1 -0
  121. game/static/game/image/icons/if_else.svg +3 -0
  122. game/static/game/image/icons/python.svg +1 -1
  123. game/static/game/image/if_else_example.png +0 -0
  124. game/static/game/image/pigeon.svg +684 -0
  125. game/static/game/image/python_den_header.svg +19 -0
  126. game/static/game/js/animation.js +84 -28
  127. game/static/game/js/blockly/msg/js/bg.js +52 -1
  128. game/static/game/js/blockly/msg/js/ca.js +52 -1
  129. game/static/game/js/blockly/msg/js/en-gb.js +52 -1
  130. game/static/game/js/blockly/msg/js/en.js +52 -1
  131. game/static/game/js/blockly/msg/js/es.js +52 -1
  132. game/static/game/js/blockly/msg/js/fr.js +52 -1
  133. game/static/game/js/blockly/msg/js/hi.js +52 -1
  134. game/static/game/js/blockly/msg/js/it.js +52 -1
  135. game/static/game/js/blockly/msg/js/pl.js +52 -1
  136. game/static/game/js/blockly/msg/js/pt-br.js +52 -1
  137. game/static/game/js/blockly/msg/js/ru.js +52 -1
  138. game/static/game/js/blockly/msg/js/ur.js +52 -1
  139. game/static/game/js/blocklyCompiler.js +550 -392
  140. game/static/game/js/blocklyControl.js +335 -302
  141. game/static/game/js/blocklyCustomBlocks.js +691 -458
  142. game/static/game/js/blocklyCustomisations.js +3 -1
  143. game/static/game/js/button.js +12 -0
  144. game/static/game/js/cow.js +15 -130
  145. game/static/game/js/drawing.js +313 -201
  146. game/static/game/js/editor.js +23 -0
  147. game/static/game/js/game.js +148 -139
  148. game/static/game/js/jquery.dataTables.min.js +3 -159
  149. game/static/game/js/level_editor.js +823 -448
  150. game/static/game/js/level_moderation.js +33 -2
  151. game/static/game/js/level_selection.js +62 -25
  152. game/static/game/js/loadLanguages.js +21 -0
  153. game/static/game/js/map.js +106 -36
  154. game/static/game/js/model.js +55 -107
  155. game/static/game/js/pathFinder.js +73 -72
  156. game/static/game/js/program.js +184 -193
  157. game/static/game/js/pythonControl.js +14 -1
  158. game/static/game/js/scoreboard.js +0 -37
  159. game/static/game/js/scoreboardSharedLevels.js +48 -0
  160. game/static/game/js/sharing.js +22 -10
  161. game/static/game/js/skulpt/codemirror.js +5 -4
  162. game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
  163. game/static/game/js/sound.js +52 -5
  164. game/static/game/js/van.js +0 -7
  165. game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
  166. game/static/game/raphael_image/characters/top_view/Sleigh.svg +436 -0
  167. game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
  168. game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
  169. game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
  170. game/static/game/raphael_image/decor/snow/barn.svg +1788 -0
  171. game/static/game/raphael_image/decor/snow/cfc.svg +1050 -147
  172. game/static/game/raphael_image/decor/snow/crops.svg +7370 -0
  173. game/static/game/raphael_image/decor/snow/hospital.svg +1220 -0
  174. game/static/game/raphael_image/decor/snow/house1.svg +971 -0
  175. game/static/game/raphael_image/decor/snow/house2.svg +1574 -0
  176. game/static/game/raphael_image/decor/snow/school.svg +1071 -0
  177. game/static/game/raphael_image/decor/snow/shop.svg +3211 -0
  178. game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
  179. game/static/game/raphael_image/pigeon.svg +685 -0
  180. game/static/game/raphael_image/sleigh_wreckage.svg +430 -0
  181. game/static/game/sass/game.scss +22 -6
  182. game/static/game/sound/clown_horn.mp3 +0 -0
  183. game/static/game/sound/clown_horn.ogg +0 -0
  184. game/static/game/sound/electric_van_starting.mp3 +0 -0
  185. game/static/game/sound/electric_van_starting.ogg +0 -0
  186. game/static/game/sound/pigeon.mp3 +0 -0
  187. game/static/game/sound/pigeon.ogg +0 -0
  188. game/static/game/sound/sleigh_bells.mp3 +0 -0
  189. game/static/game/sound/sleigh_bells.ogg +0 -0
  190. game/static/game/sound/sleigh_crash.mp3 +0 -0
  191. game/static/game/sound/sleigh_crash.ogg +0 -0
  192. game/templates/game/base.html +35 -15
  193. game/templates/game/basenonav.html +23 -17
  194. game/templates/game/game.html +236 -111
  195. game/templates/game/level_editor.html +353 -275
  196. game/templates/game/level_moderation.html +19 -6
  197. game/templates/game/level_selection.html +75 -62
  198. game/templates/game/python_den_level_selection.html +291 -0
  199. game/templates/game/python_den_worksheet.html +101 -0
  200. game/templates/game/scoreboard.html +88 -65
  201. game/tests/test_level_editor.py +210 -35
  202. game/tests/test_level_moderation.py +6 -20
  203. game/tests/test_level_selection.py +332 -11
  204. game/tests/test_python_den_worksheet.py +85 -0
  205. game/tests/test_scoreboard.py +258 -66
  206. game/tests/utils/level.py +43 -3
  207. game/tests/utils/teacher.py +2 -2
  208. game/theme.py +21 -21
  209. game/urls.py +125 -78
  210. game/views/language_code_conversions.py +90 -0
  211. game/views/level.py +201 -63
  212. game/views/level_editor.py +109 -48
  213. game/views/level_moderation.py +29 -6
  214. game/views/level_selection.py +179 -56
  215. game/views/level_solutions.py +600 -106
  216. game/views/scoreboard.py +181 -66
  217. game/views/worksheet.py +25 -0
  218. rapid_router-7.6.8.dist-info/METADATA +174 -0
  219. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/RECORD +222 -242
  220. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
  221. rapid_router-7.6.8.dist-info/licenses/LICENSE.md +3 -0
  222. example_project/example_project/__init__.py +0 -1
  223. example_project/example_project/settings.py +0 -54
  224. example_project/example_project/urls.py +0 -16
  225. example_project/manage.py +0 -10
  226. game/autoconfig.py +0 -59
  227. game/csp_config.py +0 -23
  228. game/locale/ar_SA/LC_MESSAGES/django.mo +0 -0
  229. game/locale/ar_SA/LC_MESSAGES/django.po +0 -405
  230. game/locale/ar_SA/LC_MESSAGES/djangojs.mo +0 -0
  231. game/locale/ar_SA/LC_MESSAGES/djangojs.po +0 -743
  232. game/locale/bg_BG/LC_MESSAGES/django.mo +0 -0
  233. game/locale/bg_BG/LC_MESSAGES/django.po +0 -405
  234. game/locale/bg_BG/LC_MESSAGES/djangojs.mo +0 -0
  235. game/locale/bg_BG/LC_MESSAGES/djangojs.po +0 -739
  236. game/locale/ca_ES/LC_MESSAGES/django.mo +0 -0
  237. game/locale/ca_ES/LC_MESSAGES/django.po +0 -405
  238. game/locale/ca_ES/LC_MESSAGES/djangojs.mo +0 -0
  239. game/locale/ca_ES/LC_MESSAGES/djangojs.po +0 -740
  240. game/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  241. game/locale/cs_CZ/LC_MESSAGES/django.po +0 -405
  242. game/locale/cs_CZ/LC_MESSAGES/djangojs.mo +0 -0
  243. game/locale/cs_CZ/LC_MESSAGES/djangojs.po +0 -741
  244. game/locale/cy_GB/LC_MESSAGES/django.mo +0 -0
  245. game/locale/cy_GB/LC_MESSAGES/django.po +0 -405
  246. game/locale/cy_GB/LC_MESSAGES/djangojs.mo +0 -0
  247. game/locale/cy_GB/LC_MESSAGES/djangojs.po +0 -743
  248. game/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  249. game/locale/de_DE/LC_MESSAGES/django.po +0 -405
  250. game/locale/de_DE/LC_MESSAGES/djangojs.mo +0 -0
  251. game/locale/de_DE/LC_MESSAGES/djangojs.po +0 -739
  252. game/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  253. game/locale/el_GR/LC_MESSAGES/django.po +0 -405
  254. game/locale/el_GR/LC_MESSAGES/djangojs.mo +0 -0
  255. game/locale/el_GR/LC_MESSAGES/djangojs.po +0 -739
  256. game/locale/en_GB/LC_MESSAGES/django.mo +0 -0
  257. game/locale/en_GB/LC_MESSAGES/django.po +0 -405
  258. game/locale/en_GB/LC_MESSAGES/djangojs.mo +0 -0
  259. game/locale/en_GB/LC_MESSAGES/djangojs.po +0 -739
  260. game/locale/es_ES/LC_MESSAGES/django.mo +0 -0
  261. game/locale/es_ES/LC_MESSAGES/django.po +0 -405
  262. game/locale/es_ES/LC_MESSAGES/djangojs.mo +0 -0
  263. game/locale/es_ES/LC_MESSAGES/djangojs.po +0 -739
  264. game/locale/fi_FI/LC_MESSAGES/django.mo +0 -0
  265. game/locale/fi_FI/LC_MESSAGES/django.po +0 -405
  266. game/locale/fi_FI/LC_MESSAGES/djangojs.mo +0 -0
  267. game/locale/fi_FI/LC_MESSAGES/djangojs.po +0 -739
  268. game/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  269. game/locale/fr_FR/LC_MESSAGES/django.po +0 -405
  270. game/locale/fr_FR/LC_MESSAGES/djangojs.mo +0 -0
  271. game/locale/fr_FR/LC_MESSAGES/djangojs.po +0 -739
  272. game/locale/gu_IN/LC_MESSAGES/django.mo +0 -0
  273. game/locale/gu_IN/LC_MESSAGES/django.po +0 -405
  274. game/locale/gu_IN/LC_MESSAGES/djangojs.mo +0 -0
  275. game/locale/gu_IN/LC_MESSAGES/djangojs.po +0 -739
  276. game/locale/hi_IN/LC_MESSAGES/django.mo +0 -0
  277. game/locale/hi_IN/LC_MESSAGES/django.po +0 -405
  278. game/locale/hi_IN/LC_MESSAGES/djangojs.mo +0 -0
  279. game/locale/hi_IN/LC_MESSAGES/djangojs.po +0 -739
  280. game/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  281. game/locale/id_ID/LC_MESSAGES/django.po +0 -405
  282. game/locale/id_ID/LC_MESSAGES/djangojs.mo +0 -0
  283. game/locale/id_ID/LC_MESSAGES/djangojs.po +0 -738
  284. game/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  285. game/locale/it_IT/LC_MESSAGES/django.po +0 -405
  286. game/locale/it_IT/LC_MESSAGES/djangojs.mo +0 -0
  287. game/locale/it_IT/LC_MESSAGES/djangojs.po +0 -739
  288. game/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  289. game/locale/ja_JP/LC_MESSAGES/django.po +0 -405
  290. game/locale/ja_JP/LC_MESSAGES/djangojs.mo +0 -0
  291. game/locale/ja_JP/LC_MESSAGES/djangojs.po +0 -738
  292. game/locale/lol_US/LC_MESSAGES/django.mo +0 -0
  293. game/locale/lol_US/LC_MESSAGES/django.po +0 -405
  294. game/locale/lol_US/LC_MESSAGES/djangojs.mo +0 -0
  295. game/locale/lol_US/LC_MESSAGES/djangojs.po +0 -739
  296. game/locale/nb_NO/LC_MESSAGES/django.mo +0 -0
  297. game/locale/nb_NO/LC_MESSAGES/django.po +0 -405
  298. game/locale/nb_NO/LC_MESSAGES/djangojs.mo +0 -0
  299. game/locale/nb_NO/LC_MESSAGES/djangojs.po +0 -739
  300. game/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  301. game/locale/nl_NL/LC_MESSAGES/django.po +0 -405
  302. game/locale/nl_NL/LC_MESSAGES/djangojs.mo +0 -0
  303. game/locale/nl_NL/LC_MESSAGES/djangojs.po +0 -739
  304. game/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  305. game/locale/pl_PL/LC_MESSAGES/django.po +0 -405
  306. game/locale/pl_PL/LC_MESSAGES/djangojs.mo +0 -0
  307. game/locale/pl_PL/LC_MESSAGES/djangojs.po +0 -741
  308. game/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  309. game/locale/pt_BR/LC_MESSAGES/django.po +0 -405
  310. game/locale/pt_BR/LC_MESSAGES/djangojs.mo +0 -0
  311. game/locale/pt_BR/LC_MESSAGES/djangojs.po +0 -739
  312. game/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  313. game/locale/pt_PT/LC_MESSAGES/django.po +0 -405
  314. game/locale/pt_PT/LC_MESSAGES/djangojs.mo +0 -0
  315. game/locale/pt_PT/LC_MESSAGES/djangojs.po +0 -739
  316. game/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  317. game/locale/ro_RO/LC_MESSAGES/django.po +0 -405
  318. game/locale/ro_RO/LC_MESSAGES/djangojs.mo +0 -0
  319. game/locale/ro_RO/LC_MESSAGES/djangojs.po +0 -740
  320. game/locale/ru_RU/LC_MESSAGES/django.mo +0 -0
  321. game/locale/ru_RU/LC_MESSAGES/django.po +0 -405
  322. game/locale/ru_RU/LC_MESSAGES/djangojs.mo +0 -0
  323. game/locale/ru_RU/LC_MESSAGES/djangojs.po +0 -741
  324. game/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
  325. game/locale/sv_SE/LC_MESSAGES/django.po +0 -405
  326. game/locale/sv_SE/LC_MESSAGES/djangojs.mo +0 -0
  327. game/locale/sv_SE/LC_MESSAGES/djangojs.po +0 -739
  328. game/locale/tl_PH/LC_MESSAGES/django.mo +0 -0
  329. game/locale/tl_PH/LC_MESSAGES/django.po +0 -405
  330. game/locale/tl_PH/LC_MESSAGES/djangojs.mo +0 -0
  331. game/locale/tl_PH/LC_MESSAGES/djangojs.po +0 -739
  332. game/locale/tlh_AA/LC_MESSAGES/django.mo +0 -0
  333. game/locale/tlh_AA/LC_MESSAGES/django.po +0 -405
  334. game/locale/tlh_AA/LC_MESSAGES/djangojs.mo +0 -0
  335. game/locale/tlh_AA/LC_MESSAGES/djangojs.po +0 -739
  336. game/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  337. game/locale/tr_TR/LC_MESSAGES/django.po +0 -405
  338. game/locale/tr_TR/LC_MESSAGES/djangojs.mo +0 -0
  339. game/locale/tr_TR/LC_MESSAGES/djangojs.po +0 -740
  340. game/locale/ur_IN/LC_MESSAGES/django.mo +0 -0
  341. game/locale/ur_IN/LC_MESSAGES/django.po +0 -405
  342. game/locale/ur_IN/LC_MESSAGES/djangojs.mo +0 -0
  343. game/locale/ur_IN/LC_MESSAGES/djangojs.po +0 -739
  344. game/locale/ur_PK/LC_MESSAGES/django.mo +0 -0
  345. game/locale/ur_PK/LC_MESSAGES/django.po +0 -405
  346. game/locale/ur_PK/LC_MESSAGES/djangojs.mo +0 -0
  347. game/locale/ur_PK/LC_MESSAGES/djangojs.po +0 -739
  348. game/static/game/image/actions/go.svg +0 -18
  349. game/static/game/image/icons/destination.svg +0 -9
  350. game/static/game/js/pqselect.min.js +0 -9
  351. game/static/game/js/widget-scroller.js +0 -906
  352. rapid_router-5.4.1.dist-info/LICENSE.md +0 -577
  353. rapid_router-5.4.1.dist-info/METADATA +0 -24
  354. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
game/urls.py CHANGED
@@ -1,7 +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
-
4
- from django_js_reverse.views import urls_js
3
+ from django_reverse_js.views import urls_js
5
4
 
6
5
  from game.views.api import (
7
6
  level_list,
@@ -26,20 +25,6 @@ from game.views.api import (
26
25
  mode_for_level,
27
26
  map_list,
28
27
  )
29
- from game.views.level_editor import (
30
- level_editor,
31
- delete_level_for_editor,
32
- load_level_for_editor,
33
- save_level_for_editor,
34
- generate_random_map_for_editor,
35
- SharingInformationForEditor,
36
- ShareLevelView,
37
- play_anonymous_level,
38
- owned_levels,
39
- shared_levels,
40
- )
41
- from game.views.level_moderation import level_moderation
42
- from game.views.level_selection import levels, random_level_for_episode
43
28
  from game.views.level import (
44
29
  submit_attempt,
45
30
  play_default_level,
@@ -53,183 +38,245 @@ from game.views.level import (
53
38
  play_custom_level_from_editor,
54
39
  load_workspace_solution,
55
40
  )
56
- from game.views.scoreboard import scoreboard
41
+ from game.views.level_editor import (
42
+ level_editor,
43
+ delete_level_for_editor,
44
+ load_level_for_editor,
45
+ save_level_for_editor,
46
+ generate_random_map_for_editor,
47
+ SharingInformationForEditor,
48
+ ShareLevelView,
49
+ play_anonymous_level,
50
+ owned_levels,
51
+ shared_levels,
52
+ )
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
57
56
 
58
57
  urlpatterns = [
59
- url(r"^$", levels, name="levels"),
60
- url(r"^submit/$", submit_attempt, name="submit_attempt"),
61
- url(r"^(?P<levelName>[A-Z0-9]+)/$", play_default_level, name="play_default_level"),
62
- url(r"^custom/(?P<levelId>[0-9]+)/$", play_custom_level, name="play_custom_level"),
63
- url(r"^episode/(?P<episodeId>[0-9]+)/$", start_episode, name="start_episode"),
64
- 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(
65
74
  r"^levels/random/([0-9]+)/$",
66
75
  random_level_for_episode,
67
76
  name="random_level_for_episode",
68
77
  ),
69
- url(r"^scoreboard/$", scoreboard, name="scoreboard"),
70
- url(
78
+ re_path(r"^scoreboard/$", blockly_scoreboard, name="scoreboard"),
79
+ re_path(
71
80
  r"^workspace/",
72
81
  include(
73
82
  [
74
- url(
83
+ re_path(
75
84
  r"^load/(?P<workspaceID>[0-9]+)/$",
76
85
  load_workspace,
77
86
  name="load_workspace",
78
87
  ),
79
- url(
88
+ re_path(
80
89
  r"^load_list/$",
81
90
  load_list_of_workspaces,
82
91
  name="load_list_of_workspaces",
83
92
  ),
84
- url(r"^save/$", save_workspace, name="save_workspace"),
85
- url(
93
+ re_path(r"^save/$", save_workspace, name="save_workspace"),
94
+ re_path(
86
95
  r"^save/(?P<workspaceID>[0-9]+)/$",
87
96
  save_workspace,
88
97
  name="save_workspace",
89
98
  ),
90
- url(
99
+ re_path(
91
100
  r"^delete/(?P<workspaceID>[0-9]+)/$",
92
101
  delete_workspace,
93
102
  name="delete_workspace",
94
103
  ),
95
- url(
96
- r"^solution/(?P<levelName>[0-9]+)/$",
104
+ re_path(
105
+ r"^solution/(?P<level_name>[0-9]+)/$",
97
106
  load_workspace_solution,
98
107
  name="load_workspace_solution",
99
108
  ),
100
109
  ]
101
110
  ),
102
111
  ),
103
- url(
112
+ re_path(
104
113
  r"^level_moderation/",
105
114
  include(
106
115
  [
107
- url(r"^$", level_moderation, name="level_moderation"),
108
- url(
109
- 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",
110
126
  ),
111
127
  ]
112
128
  ),
113
129
  ),
114
- url(
130
+ re_path(
115
131
  r"^level_editor/",
116
132
  include(
117
133
  [
118
- url(r"^$", level_editor, name="level_editor"),
119
- url(
134
+ re_path(r"^$", level_editor, name="level_editor"),
135
+ re_path(
120
136
  r"^(?P<levelId>[0-9]+)/$",
121
137
  level_editor,
122
138
  name="level_editor_chosen_level",
123
139
  ),
124
- url(
140
+ re_path(
125
141
  r"^play_anonymous/(?P<levelId>[0-9]+)/$",
126
142
  play_anonymous_level,
127
143
  name="play_anonymous_level",
128
144
  ),
129
- url(
145
+ re_path(
130
146
  r"^play_custom/(?P<levelId>[0-9]+)/$",
131
147
  play_custom_level_from_editor,
132
148
  name="play_custom_level_from_editor",
133
149
  ),
134
- url(
150
+ re_path(
135
151
  r"^get/(?P<levelID>[0-9]+)/$",
136
152
  load_level_for_editor,
137
153
  name="load_level_for_editor",
138
154
  ),
139
- url(
155
+ re_path(
140
156
  r"^delete/(?P<levelId>[0-9]+)/$",
141
157
  delete_level_for_editor,
142
158
  name="delete_level_for_editor",
143
159
  ),
144
- url(r"^save/$", save_level_for_editor, name="save_level_for_editor"),
145
- url(
160
+ re_path(
161
+ r"^save/$",
162
+ save_level_for_editor,
163
+ name="save_level_for_editor",
164
+ ),
165
+ re_path(
146
166
  r"^save/(?P<levelId>[0-9]+)/$",
147
167
  save_level_for_editor,
148
168
  name="save_level_for_editor",
149
169
  ),
150
- url(
170
+ re_path(
151
171
  r"^random/$",
152
172
  generate_random_map_for_editor,
153
173
  name="generate_random_map_for_editor",
154
174
  ),
155
- url(
175
+ re_path(
156
176
  r"^get_sharing_information/(?P<levelID>[0-9]+)/$",
157
177
  SharingInformationForEditor.as_view(),
158
178
  name="get_sharing_information_for_editor",
159
179
  ),
160
- url(
180
+ re_path(
161
181
  r"^share/(?P<levelID>[0-9]+)/$",
162
182
  ShareLevelView.as_view(),
163
183
  name="share_level_for_editor",
164
184
  ),
165
- url(r"^levels/owned/$", owned_levels, name="owned_levels"),
166
- url(r"^levels/shared/$", shared_levels, name="shared_levels"),
185
+ re_path(r"^levels/owned/$", owned_levels, name="owned_levels"),
186
+ re_path(
187
+ r"^levels/shared/$", shared_levels, name="shared_levels"
188
+ ),
167
189
  ]
168
190
  ),
169
191
  ),
170
- url(r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")),
171
- url(
192
+ re_path(
193
+ r"^api-auth/",
194
+ include("rest_framework.urls", namespace="rest_framework"),
195
+ ),
196
+ re_path(
172
197
  r"^api/",
173
198
  include(
174
199
  [
175
- url(r"^$", api_root),
176
- url(r"^blocks/$", block_list, name="block-list"),
177
- url(r"^blocks/(?P<pk>[0-9]+)/$", block_detail, name="block-detail"),
178
- url(r"^characters/$", character_list, name="character-list"),
179
- url(
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(
180
211
  r"^characters/(?P<pk>[0-9]+)/$",
181
212
  character_detail,
182
213
  name="character-detail",
183
214
  ),
184
- url(r"^decors/$", decor_list, name="decor-list"),
185
- url(r"^decors/(?P<pk>[0-9]+)/$", decor_detail, name="decor-detail"),
186
- url(r"^episodes/$", episode_list, name="episode-list"),
187
- url(
188
- r"^episodes/(?P<pk>[0-9]+)/$", episode_detail, name="episode-detail"
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",
189
226
  ),
190
- url(
227
+ re_path(
191
228
  r"^episodes/(?P<pk>[0-9]+)/levels/$",
192
229
  level_for_episode,
193
230
  name="level-for-episode",
194
231
  ),
195
- url(r"^levels/$", level_list, name="level-list"),
196
- url(r"^levels/(?P<pk>[0-9]+)/$", level_detail, name="level-detail"),
197
- url(
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(
198
239
  r"^levels/(?P<pk>[0-9]+)/blocks/$",
199
240
  levelblock_for_level,
200
241
  name="levelblock-for-level",
201
242
  ),
202
- url(
243
+ re_path(
203
244
  r"^levels/(?P<pk>[0-9]+)/decors/$",
204
245
  leveldecor_for_level,
205
246
  name="leveldecor-for-level",
206
247
  ),
207
- url(
208
- r"^levels/(?P<pk>[0-9]+)/map/$", map_for_level, name="map-for-level"
248
+ re_path(
249
+ r"^levels/(?P<pk>[0-9]+)/map/$",
250
+ map_for_level,
251
+ name="map-for-level",
209
252
  ),
210
- url(
253
+ re_path(
211
254
  r"^levels/(?P<pk>[0-9]+)/mode/$",
212
255
  mode_for_level,
213
256
  name="mode-for-level",
214
257
  ),
215
- url(
258
+ re_path(
216
259
  r"^levelblocks/(?P<pk>[0-9]+)/$",
217
260
  levelblock_detail,
218
261
  name="levelblock-detail",
219
262
  ),
220
- url(
263
+ re_path(
221
264
  r"^leveldecors/(?P<pk>[0-9]+)/$",
222
265
  leveldecor_detail,
223
266
  name="leveldecor-detail",
224
267
  ),
225
- url(r"^maps/$", map_list, name="map-list"),
226
- url(r"^themes/$", theme_list, name="theme-list"),
227
- url(r"^themes/(?P<pk>[0-9]+)/$", theme_detail, name="theme-detail"),
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
+ ),
228
275
  ]
229
276
  ),
230
277
  ),
231
- url(r"^js-reverse/$", urls_js, name="js-reverse"),
232
- url(
278
+ path("reverse.js", urls_js, name="js-reverse"),
279
+ re_path(
233
280
  r"^js-i18n/$",
234
281
  JavaScriptCatalog.as_view(packages=["game"]),
235
282
  name="rapid-router/javascript-catalog",
@@ -0,0 +1,90 @@
1
+ # we should comment out languages that we don't have custom block translations for,
2
+ # although all these languages have built-in translations for the generic blocks
3
+
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
+ }