codeforlife-portal 5.32.2__py2.py3-none-any.whl → 8.9.9__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 (393) hide show
  1. cfl_common/common/__init__.py +1 -0
  2. cfl_common/common/app_settings.py +66 -0
  3. cfl_common/common/apps.py +6 -0
  4. cfl_common/common/context_processors.py +9 -0
  5. cfl_common/common/csp_config.py +85 -0
  6. cfl_common/common/helpers/__init__.py +0 -0
  7. cfl_common/common/helpers/data_migration_loader.py +42 -0
  8. cfl_common/common/helpers/emails.py +393 -0
  9. cfl_common/common/helpers/generators.py +52 -0
  10. cfl_common/common/helpers/organisation.py +10 -0
  11. cfl_common/common/mail.py +201 -0
  12. cfl_common/common/migrations/0001_initial.py +240 -0
  13. cfl_common/common/migrations/0002_emailverification.py +55 -0
  14. cfl_common/common/migrations/0003_aimmocharacter.py +31 -0
  15. cfl_common/common/migrations/0004_add_aimmocharacters.py +17 -0
  16. cfl_common/common/migrations/0005_add_worksheets.py +8 -0
  17. cfl_common/common/migrations/0006_update_aimmo_character_image_path.py +17 -0
  18. cfl_common/common/migrations/0007_add_pdf_names_to_first_two_worksheets.py +8 -0
  19. cfl_common/common/migrations/0008_unlock_worksheet_3.py +11 -0
  20. cfl_common/common/migrations/0009_add_blocked_time_to_teacher_and_student.py +24 -0
  21. cfl_common/common/migrations/0010_remove_teacher_title.py +18 -0
  22. cfl_common/common/migrations/0011_student_login_id.py +18 -0
  23. cfl_common/common/migrations/0012_usersession.py +39 -0
  24. cfl_common/common/migrations/0013_class_school.py +42 -0
  25. cfl_common/common/migrations/0014_login_type.py +29 -0
  26. cfl_common/common/migrations/0015_dailyactivity.py +31 -0
  27. cfl_common/common/migrations/0016_joinreleasestudent.py +42 -0
  28. cfl_common/common/migrations/0017_copy_email_to_username.py +18 -0
  29. cfl_common/common/migrations/0018_update_aimmo_character_image_path.py +15 -0
  30. cfl_common/common/migrations/0019_aimmocharacter_alt.py +16 -0
  31. cfl_common/common/migrations/0020_class_is_active_and_null_access_code.py +23 -0
  32. cfl_common/common/migrations/0021_school_is_active.py +28 -0
  33. cfl_common/common/migrations/0022_school_cleanup.py +29 -0
  34. cfl_common/common/migrations/0023_userprofile_aimmo_badges.py +22 -0
  35. cfl_common/common/migrations/0024_teacher_invited_by.py +25 -0
  36. cfl_common/common/migrations/0025_schoolteacherinvitation.py +47 -0
  37. cfl_common/common/migrations/0026_teacher_remove_join_request.py +22 -0
  38. cfl_common/common/migrations/0027_class_created_by.py +25 -0
  39. cfl_common/common/migrations/0028_coding_club_downloads.py +23 -0
  40. cfl_common/common/migrations/0029_dynamicelement.py +22 -0
  41. cfl_common/common/migrations/0030_add_maintenance_banner.py +25 -0
  42. cfl_common/common/migrations/0031_improve_admin_panel.py +56 -0
  43. cfl_common/common/migrations/0032_dailyactivity_level_control_submits.py +18 -0
  44. cfl_common/common/migrations/0033_password_reset_tracking_fields.py +23 -0
  45. cfl_common/common/migrations/0034_dailyactivity_daily_school_student_lockout_reset.py +18 -0
  46. cfl_common/common/migrations/0035_rename_lockout_fields.py +27 -0
  47. cfl_common/common/migrations/0036_rename_awaiting_email_verification_userprofile_is_verified.py +17 -0
  48. cfl_common/common/migrations/0037_migrate_email_verification.py +21 -0
  49. cfl_common/common/migrations/0038_delete_emailverification.py +16 -0
  50. cfl_common/common/migrations/0039_copy_email_to_username.py +18 -0
  51. cfl_common/common/migrations/0040_school_county.py +18 -0
  52. cfl_common/common/migrations/0041_populate_gb_counties.py +27 -0
  53. cfl_common/common/migrations/0042_totalactivity.py +25 -0
  54. cfl_common/common/migrations/0043_add_total_activity.py +30 -0
  55. cfl_common/common/migrations/0044_update_activity_models.py +33 -0
  56. cfl_common/common/migrations/0045_otp.py +23 -0
  57. cfl_common/common/migrations/0046_alter_school_country.py +19 -0
  58. cfl_common/common/migrations/0047_delete_school_postcode.py +16 -0
  59. cfl_common/common/migrations/0048_unique_school_names.py +42 -0
  60. cfl_common/common/migrations/0049_anonymise_orphan_users.py +29 -0
  61. cfl_common/common/migrations/0050_anonymise_orphan_schools.py +30 -0
  62. cfl_common/common/migrations/0051_verify_returning_users.py +26 -0
  63. cfl_common/common/migrations/0052_add_cse_fields.py +68 -0
  64. cfl_common/common/migrations/0053_clean_class_data.py +24 -0
  65. cfl_common/common/migrations/0054_delete_aimmo_models.py +20 -0
  66. cfl_common/common/migrations/0055_alter_schoolteacherinvitation_token.py +18 -0
  67. cfl_common/common/migrations/0056_set_non_school_teachers_as_non_admins.py +25 -0
  68. cfl_common/common/migrations/0057_teacher_teacher__is_admin.py +19 -0
  69. cfl_common/common/migrations/0058_userprofile_google_refresh_token_and_more.py +24 -0
  70. cfl_common/common/migrations/__init__.py +0 -0
  71. cfl_common/common/models.py +557 -0
  72. cfl_common/common/permissions.py +84 -0
  73. cfl_common/common/tests/__init__.py +0 -0
  74. cfl_common/common/tests/test_migration_anonymise_orphan_schools.py +30 -0
  75. cfl_common/common/tests/test_migration_anonymise_orphan_users.py +30 -0
  76. cfl_common/common/tests/test_migration_blocked_time.py +15 -0
  77. cfl_common/common/tests/test_migration_remove_teacher_title.py +13 -0
  78. cfl_common/common/tests/test_migration_unique_school_names.py +33 -0
  79. cfl_common/common/tests/test_migration_verify_returning_users.py +59 -0
  80. cfl_common/common/tests/test_models.py +87 -0
  81. cfl_common/common/tests/utils/__init__.py +0 -0
  82. cfl_common/common/tests/utils/classes.py +38 -0
  83. cfl_common/common/tests/utils/email.py +67 -0
  84. cfl_common/common/tests/utils/organisation.py +41 -0
  85. cfl_common/common/tests/utils/student.py +123 -0
  86. cfl_common/common/tests/utils/teacher.py +73 -0
  87. cfl_common/common/tests/utils/user.py +27 -0
  88. cfl_common/common/utils.py +56 -0
  89. cfl_common/setup.py +61 -0
  90. codeforlife_portal-8.9.9.dist-info/METADATA +226 -0
  91. {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/RECORD +341 -238
  92. {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/WHEEL +1 -1
  93. codeforlife_portal-8.9.9.dist-info/licenses/LICENSE.md +3 -0
  94. {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/top_level.txt +1 -0
  95. deploy/middleware/maintenance.py +25 -0
  96. deploy/middleware/screentime_warning.py +29 -0
  97. deploy/middleware/security.py +5 -6
  98. deploy/middleware/session_timeout.py +31 -0
  99. deploy/middleware/tmp_basic_auth.py +41 -0
  100. example_project/portal_test_settings.py +239 -0
  101. example_project/settings.py +156 -17
  102. example_project/urls.py +5 -6
  103. portal/__init__.py +1 -1
  104. portal/admin.py +142 -29
  105. portal/app_settings.py +10 -7
  106. portal/forms/dotmailer.py +6 -4
  107. portal/forms/invite_teacher.py +19 -10
  108. portal/forms/organisation.py +137 -68
  109. portal/forms/play.py +53 -98
  110. portal/forms/registration.py +70 -164
  111. portal/forms/teach.py +147 -121
  112. portal/handlers.py +1 -2
  113. portal/helpers/decorators.py +30 -10
  114. portal/helpers/password.py +86 -47
  115. portal/helpers/ratelimit.py +32 -15
  116. portal/helpers/regexes.py +5 -0
  117. portal/helpers/request_handlers.py +10 -0
  118. portal/migrations/0044_auto_20150430_0959.py +6 -2
  119. portal/mixins/__init__.py +1 -0
  120. portal/mixins/cron_mixin.py +12 -0
  121. portal/permissions/__init__.py +1 -0
  122. portal/permissions/is_cron_request_from_google.py +14 -0
  123. portal/static/portal/img/10_years_anniversary.png +0 -0
  124. portal/static/portal/img/RR_logo_grass_background.png +0 -0
  125. portal/static/portal/img/coding_club_hero.jpg +0 -0
  126. portal/static/portal/img/coding_club_python_pack.png +0 -0
  127. portal/static/portal/img/facebook.png +0 -0
  128. portal/static/portal/img/gitbook.png +0 -0
  129. portal/static/portal/img/howe_dell_1.png +0 -0
  130. portal/static/portal/img/howe_dell_2.png +0 -0
  131. portal/static/portal/img/howe_dell_3.png +0 -0
  132. portal/static/portal/img/logo_cfl.png +0 -0
  133. portal/static/portal/img/logo_cfl_powered.svg +35 -0
  134. portal/static/portal/img/logo_cfl_reminder_cards.jpg +0 -0
  135. portal/static/portal/img/logo_ocado_group.png +0 -0
  136. portal/static/portal/img/logo_python_den.svg +21 -0
  137. portal/static/portal/img/long_europe_map.png +0 -0
  138. portal/static/portal/img/python_den.png +0 -0
  139. portal/static/portal/img/python_den_banner.svg +26 -0
  140. portal/static/portal/img/rapid_router_landing_hero.png +0 -0
  141. portal/static/portal/img/rr_advanced.png +0 -0
  142. portal/static/portal/img/ten_year_map_pin.svg +1 -0
  143. portal/static/portal/img/thumbnail_educate_rapid_router.png +0 -0
  144. portal/static/portal/img/thumbnail_educate_resources.png +0 -0
  145. portal/static/portal/img/thumbnail_play_rapid_router.png +0 -0
  146. portal/static/portal/img/thumbnail_python_den.png +0 -0
  147. portal/static/portal/img/twitter.png +0 -0
  148. portal/static/portal/js/carouselCards.js +25 -0
  149. portal/static/portal/js/common.js +96 -1
  150. portal/static/portal/js/independentLogin.js +16 -0
  151. portal/static/portal/js/independentRegistration.js +86 -0
  152. portal/static/portal/js/levelControl.js +77 -0
  153. portal/static/portal/js/lib/jquery.min.js +2 -0
  154. portal/static/portal/js/organisation_manage.js +142 -14
  155. portal/static/portal/js/passwordStrength.js +154 -64
  156. portal/static/portal/js/resetPassword.js +23 -0
  157. portal/static/portal/js/riveted.min.js +238 -239
  158. portal/static/portal/js/school.js +13 -0
  159. portal/static/portal/js/studentLogin.js +16 -0
  160. portal/static/portal/js/teacherEditStudent.js +23 -0
  161. portal/static/portal/js/teacherLogin.js +16 -0
  162. portal/static/portal/js/tenYearMap.js +14 -0
  163. portal/static/portal/sass/colorbox.scss +0 -1
  164. portal/static/portal/sass/modules/_colours.scss +1 -0
  165. portal/static/portal/sass/modules/_levels.scss +1 -1
  166. portal/static/portal/sass/modules/_mixins.scss +21 -0
  167. portal/static/portal/sass/partials/_banners.scss +4 -177
  168. portal/static/portal/sass/partials/_buttons.scss +12 -15
  169. portal/static/portal/sass/partials/_carousel.scss +129 -0
  170. portal/static/portal/sass/partials/_footer.scss +21 -22
  171. portal/static/portal/sass/partials/_forms.scss +60 -5
  172. portal/static/portal/sass/partials/_grids.scss +34 -61
  173. portal/static/portal/sass/partials/_header.scss +28 -20
  174. portal/static/portal/sass/partials/_images.scss +292 -39
  175. portal/static/portal/sass/partials/_popup.scss +18 -15
  176. portal/static/portal/sass/partials/_tables.scss +12 -20
  177. portal/static/portal/sass/partials/_text.scss +6 -10
  178. portal/static/portal/sass/styles.scss +0 -1
  179. portal/static/portal/video/code for life .pdf +0 -0
  180. portal/strings/about.py +5 -0
  181. portal/strings/coding_club.py +9 -0
  182. portal/strings/play.py +6 -5
  183. portal/strings/teach.py +1 -1
  184. portal/strings/teacher_resources.py +2 -8
  185. portal/strings/ten_year_map.py +13 -0
  186. portal/templates/403.html +2 -2
  187. portal/templates/404.html +1 -1
  188. portal/templates/500.html +2 -2
  189. portal/templates/{captcha → django_recaptcha}/includes/js_v2_invisible.html +3 -3
  190. portal/templates/{captcha → django_recaptcha}/widget_v2_invisible.html +2 -2
  191. portal/templates/email.html +4 -2
  192. portal/templates/maintenance.html +34 -0
  193. portal/templates/portal/about.html +94 -62
  194. portal/templates/portal/base.html +176 -152
  195. portal/templates/portal/coding_club.html +100 -0
  196. portal/templates/portal/contribute.html +56 -52
  197. portal/templates/portal/email_invitation_sent.html +1 -1
  198. portal/templates/portal/email_style_template.html +374 -0
  199. portal/templates/portal/email_verification_failed.html +1 -1
  200. portal/templates/portal/email_verification_needed.html +9 -9
  201. portal/templates/portal/form_shapes.html +20 -8
  202. portal/templates/portal/getinvolved.html +6 -6
  203. portal/templates/portal/home.html +35 -10
  204. portal/templates/portal/home_learning.html +19 -19
  205. portal/templates/portal/locked_out.html +0 -1
  206. portal/templates/portal/locked_out_school_student.html +16 -0
  207. portal/templates/portal/login/independent_student.html +31 -15
  208. portal/templates/portal/login/student.html +10 -7
  209. portal/templates/portal/login/student_class_code.html +7 -4
  210. portal/templates/portal/login/teacher.html +34 -17
  211. portal/templates/portal/partials/banner.html +18 -4
  212. portal/templates/portal/partials/benefits.html +1 -1
  213. portal/templates/portal/partials/card_list.html +34 -24
  214. portal/templates/portal/partials/character_list.html +5 -5
  215. portal/templates/portal/partials/cookie_list.html +161 -0
  216. portal/templates/portal/partials/delete_popup.html +18 -0
  217. portal/templates/portal/partials/footer.html +57 -26
  218. portal/templates/portal/partials/header.html +118 -117
  219. portal/templates/portal/partials/hero_card.html +4 -3
  220. portal/templates/portal/partials/info_popup.html +3 -3
  221. portal/templates/portal/partials/invite_admin_teacher.html +23 -0
  222. portal/templates/portal/partials/popup.html +7 -2
  223. portal/templates/portal/partials/register_newsletter_tickbox.html +2 -5
  224. portal/templates/portal/partials/screentime_popup.html +14 -0
  225. portal/templates/portal/partials/service_unavailable_popup.html +17 -0
  226. portal/templates/portal/partials/session_popup.html +19 -0
  227. portal/templates/portal/play/student_dashboard.html +42 -29
  228. portal/templates/portal/play/student_edit_account.html +64 -9
  229. portal/templates/portal/play.html +61 -41
  230. portal/templates/portal/privacy_notice.html +697 -0
  231. portal/templates/portal/register.html +122 -92
  232. portal/templates/portal/reset_password.html +20 -40
  233. portal/templates/portal/reset_password_confirm.html +9 -4
  234. portal/templates/portal/reset_password_email_sent.html +15 -13
  235. portal/templates/portal/teach/base_registering.html +1 -1
  236. portal/templates/portal/teach/class.html +4 -6
  237. portal/templates/portal/teach/dashboard.html +212 -117
  238. portal/templates/portal/teach/invited.html +90 -0
  239. portal/templates/portal/teach/onboarding_classes.html +5 -3
  240. portal/templates/portal/teach/onboarding_print.html +1 -1
  241. portal/templates/portal/teach/onboarding_school.html +26 -139
  242. portal/templates/portal/teach/onboarding_students.html +1 -1
  243. portal/templates/portal/teach/teacher_dismiss_students.html +73 -55
  244. portal/templates/portal/teach/teacher_edit_class.html +168 -11
  245. portal/templates/portal/teach/teacher_edit_student.html +12 -5
  246. portal/templates/portal/teach/teacher_move_all_classes.html +25 -38
  247. portal/templates/portal/teach/teacher_move_students_to_class.html +1 -1
  248. portal/templates/portal/teach.html +61 -42
  249. portal/templates/portal/ten_year_map.html +147 -0
  250. portal/templates/portal/terms.html +191 -42
  251. portal/templates/two_factor/core/login.html +71 -59
  252. portal/templates/two_factor/core/setup.html +58 -49
  253. portal/templates/two_factor/profile/disable.html +1 -1
  254. portal/templates/two_factor/profile/profile.html +35 -17
  255. portal/templatetags/app_tags.py +59 -84
  256. portal/templatetags/card_list_tags.py +0 -4
  257. portal/tests/base_test.py +14 -3
  258. portal/tests/conftest.py +0 -15
  259. portal/tests/migrations/test_migration_make_portaladmin_teacher.py +2 -6
  260. portal/tests/migrations/test_migration_preview_users.py +3 -9
  261. portal/tests/migrations/test_migration_remove_guardian.py +1 -3
  262. portal/tests/migrations/test_migration_use_common_models.py +2 -6
  263. portal/tests/migrations/test_migration_verify_portaladmin.py +1 -3
  264. portal/tests/pageObjects/portal/admin/admin_base_page.py +0 -21
  265. portal/tests/pageObjects/portal/base_page.py +16 -26
  266. portal/tests/pageObjects/portal/email_verification_needed_page.py +3 -2
  267. portal/tests/pageObjects/portal/game_page.py +12 -19
  268. portal/tests/pageObjects/portal/home_page.py +13 -15
  269. portal/tests/pageObjects/portal/independent_login_page.py +13 -17
  270. portal/tests/pageObjects/portal/password_reset_form_page.py +20 -4
  271. portal/tests/pageObjects/portal/password_reset_page.py +25 -0
  272. portal/tests/pageObjects/portal/play/account_page.py +18 -27
  273. portal/tests/pageObjects/portal/play/dashboard_page.py +4 -4
  274. portal/tests/pageObjects/portal/play/join_school_or_club_page.py +8 -10
  275. portal/tests/pageObjects/portal/play/play_base_page.py +5 -3
  276. portal/tests/pageObjects/portal/signup_page.py +28 -59
  277. portal/tests/pageObjects/portal/student_login_class_code.py +6 -9
  278. portal/tests/pageObjects/portal/student_login_page.py +6 -8
  279. portal/tests/pageObjects/portal/teach/add_independent_student_to_class_page.py +3 -3
  280. portal/tests/pageObjects/portal/teach/added_independent_student_to_class_page.py +3 -1
  281. portal/tests/pageObjects/portal/teach/class_page.py +36 -13
  282. portal/tests/pageObjects/portal/teach/dashboard_page.py +43 -84
  283. portal/tests/pageObjects/portal/teach/dismiss_students_page.py +7 -5
  284. portal/tests/pageObjects/portal/teach/edit_student_page.py +10 -8
  285. portal/tests/pageObjects/portal/teach/move_class_page.py +5 -10
  286. portal/tests/pageObjects/portal/teach/move_classes_page.py +4 -2
  287. portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py +4 -2
  288. portal/tests/pageObjects/portal/teach/move_students_page.py +6 -13
  289. portal/tests/pageObjects/portal/teach/onboarding_classes_page.py +5 -3
  290. portal/tests/pageObjects/portal/teach/onboarding_organisation_page.py +11 -49
  291. portal/tests/pageObjects/portal/teach/onboarding_student_list_page.py +7 -12
  292. portal/tests/pageObjects/portal/teach/onboarding_students_page.py +4 -27
  293. portal/tests/pageObjects/portal/teach/teach_base_page.py +6 -4
  294. portal/tests/pageObjects/portal/teacher_login_page.py +10 -16
  295. portal/tests/selenium_test_case.py +3 -43
  296. portal/tests/snapshots/snap_test_partials.py +11 -165
  297. portal/tests/test_2FA.py +15 -33
  298. portal/tests/test_admin.py +15 -97
  299. portal/tests/test_api.py +212 -73
  300. portal/tests/test_captcha_forms.py +2 -2
  301. portal/tests/test_class.py +374 -24
  302. portal/tests/test_emails.py +83 -20
  303. portal/tests/{test_newsletter_footer.py → test_global_forms.py} +5 -5
  304. portal/tests/test_helper_methods.py +30 -0
  305. portal/tests/test_independent_student.py +255 -144
  306. portal/tests/test_invite_teacher.py +318 -10
  307. portal/tests/test_middleware.py +138 -15
  308. portal/tests/test_organisation.py +78 -262
  309. portal/tests/test_partials.py +0 -88
  310. portal/tests/test_ratelimit.py +218 -36
  311. portal/tests/test_school_student.py +35 -40
  312. portal/tests/test_security.py +12 -31
  313. portal/tests/test_teacher.py +425 -325
  314. portal/tests/test_teacher_student.py +103 -91
  315. portal/tests/test_views.py +900 -76
  316. portal/tests/utils/classes.py +2 -2
  317. portal/tests/utils/messages.py +13 -28
  318. portal/urls.py +237 -164
  319. portal/views/admin.py +0 -332
  320. portal/views/api.py +82 -68
  321. portal/views/cron/__init__.py +1 -0
  322. portal/views/cron/user.py +322 -0
  323. portal/views/dotmailer.py +9 -1
  324. portal/views/email.py +33 -77
  325. portal/views/google_analytics.py +28 -0
  326. portal/views/home.py +126 -97
  327. portal/views/legal.py +13 -0
  328. portal/views/login/independent_student.py +5 -5
  329. portal/views/login/student.py +51 -14
  330. portal/views/login/teacher.py +2 -6
  331. portal/views/organisation.py +20 -189
  332. portal/views/registration.py +97 -17
  333. portal/views/student/edit_account_details.py +99 -72
  334. portal/views/student/play.py +81 -62
  335. portal/views/teacher/dashboard.py +421 -149
  336. portal/views/teacher/teach.py +226 -177
  337. portal/views/two_factor/__init__.py +0 -0
  338. portal/views/two_factor/core.py +28 -0
  339. portal/views/two_factor/form.py +7 -0
  340. portal/views/two_factor/profile.py +11 -0
  341. codeforlife_portal-5.32.2.dist-info/LICENSE.md +0 -577
  342. codeforlife_portal-5.32.2.dist-info/METADATA +0 -38
  343. deploy/permissions.py +0 -2
  344. example_project/manage.py +0 -10
  345. portal/autoconfig.py +0 -140
  346. portal/csp_config.py +0 -60
  347. portal/forms/add_game.py +0 -33
  348. portal/helpers/location.py +0 -121
  349. portal/static/portal/img/kurono_hero.jpg +0 -0
  350. portal/static/portal/img/kurono_landing_hero.png +0 -0
  351. portal/static/portal/img/kurono_logo.svg +0 -1
  352. portal/static/portal/img/kurono_logo_grey_background.svg +0 -1
  353. portal/static/portal/img/kurono_logo_mark.svg +0 -1
  354. portal/static/portal/img/kurono_resources_hero.jpg +0 -0
  355. portal/static/portal/img/kurono_story.png +0 -0
  356. portal/static/portal/img/ocado-swirl.svg +0 -22
  357. portal/static/portal/img/thumbnail_educate_kurono.png +0 -0
  358. portal/static/portal/img/thumbnail_educate_resources_and_progress_tracking.png +0 -0
  359. portal/static/portal/img/thumbnail_kurono_resources.png +0 -0
  360. portal/static/portal/img/thumbnail_play_kurono.png +0 -0
  361. portal/static/portal/img/x_close_video.png +0 -0
  362. portal/static/portal/js/aimmoGame.js +0 -106
  363. portal/static/portal/js/deleteWorkspaces.js +0 -14
  364. portal/static/portal/js/fuzzySchoolLookup.js +0 -46
  365. portal/static/portal/js/lib/jquery-3.5.1.min.js +0 -2
  366. portal/static/portal/js/lib/jquery-ui-1.12.1.min.js +0 -13
  367. portal/static/portal/sass/partials/_videos.scss +0 -10
  368. portal/static/portal/video/aimmo_play_now_background_video.mp4 +0 -0
  369. portal/strings/student_aimmo_dashboard.py +0 -6
  370. portal/templates/portal/admin/aggregated_data.html +0 -35
  371. portal/templates/portal/admin/map.html +0 -70
  372. portal/templates/portal/mouseflow.html +0 -9
  373. portal/templates/portal/partials/aimmo_games_table.html +0 -83
  374. portal/templates/portal/partials/register_over_required_age_tickbox.html +0 -9
  375. portal/templates/portal/play/independent_student_dashboard.html +0 -64
  376. portal/templates/portal/play/student_aimmo_dashboard.html +0 -63
  377. portal/templates/portal/privacy_policy.html +0 -483
  378. portal/templates/portal/reset_password_email.html +0 -9
  379. portal/templates/portal/teach/invite.html +0 -25
  380. portal/templates/portal/teach/teacher_aimmo_dashboard.html +0 -95
  381. portal/templates/portal/teach/teacher_resources.html +0 -68
  382. portal/templatetags/character_list_tags.py +0 -16
  383. portal/tests/pageObjects/portal/kurono_teacher_dashboard_page.py +0 -49
  384. portal/tests/pageObjects/portal/student_password_reset_form_page.py +0 -23
  385. portal/tests/pageObjects/portal/teach/onboarding_revoke_request_page.py +0 -20
  386. portal/tests/pageObjects/portal/teacher_password_reset_form_page.py +0 -23
  387. portal/tests/test_aimmo_dashboards.py +0 -172
  388. portal/tests/test_location.py +0 -217
  389. portal/tests/utils/aimmo_games.py +0 -30
  390. portal/views/aimmo/dashboard.py +0 -119
  391. portal/views/privacy_policy.py +0 -9
  392. portal/views/teacher/teacher_resources.py +0 -42
  393. {portal/views/aimmo → cfl_common}/__init__.py +0 -0
@@ -1,10 +0,0 @@
1
- @import 'base';
2
-
3
- .video--aimmo--play-online {
4
- margin-top: 4 * $spacing;
5
- padding-left: 0px;
6
- padding-right: 0px;
7
- -webkit-box-shadow: 0px 4px 18px 0px $color-ui-widget-overlay;
8
- -moz-box-shadow: 0px 4px 18px 0px $color-ui-widget-overlay;
9
- box-shadow: 0px 4px 18px 0px $color-ui-widget-overlay;
10
- }
@@ -1,6 +0,0 @@
1
- AIMMO_DASHBOARD_BANNER = {
2
- "title": "Kurono dashboard",
3
- "subtitle": "Let the adventures begin! A collection of challenges await your "
4
- "exploration. See how far you can get.",
5
- "image_class": "banner--picture--aimmo",
6
- }
@@ -1,35 +0,0 @@
1
- {% extends 'portal/base_no_userprofile.html' %}
2
-
3
- {% load table_tags %}
4
-
5
- {% block content %}
6
- <div id="admin_data"></div>
7
- <h1>Aggregated Data from CFL</h1><br>
8
-
9
- {% for table in tables %}
10
-
11
- <h2>{{ table.title }}</h2>
12
-
13
- <p>{{ table.description }}</p>
14
-
15
- <table class="CSSTable alternate smaller">
16
- <tr>
17
- {% for head in table.header %}
18
- <th>{{ head }}</th>
19
- {% endfor %}
20
- </tr>
21
- {% for data in table.data %}
22
- <tr>
23
- {% for entry in data %}
24
- <td>{{ entry|tableformat }}</td>
25
- {% endfor %}
26
- </tr>
27
- {% endfor %}
28
-
29
- </table>
30
- <br>
31
- <br>
32
-
33
- {% endfor %}
34
-
35
- {% endblock content %}
@@ -1,70 +0,0 @@
1
- {% extends 'portal/base_no_userprofile.html' %}
2
-
3
- {% block head %}
4
-
5
- <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
6
-
7
- <style type="text/css">
8
- html {
9
- height: 100%
10
- }
11
- body {
12
- height: 100%;
13
- margin: 0;
14
- padding: 0
15
- }
16
- #map-canvas {
17
- height: 100%
18
- }
19
- </style>
20
-
21
- {% block script %}
22
- <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
23
-
24
- <script type="text/javascript">
25
-
26
- google.maps.event.addDomListener(window, 'load', function() {
27
- var map = new google.maps.Map(document.getElementById("map-canvas"), {
28
- center: new google.maps.LatLng(53.830115, -3.80127),
29
- zoom: 6,
30
- minZoom: 2,
31
- maxZoom: 10,
32
- });
33
-
34
- var markers = [];
35
- {% for school in schools %}
36
-
37
- {% if school.latitude and school.longitude %}
38
- markers.push(new google.maps.Marker({
39
- position: new google.maps.LatLng({{ school.latitude }}, {{ school.longitude }}),
40
- map: map,
41
- animation: google.maps.Animation.DROP,
42
- }));
43
- {% endif %}
44
- {% endfor %}
45
-
46
- var bounds = new google.maps.LatLngBounds();
47
- for(i=0;i<markers.length;i++) {
48
- bounds.extend(markers[i].getPosition());
49
- }
50
-
51
- map.setCenter(bounds.getCenter());
52
- map.fitBounds(bounds);
53
- map.setZoom(map.getZoom()-1);
54
- if(map.getZoom()> 15){
55
- map.setZoom(15);
56
- }
57
-
58
-
59
- });
60
- </script>
61
- {% endblock script %}
62
-
63
- {% endblock head %}
64
-
65
- {% block content %}
66
-
67
- <div id="admin_map"></div>
68
- <div id="map-canvas" style="height: 600px"/>
69
-
70
- {% endblock content %}
@@ -1,9 +0,0 @@
1
- <script type="text/plain" class="optanon-category-C0002">
2
- var _mfq = _mfq || [];
3
- (function() {
4
- var mf = document.createElement("script");
5
- mf.type = "text/javascript"; mf.async = true;
6
- mf.src = "//cdn.mouseflow.com/projects/4e6407b5-890c-4dfc-9b50-fc14eeeeb2eb.js";
7
- document.getElementsByTagName("head")[0].appendChild(mf);
8
- })();
9
- </script>
@@ -1,83 +0,0 @@
1
- {% load staticfiles %}
2
- {% load app_tags %}
3
- {% block scripts %}
4
- <script type="text/javascript" src="{% static 'portal/js/aimmoGame.js' %}"></script>
5
- {% endblock scripts %}
6
-
7
- {% if open_play_games %}
8
- {% include "portal/partials/popup.html" %}
9
- <table id="games-table" class="games-table header-primary data-primary">
10
- <tr class="games-table__header">
11
- <th class="cell-left">
12
- <p>Class</p>
13
- </th>
14
- <th class="cell-left col-xs-6">
15
- <p>Challenge</p>
16
- </th>
17
- <th class="cell-center">
18
- <p>Action</p>
19
- </th>
20
- <th class="cell-center">
21
- <input id="gamesListToggle" name="gamesListToggle" type="checkbox" value="">
22
- </th>
23
- </tr>
24
- {% for game in open_play_games %}
25
- <tr>
26
- <td>
27
- <div class="games-table__cell">
28
- <p>{{ game.game_class.name }}</p>
29
- </div>
30
- </td>
31
- <td>
32
- <div class="games-table__cell">
33
- <div class="dropdown">
34
- <button id="worksheets_dropdown" class="button--secondary button--secondary--dark button--small button--dropdown"
35
- data-toggle="dropdown" aria-expanded="false" type="button">
36
- <div class="dropdown__text">{{ game.worksheet.id }} - {{ game.worksheet.name }}</div>
37
- </button>
38
- <ul id="worksheets_dropdown_menu" class="dropdown-menu">
39
- {% for worksheet in complete_worksheets %}
40
- <li class="dropdown-menu__option">
41
- {% if worksheet.name == game.worksheet.name %}
42
- <a class="button button--small disabled">
43
- <p class="dropdown-menu__option__text">{{ worksheet.id }} - {{ worksheet.name }}</p>
44
- <span class="material-icons-outlined">check</span>
45
- </a>
46
- {% else %}
47
- <a class="button button--small" id="worksheet_{{ worksheet.id }}"
48
- onclick="changeWorksheetConfirmation('{{ game.id|escapejs }}',
49
- '{{ game.game_class.name|escapejs }}',
50
- '{{ worksheet.id|escapejs }}')">
51
- <p class="dropdown-menu__option__text">{{ worksheet.id }} - {{ worksheet.name }}</p>
52
- </a>
53
- {% endif %}
54
- </li>
55
- {% endfor %}
56
- {% for worksheet in incomplete_worksheets %}
57
- <li class="dropdown-menu__option">
58
- <a class="button button--small disabled">
59
- <p class="dropdown-menu__option__text">{{ worksheet.id }} - {{ worksheet.name }}</p>
60
- </a>
61
- </li>
62
- {% endfor %}
63
- </ul>
64
- </div>
65
- </div>
66
- </td>
67
- <td>
68
- <div class="games-table__buttons">
69
- <a class="button button--small button--primary" href="{% url base_url id=game.id %}">Play</a>
70
- </div>
71
- </td>
72
- <td class="cell-center">
73
- <input type="checkbox" name="game_ids" id="game_{{ game.id }}" value="{{ game.id }}" data-class-name="{{ game.game_class.name }}">
74
- </td>
75
- </tr>
76
- {% endfor %}
77
- </table>
78
- <button onclick="clickDeleteGames()" class="button button--primary button--primary--danger button--icon pull-right" id="deleteGamesButton">
79
- Delete class<span class="iconify" data-icon="mdi:delete-outline"></span>
80
- </button>
81
- {% else %}
82
- <p>It doesn't look like you have any games created. To create a game, use the 'Select class' button above.</p>
83
- {% endif %}
@@ -1,9 +0,0 @@
1
- <div class="form__checkbox">
2
- <div class="form__checkbox-input">
3
- {{ is_over_required_age }}
4
- </div>
5
- <p class="semi-bold">
6
- Please confirm that you are over 13 years old. If you are under 13 years old you will need to ask a parent or
7
- guardian to register for you.
8
- </p>
9
- </div>
@@ -1,64 +0,0 @@
1
- {% extends 'portal/base.html' %}
2
- {% load static %}
3
- {% load app_tags character_list_tags %}
4
-
5
- {% block subNav %}
6
- <section class="banner banner--independent-student row mx-0">
7
- <div>
8
- <h1 class="banner__text--primary">Welcome, {{ user|make_into_username }}</h1>
9
- <h4>This is where you can access your games</h4>
10
- </div>
11
- </section>
12
- {% endblock subNav %}
13
-
14
- {% block content %}
15
- <div id="play_dashboard_page">
16
- <div class="background container">
17
- <section><h4>Your games</h4></section>
18
- <div class="grid-games col-center col-sm-4">
19
- <div class="card">
20
- <div class="card__images">
21
- <img title="Rapid Router" alt="Rapid Router" class="card__image" src="{% static 'portal/img/RR_logo_green.svg' %}">
22
- </div>
23
- <div class="card__text">
24
- <h5 class="card__title">Rapid Router</h5>
25
- <p>Rapid Router guides you, and makes learning to code easy and great fun. Using Blockly, you can
26
- advance through the levels to become an Ocado delivery hero.</p>
27
- <div class="button-group">
28
- <a href="{% url 'levels'%}" class="button button--primary">Play</a>
29
- </div>
30
- </div>
31
- </div>
32
- </div>
33
- </div>
34
- <div class="background background--primary">
35
- <div class="container">
36
- <div class="col-center text-center col-sm-9">
37
- <section><img title="Rapid Router logo" alt="Rapid Router logo" src="{% static 'portal/img/RR_logo_simple.png' %}"></section>
38
- <h4>You have completed {{ num_completed }} Rapid Router level{{ num_completed|pluralize }}!</h4>
39
- <h4>You have {{ num_top_scores }} top score{{ num_top_scores|pluralize }}!</h4>
40
- <h4>You have a score of {{ total_score }}. There are {{ total_available_score }} available points.</h4>
41
- </div>
42
- </div>
43
- </div>
44
- <div class="background container">
45
- <section>
46
- <div class="row">
47
- <img title="Kurono logo" alt="Kurono logo" class="col-xs-offset-3 col-sm-offset-4 col-xs-6 col-sm-4"
48
- src="{% static 'portal/img/kurono_logo.svg' %}">
49
- </div>
50
- <h4>Kurono is only available as part of a school or club. Your teacher, parent or guardian can set up
51
- a club for you and create a class.</h4>
52
- <video autoplay muted loop class="col-xs-12 video--aimmo--play-online">
53
- <source src={% static 'portal/video/aimmo_play_now_background_video.mp4' %}>
54
- </video>
55
- </section>
56
- </div>
57
- <div class="background background--primary">
58
- <div class="container">
59
- <h4 class="text-center">Meet the characters</h4>
60
- {% character_list %}
61
- </div>
62
- </div>
63
- </div>
64
- {% endblock %}
@@ -1,63 +0,0 @@
1
- {% extends 'portal/base.html' %}
2
- {% load static %}
3
- {% load app_tags banner_tags hero_card_tags card_list_tags character_list_tags %}
4
-
5
- {% block subNav %}
6
- {% banner banner_name="BANNER" %}
7
- {% endblock subNav %}
8
-
9
- {% block content %}
10
- {% if not user|is_independent_student %}
11
- {% if HERO_CARD %}
12
- <div class="background container">
13
- {% hero_card hero_card_name="HERO_CARD" %}
14
- </div>
15
-
16
- <div class="background container">
17
- {% card_list %}
18
- </div>
19
- {% else %}
20
- <div class="background text-center container">
21
- <h4>My Games</h4>
22
- <p>Oh no! It doesn’t look like you have access to any games, yet.<br>
23
- You’ll need to ask your teacher to set some up.</p>
24
- </div>
25
- {% endif %}
26
-
27
- <div class="background background--primary">
28
- <div class="container">
29
- <div class="grid">
30
- <div>
31
- <h5 class="grid-item__title">User Guide</h5>
32
- <p class="grid-item__expand">Find out more about the game and learn the basics for using the code editor and game map.</p>
33
- <div class="button-group button-group__icon">
34
- <a href="https://code-for-life.gitbook.io/learning-resources/student-challenges/student-user-guide" class="button button--primary">
35
- User Guide<span class="material-icons-outlined">arrow_forward_ios</span>
36
- </a>
37
- </div>
38
- </div>
39
- <div>
40
- <h5 class="grid-item__title">Cheat Sheet</h5>
41
- <p class="grid-item__expand">This cheat sheet will give you what you need to communicate with Kurono in Python.</p>
42
- <div class="button-group button-group__icon">
43
- <a href="https://code-for-life.gitbook.io/learning-resources/student-challenges/kurono-cheat-sheet" class="button button--primary">
44
- Cheat Sheet<span class="material-icons-outlined">arrow_forward_ios</span>
45
- </a>
46
- </div>
47
- </div>
48
- </div>
49
- </div>
50
- </div>
51
- <div class="background container">
52
- <h4 class="text-center">Meet the characters</h4>
53
- {% character_list %}
54
- </div>
55
- {% else %}
56
- <div class="background text-center container">
57
- <h4>My Games</h4>
58
- <p>Hi there! 👋 We are sorry, but Kurono is designed to be used in a classroom, and therefore it is not
59
- available to independent students at this time.</p>
60
- </div>
61
- {% endif %}
62
-
63
- {% endblock content %}