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.
- cfl_common/common/__init__.py +1 -0
- cfl_common/common/app_settings.py +66 -0
- cfl_common/common/apps.py +6 -0
- cfl_common/common/context_processors.py +9 -0
- cfl_common/common/csp_config.py +85 -0
- cfl_common/common/helpers/__init__.py +0 -0
- cfl_common/common/helpers/data_migration_loader.py +42 -0
- cfl_common/common/helpers/emails.py +393 -0
- cfl_common/common/helpers/generators.py +52 -0
- cfl_common/common/helpers/organisation.py +10 -0
- cfl_common/common/mail.py +201 -0
- cfl_common/common/migrations/0001_initial.py +240 -0
- cfl_common/common/migrations/0002_emailverification.py +55 -0
- cfl_common/common/migrations/0003_aimmocharacter.py +31 -0
- cfl_common/common/migrations/0004_add_aimmocharacters.py +17 -0
- cfl_common/common/migrations/0005_add_worksheets.py +8 -0
- cfl_common/common/migrations/0006_update_aimmo_character_image_path.py +17 -0
- cfl_common/common/migrations/0007_add_pdf_names_to_first_two_worksheets.py +8 -0
- cfl_common/common/migrations/0008_unlock_worksheet_3.py +11 -0
- cfl_common/common/migrations/0009_add_blocked_time_to_teacher_and_student.py +24 -0
- cfl_common/common/migrations/0010_remove_teacher_title.py +18 -0
- cfl_common/common/migrations/0011_student_login_id.py +18 -0
- cfl_common/common/migrations/0012_usersession.py +39 -0
- cfl_common/common/migrations/0013_class_school.py +42 -0
- cfl_common/common/migrations/0014_login_type.py +29 -0
- cfl_common/common/migrations/0015_dailyactivity.py +31 -0
- cfl_common/common/migrations/0016_joinreleasestudent.py +42 -0
- cfl_common/common/migrations/0017_copy_email_to_username.py +18 -0
- cfl_common/common/migrations/0018_update_aimmo_character_image_path.py +15 -0
- cfl_common/common/migrations/0019_aimmocharacter_alt.py +16 -0
- cfl_common/common/migrations/0020_class_is_active_and_null_access_code.py +23 -0
- cfl_common/common/migrations/0021_school_is_active.py +28 -0
- cfl_common/common/migrations/0022_school_cleanup.py +29 -0
- cfl_common/common/migrations/0023_userprofile_aimmo_badges.py +22 -0
- cfl_common/common/migrations/0024_teacher_invited_by.py +25 -0
- cfl_common/common/migrations/0025_schoolteacherinvitation.py +47 -0
- cfl_common/common/migrations/0026_teacher_remove_join_request.py +22 -0
- cfl_common/common/migrations/0027_class_created_by.py +25 -0
- cfl_common/common/migrations/0028_coding_club_downloads.py +23 -0
- cfl_common/common/migrations/0029_dynamicelement.py +22 -0
- cfl_common/common/migrations/0030_add_maintenance_banner.py +25 -0
- cfl_common/common/migrations/0031_improve_admin_panel.py +56 -0
- cfl_common/common/migrations/0032_dailyactivity_level_control_submits.py +18 -0
- cfl_common/common/migrations/0033_password_reset_tracking_fields.py +23 -0
- cfl_common/common/migrations/0034_dailyactivity_daily_school_student_lockout_reset.py +18 -0
- cfl_common/common/migrations/0035_rename_lockout_fields.py +27 -0
- cfl_common/common/migrations/0036_rename_awaiting_email_verification_userprofile_is_verified.py +17 -0
- cfl_common/common/migrations/0037_migrate_email_verification.py +21 -0
- cfl_common/common/migrations/0038_delete_emailverification.py +16 -0
- cfl_common/common/migrations/0039_copy_email_to_username.py +18 -0
- cfl_common/common/migrations/0040_school_county.py +18 -0
- cfl_common/common/migrations/0041_populate_gb_counties.py +27 -0
- cfl_common/common/migrations/0042_totalactivity.py +25 -0
- cfl_common/common/migrations/0043_add_total_activity.py +30 -0
- cfl_common/common/migrations/0044_update_activity_models.py +33 -0
- cfl_common/common/migrations/0045_otp.py +23 -0
- cfl_common/common/migrations/0046_alter_school_country.py +19 -0
- cfl_common/common/migrations/0047_delete_school_postcode.py +16 -0
- cfl_common/common/migrations/0048_unique_school_names.py +42 -0
- cfl_common/common/migrations/0049_anonymise_orphan_users.py +29 -0
- cfl_common/common/migrations/0050_anonymise_orphan_schools.py +30 -0
- cfl_common/common/migrations/0051_verify_returning_users.py +26 -0
- cfl_common/common/migrations/0052_add_cse_fields.py +68 -0
- cfl_common/common/migrations/0053_clean_class_data.py +24 -0
- cfl_common/common/migrations/0054_delete_aimmo_models.py +20 -0
- cfl_common/common/migrations/0055_alter_schoolteacherinvitation_token.py +18 -0
- cfl_common/common/migrations/0056_set_non_school_teachers_as_non_admins.py +25 -0
- cfl_common/common/migrations/0057_teacher_teacher__is_admin.py +19 -0
- cfl_common/common/migrations/0058_userprofile_google_refresh_token_and_more.py +24 -0
- cfl_common/common/migrations/__init__.py +0 -0
- cfl_common/common/models.py +557 -0
- cfl_common/common/permissions.py +84 -0
- cfl_common/common/tests/__init__.py +0 -0
- cfl_common/common/tests/test_migration_anonymise_orphan_schools.py +30 -0
- cfl_common/common/tests/test_migration_anonymise_orphan_users.py +30 -0
- cfl_common/common/tests/test_migration_blocked_time.py +15 -0
- cfl_common/common/tests/test_migration_remove_teacher_title.py +13 -0
- cfl_common/common/tests/test_migration_unique_school_names.py +33 -0
- cfl_common/common/tests/test_migration_verify_returning_users.py +59 -0
- cfl_common/common/tests/test_models.py +87 -0
- cfl_common/common/tests/utils/__init__.py +0 -0
- cfl_common/common/tests/utils/classes.py +38 -0
- cfl_common/common/tests/utils/email.py +67 -0
- cfl_common/common/tests/utils/organisation.py +41 -0
- cfl_common/common/tests/utils/student.py +123 -0
- cfl_common/common/tests/utils/teacher.py +73 -0
- cfl_common/common/tests/utils/user.py +27 -0
- cfl_common/common/utils.py +56 -0
- cfl_common/setup.py +61 -0
- codeforlife_portal-8.9.9.dist-info/METADATA +226 -0
- {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/RECORD +341 -238
- {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/WHEEL +1 -1
- codeforlife_portal-8.9.9.dist-info/licenses/LICENSE.md +3 -0
- {codeforlife_portal-5.32.2.dist-info → codeforlife_portal-8.9.9.dist-info}/top_level.txt +1 -0
- deploy/middleware/maintenance.py +25 -0
- deploy/middleware/screentime_warning.py +29 -0
- deploy/middleware/security.py +5 -6
- deploy/middleware/session_timeout.py +31 -0
- deploy/middleware/tmp_basic_auth.py +41 -0
- example_project/portal_test_settings.py +239 -0
- example_project/settings.py +156 -17
- example_project/urls.py +5 -6
- portal/__init__.py +1 -1
- portal/admin.py +142 -29
- portal/app_settings.py +10 -7
- portal/forms/dotmailer.py +6 -4
- portal/forms/invite_teacher.py +19 -10
- portal/forms/organisation.py +137 -68
- portal/forms/play.py +53 -98
- portal/forms/registration.py +70 -164
- portal/forms/teach.py +147 -121
- portal/handlers.py +1 -2
- portal/helpers/decorators.py +30 -10
- portal/helpers/password.py +86 -47
- portal/helpers/ratelimit.py +32 -15
- portal/helpers/regexes.py +5 -0
- portal/helpers/request_handlers.py +10 -0
- portal/migrations/0044_auto_20150430_0959.py +6 -2
- portal/mixins/__init__.py +1 -0
- portal/mixins/cron_mixin.py +12 -0
- portal/permissions/__init__.py +1 -0
- portal/permissions/is_cron_request_from_google.py +14 -0
- portal/static/portal/img/10_years_anniversary.png +0 -0
- portal/static/portal/img/RR_logo_grass_background.png +0 -0
- portal/static/portal/img/coding_club_hero.jpg +0 -0
- portal/static/portal/img/coding_club_python_pack.png +0 -0
- portal/static/portal/img/facebook.png +0 -0
- portal/static/portal/img/gitbook.png +0 -0
- portal/static/portal/img/howe_dell_1.png +0 -0
- portal/static/portal/img/howe_dell_2.png +0 -0
- portal/static/portal/img/howe_dell_3.png +0 -0
- portal/static/portal/img/logo_cfl.png +0 -0
- portal/static/portal/img/logo_cfl_powered.svg +35 -0
- portal/static/portal/img/logo_cfl_reminder_cards.jpg +0 -0
- portal/static/portal/img/logo_ocado_group.png +0 -0
- portal/static/portal/img/logo_python_den.svg +21 -0
- portal/static/portal/img/long_europe_map.png +0 -0
- portal/static/portal/img/python_den.png +0 -0
- portal/static/portal/img/python_den_banner.svg +26 -0
- portal/static/portal/img/rapid_router_landing_hero.png +0 -0
- portal/static/portal/img/rr_advanced.png +0 -0
- portal/static/portal/img/ten_year_map_pin.svg +1 -0
- portal/static/portal/img/thumbnail_educate_rapid_router.png +0 -0
- portal/static/portal/img/thumbnail_educate_resources.png +0 -0
- portal/static/portal/img/thumbnail_play_rapid_router.png +0 -0
- portal/static/portal/img/thumbnail_python_den.png +0 -0
- portal/static/portal/img/twitter.png +0 -0
- portal/static/portal/js/carouselCards.js +25 -0
- portal/static/portal/js/common.js +96 -1
- portal/static/portal/js/independentLogin.js +16 -0
- portal/static/portal/js/independentRegistration.js +86 -0
- portal/static/portal/js/levelControl.js +77 -0
- portal/static/portal/js/lib/jquery.min.js +2 -0
- portal/static/portal/js/organisation_manage.js +142 -14
- portal/static/portal/js/passwordStrength.js +154 -64
- portal/static/portal/js/resetPassword.js +23 -0
- portal/static/portal/js/riveted.min.js +238 -239
- portal/static/portal/js/school.js +13 -0
- portal/static/portal/js/studentLogin.js +16 -0
- portal/static/portal/js/teacherEditStudent.js +23 -0
- portal/static/portal/js/teacherLogin.js +16 -0
- portal/static/portal/js/tenYearMap.js +14 -0
- portal/static/portal/sass/colorbox.scss +0 -1
- portal/static/portal/sass/modules/_colours.scss +1 -0
- portal/static/portal/sass/modules/_levels.scss +1 -1
- portal/static/portal/sass/modules/_mixins.scss +21 -0
- portal/static/portal/sass/partials/_banners.scss +4 -177
- portal/static/portal/sass/partials/_buttons.scss +12 -15
- portal/static/portal/sass/partials/_carousel.scss +129 -0
- portal/static/portal/sass/partials/_footer.scss +21 -22
- portal/static/portal/sass/partials/_forms.scss +60 -5
- portal/static/portal/sass/partials/_grids.scss +34 -61
- portal/static/portal/sass/partials/_header.scss +28 -20
- portal/static/portal/sass/partials/_images.scss +292 -39
- portal/static/portal/sass/partials/_popup.scss +18 -15
- portal/static/portal/sass/partials/_tables.scss +12 -20
- portal/static/portal/sass/partials/_text.scss +6 -10
- portal/static/portal/sass/styles.scss +0 -1
- portal/static/portal/video/code for life .pdf +0 -0
- portal/strings/about.py +5 -0
- portal/strings/coding_club.py +9 -0
- portal/strings/play.py +6 -5
- portal/strings/teach.py +1 -1
- portal/strings/teacher_resources.py +2 -8
- portal/strings/ten_year_map.py +13 -0
- portal/templates/403.html +2 -2
- portal/templates/404.html +1 -1
- portal/templates/500.html +2 -2
- portal/templates/{captcha → django_recaptcha}/includes/js_v2_invisible.html +3 -3
- portal/templates/{captcha → django_recaptcha}/widget_v2_invisible.html +2 -2
- portal/templates/email.html +4 -2
- portal/templates/maintenance.html +34 -0
- portal/templates/portal/about.html +94 -62
- portal/templates/portal/base.html +176 -152
- portal/templates/portal/coding_club.html +100 -0
- portal/templates/portal/contribute.html +56 -52
- portal/templates/portal/email_invitation_sent.html +1 -1
- portal/templates/portal/email_style_template.html +374 -0
- portal/templates/portal/email_verification_failed.html +1 -1
- portal/templates/portal/email_verification_needed.html +9 -9
- portal/templates/portal/form_shapes.html +20 -8
- portal/templates/portal/getinvolved.html +6 -6
- portal/templates/portal/home.html +35 -10
- portal/templates/portal/home_learning.html +19 -19
- portal/templates/portal/locked_out.html +0 -1
- portal/templates/portal/locked_out_school_student.html +16 -0
- portal/templates/portal/login/independent_student.html +31 -15
- portal/templates/portal/login/student.html +10 -7
- portal/templates/portal/login/student_class_code.html +7 -4
- portal/templates/portal/login/teacher.html +34 -17
- portal/templates/portal/partials/banner.html +18 -4
- portal/templates/portal/partials/benefits.html +1 -1
- portal/templates/portal/partials/card_list.html +34 -24
- portal/templates/portal/partials/character_list.html +5 -5
- portal/templates/portal/partials/cookie_list.html +161 -0
- portal/templates/portal/partials/delete_popup.html +18 -0
- portal/templates/portal/partials/footer.html +57 -26
- portal/templates/portal/partials/header.html +118 -117
- portal/templates/portal/partials/hero_card.html +4 -3
- portal/templates/portal/partials/info_popup.html +3 -3
- portal/templates/portal/partials/invite_admin_teacher.html +23 -0
- portal/templates/portal/partials/popup.html +7 -2
- portal/templates/portal/partials/register_newsletter_tickbox.html +2 -5
- portal/templates/portal/partials/screentime_popup.html +14 -0
- portal/templates/portal/partials/service_unavailable_popup.html +17 -0
- portal/templates/portal/partials/session_popup.html +19 -0
- portal/templates/portal/play/student_dashboard.html +42 -29
- portal/templates/portal/play/student_edit_account.html +64 -9
- portal/templates/portal/play.html +61 -41
- portal/templates/portal/privacy_notice.html +697 -0
- portal/templates/portal/register.html +122 -92
- portal/templates/portal/reset_password.html +20 -40
- portal/templates/portal/reset_password_confirm.html +9 -4
- portal/templates/portal/reset_password_email_sent.html +15 -13
- portal/templates/portal/teach/base_registering.html +1 -1
- portal/templates/portal/teach/class.html +4 -6
- portal/templates/portal/teach/dashboard.html +212 -117
- portal/templates/portal/teach/invited.html +90 -0
- portal/templates/portal/teach/onboarding_classes.html +5 -3
- portal/templates/portal/teach/onboarding_print.html +1 -1
- portal/templates/portal/teach/onboarding_school.html +26 -139
- portal/templates/portal/teach/onboarding_students.html +1 -1
- portal/templates/portal/teach/teacher_dismiss_students.html +73 -55
- portal/templates/portal/teach/teacher_edit_class.html +168 -11
- portal/templates/portal/teach/teacher_edit_student.html +12 -5
- portal/templates/portal/teach/teacher_move_all_classes.html +25 -38
- portal/templates/portal/teach/teacher_move_students_to_class.html +1 -1
- portal/templates/portal/teach.html +61 -42
- portal/templates/portal/ten_year_map.html +147 -0
- portal/templates/portal/terms.html +191 -42
- portal/templates/two_factor/core/login.html +71 -59
- portal/templates/two_factor/core/setup.html +58 -49
- portal/templates/two_factor/profile/disable.html +1 -1
- portal/templates/two_factor/profile/profile.html +35 -17
- portal/templatetags/app_tags.py +59 -84
- portal/templatetags/card_list_tags.py +0 -4
- portal/tests/base_test.py +14 -3
- portal/tests/conftest.py +0 -15
- portal/tests/migrations/test_migration_make_portaladmin_teacher.py +2 -6
- portal/tests/migrations/test_migration_preview_users.py +3 -9
- portal/tests/migrations/test_migration_remove_guardian.py +1 -3
- portal/tests/migrations/test_migration_use_common_models.py +2 -6
- portal/tests/migrations/test_migration_verify_portaladmin.py +1 -3
- portal/tests/pageObjects/portal/admin/admin_base_page.py +0 -21
- portal/tests/pageObjects/portal/base_page.py +16 -26
- portal/tests/pageObjects/portal/email_verification_needed_page.py +3 -2
- portal/tests/pageObjects/portal/game_page.py +12 -19
- portal/tests/pageObjects/portal/home_page.py +13 -15
- portal/tests/pageObjects/portal/independent_login_page.py +13 -17
- portal/tests/pageObjects/portal/password_reset_form_page.py +20 -4
- portal/tests/pageObjects/portal/password_reset_page.py +25 -0
- portal/tests/pageObjects/portal/play/account_page.py +18 -27
- portal/tests/pageObjects/portal/play/dashboard_page.py +4 -4
- portal/tests/pageObjects/portal/play/join_school_or_club_page.py +8 -10
- portal/tests/pageObjects/portal/play/play_base_page.py +5 -3
- portal/tests/pageObjects/portal/signup_page.py +28 -59
- portal/tests/pageObjects/portal/student_login_class_code.py +6 -9
- portal/tests/pageObjects/portal/student_login_page.py +6 -8
- portal/tests/pageObjects/portal/teach/add_independent_student_to_class_page.py +3 -3
- portal/tests/pageObjects/portal/teach/added_independent_student_to_class_page.py +3 -1
- portal/tests/pageObjects/portal/teach/class_page.py +36 -13
- portal/tests/pageObjects/portal/teach/dashboard_page.py +43 -84
- portal/tests/pageObjects/portal/teach/dismiss_students_page.py +7 -5
- portal/tests/pageObjects/portal/teach/edit_student_page.py +10 -8
- portal/tests/pageObjects/portal/teach/move_class_page.py +5 -10
- portal/tests/pageObjects/portal/teach/move_classes_page.py +4 -2
- portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py +4 -2
- portal/tests/pageObjects/portal/teach/move_students_page.py +6 -13
- portal/tests/pageObjects/portal/teach/onboarding_classes_page.py +5 -3
- portal/tests/pageObjects/portal/teach/onboarding_organisation_page.py +11 -49
- portal/tests/pageObjects/portal/teach/onboarding_student_list_page.py +7 -12
- portal/tests/pageObjects/portal/teach/onboarding_students_page.py +4 -27
- portal/tests/pageObjects/portal/teach/teach_base_page.py +6 -4
- portal/tests/pageObjects/portal/teacher_login_page.py +10 -16
- portal/tests/selenium_test_case.py +3 -43
- portal/tests/snapshots/snap_test_partials.py +11 -165
- portal/tests/test_2FA.py +15 -33
- portal/tests/test_admin.py +15 -97
- portal/tests/test_api.py +212 -73
- portal/tests/test_captcha_forms.py +2 -2
- portal/tests/test_class.py +374 -24
- portal/tests/test_emails.py +83 -20
- portal/tests/{test_newsletter_footer.py → test_global_forms.py} +5 -5
- portal/tests/test_helper_methods.py +30 -0
- portal/tests/test_independent_student.py +255 -144
- portal/tests/test_invite_teacher.py +318 -10
- portal/tests/test_middleware.py +138 -15
- portal/tests/test_organisation.py +78 -262
- portal/tests/test_partials.py +0 -88
- portal/tests/test_ratelimit.py +218 -36
- portal/tests/test_school_student.py +35 -40
- portal/tests/test_security.py +12 -31
- portal/tests/test_teacher.py +425 -325
- portal/tests/test_teacher_student.py +103 -91
- portal/tests/test_views.py +900 -76
- portal/tests/utils/classes.py +2 -2
- portal/tests/utils/messages.py +13 -28
- portal/urls.py +237 -164
- portal/views/admin.py +0 -332
- portal/views/api.py +82 -68
- portal/views/cron/__init__.py +1 -0
- portal/views/cron/user.py +322 -0
- portal/views/dotmailer.py +9 -1
- portal/views/email.py +33 -77
- portal/views/google_analytics.py +28 -0
- portal/views/home.py +126 -97
- portal/views/legal.py +13 -0
- portal/views/login/independent_student.py +5 -5
- portal/views/login/student.py +51 -14
- portal/views/login/teacher.py +2 -6
- portal/views/organisation.py +20 -189
- portal/views/registration.py +97 -17
- portal/views/student/edit_account_details.py +99 -72
- portal/views/student/play.py +81 -62
- portal/views/teacher/dashboard.py +421 -149
- portal/views/teacher/teach.py +226 -177
- portal/views/two_factor/__init__.py +0 -0
- portal/views/two_factor/core.py +28 -0
- portal/views/two_factor/form.py +7 -0
- portal/views/two_factor/profile.py +11 -0
- codeforlife_portal-5.32.2.dist-info/LICENSE.md +0 -577
- codeforlife_portal-5.32.2.dist-info/METADATA +0 -38
- deploy/permissions.py +0 -2
- example_project/manage.py +0 -10
- portal/autoconfig.py +0 -140
- portal/csp_config.py +0 -60
- portal/forms/add_game.py +0 -33
- portal/helpers/location.py +0 -121
- portal/static/portal/img/kurono_hero.jpg +0 -0
- portal/static/portal/img/kurono_landing_hero.png +0 -0
- portal/static/portal/img/kurono_logo.svg +0 -1
- portal/static/portal/img/kurono_logo_grey_background.svg +0 -1
- portal/static/portal/img/kurono_logo_mark.svg +0 -1
- portal/static/portal/img/kurono_resources_hero.jpg +0 -0
- portal/static/portal/img/kurono_story.png +0 -0
- portal/static/portal/img/ocado-swirl.svg +0 -22
- portal/static/portal/img/thumbnail_educate_kurono.png +0 -0
- portal/static/portal/img/thumbnail_educate_resources_and_progress_tracking.png +0 -0
- portal/static/portal/img/thumbnail_kurono_resources.png +0 -0
- portal/static/portal/img/thumbnail_play_kurono.png +0 -0
- portal/static/portal/img/x_close_video.png +0 -0
- portal/static/portal/js/aimmoGame.js +0 -106
- portal/static/portal/js/deleteWorkspaces.js +0 -14
- portal/static/portal/js/fuzzySchoolLookup.js +0 -46
- portal/static/portal/js/lib/jquery-3.5.1.min.js +0 -2
- portal/static/portal/js/lib/jquery-ui-1.12.1.min.js +0 -13
- portal/static/portal/sass/partials/_videos.scss +0 -10
- portal/static/portal/video/aimmo_play_now_background_video.mp4 +0 -0
- portal/strings/student_aimmo_dashboard.py +0 -6
- portal/templates/portal/admin/aggregated_data.html +0 -35
- portal/templates/portal/admin/map.html +0 -70
- portal/templates/portal/mouseflow.html +0 -9
- portal/templates/portal/partials/aimmo_games_table.html +0 -83
- portal/templates/portal/partials/register_over_required_age_tickbox.html +0 -9
- portal/templates/portal/play/independent_student_dashboard.html +0 -64
- portal/templates/portal/play/student_aimmo_dashboard.html +0 -63
- portal/templates/portal/privacy_policy.html +0 -483
- portal/templates/portal/reset_password_email.html +0 -9
- portal/templates/portal/teach/invite.html +0 -25
- portal/templates/portal/teach/teacher_aimmo_dashboard.html +0 -95
- portal/templates/portal/teach/teacher_resources.html +0 -68
- portal/templatetags/character_list_tags.py +0 -16
- portal/tests/pageObjects/portal/kurono_teacher_dashboard_page.py +0 -49
- portal/tests/pageObjects/portal/student_password_reset_form_page.py +0 -23
- portal/tests/pageObjects/portal/teach/onboarding_revoke_request_page.py +0 -20
- portal/tests/pageObjects/portal/teacher_password_reset_form_page.py +0 -23
- portal/tests/test_aimmo_dashboards.py +0 -172
- portal/tests/test_location.py +0 -217
- portal/tests/utils/aimmo_games.py +0 -30
- portal/views/aimmo/dashboard.py +0 -119
- portal/views/privacy_policy.py +0 -9
- portal/views/teacher/teacher_resources.py +0 -42
- {portal/views/aimmo → cfl_common}/__init__.py +0 -0
|
@@ -9,51 +9,38 @@
|
|
|
9
9
|
{% block content %}
|
|
10
10
|
<div id="move_all_classes_page"></div>
|
|
11
11
|
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{%
|
|
27
|
-
<table class="header-primary data-primary">
|
|
12
|
+
<div class="background container">
|
|
13
|
+
<section>
|
|
14
|
+
<h4>Move all classes for teacher {{ original_teacher.new_user|make_into_username }}</h4>
|
|
15
|
+
</section>
|
|
16
|
+
<p><a href="{% url 'dashboard' %}" class="button--menu button--menu--enabled">< Back to dashboard</a></p>
|
|
17
|
+
<p>Please specify which teacher you would like the classes below to be moved to.</p>
|
|
18
|
+
|
|
19
|
+
<form method="post">
|
|
20
|
+
{% csrf_token %}
|
|
21
|
+
<table class="header-primary data-primary">
|
|
22
|
+
<tr>
|
|
23
|
+
<th><p>Class name</p></th>
|
|
24
|
+
<th><p>New teacher</p></th>
|
|
25
|
+
</tr>
|
|
26
|
+
{% for class in classes %}
|
|
28
27
|
<tr>
|
|
29
|
-
<
|
|
30
|
-
<th><p>New Teacher</p></th>
|
|
31
|
-
</tr>
|
|
32
|
-
{% for class in classes %}
|
|
33
|
-
<tr>
|
|
34
|
-
<td><p><small>{{ class.name }} ({{ class.access_code }})</small></p></td>
|
|
28
|
+
<td><p><small>{{ class.name }}</small></p></td>
|
|
35
29
|
<td>
|
|
36
30
|
<select class="wide" name="{{ class.access_code }}">
|
|
37
31
|
{% for teacher in teachers %}
|
|
38
|
-
|
|
32
|
+
<option value="{{ teacher.id }}">
|
|
33
|
+
{{ teacher.new_user.first_name }} {{ teacher.new_user.last_name }}</option>
|
|
39
34
|
{% endfor %}
|
|
40
35
|
</select>
|
|
41
36
|
</td>
|
|
42
37
|
</tr>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</div>
|
|
38
|
+
{% endfor %}
|
|
39
|
+
</table>
|
|
40
|
+
<div class="button-group">
|
|
41
|
+
<a class="button button--secondary button--secondary--dark" href="{% url 'dashboard' %}">Cancel</a>
|
|
42
|
+
<button type="submit" id="move_classes_button" class="button button--primary">{{ submit_button_text }}</button>
|
|
43
|
+
</div>
|
|
44
|
+
</form>
|
|
51
45
|
</div>
|
|
52
|
-
|
|
53
|
-
<script type="text/javascript">
|
|
54
|
-
$(document).ready(function(){
|
|
55
|
-
toggleStickySubnav($('.banner').outerHeight() + $('.menu').outerHeight());
|
|
56
|
-
});
|
|
57
|
-
</script>
|
|
58
|
-
|
|
59
46
|
{% endblock %}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
<div class="background">
|
|
15
15
|
<div class="container">
|
|
16
|
-
<p><a href="{% url 'view_class' old_class.access_code %}" class="button--menu button--menu--enabled"><
|
|
16
|
+
<p><a href="{% url 'view_class' old_class.access_code %}" class="button--menu button--menu--enabled">< Back to Edit class</a></p>
|
|
17
17
|
<p>Choose a class from the drop down menu below to move the student</p>
|
|
18
18
|
<h5>Students currently in destination class</h5>
|
|
19
19
|
|
|
@@ -23,33 +23,39 @@
|
|
|
23
23
|
<div class="carousel-inner" role="listbox">
|
|
24
24
|
<div class="item active">
|
|
25
25
|
<div class="col-sm-6 carousel-image-wrapper">
|
|
26
|
-
<img src="{% static 'portal/img/icon_step_by_step.png' %}"
|
|
26
|
+
<img src="{% static 'portal/img/icon_step_by_step.png' %}"
|
|
27
|
+
alt="Illustration of person climbing steps with flag">
|
|
27
28
|
</div>
|
|
28
29
|
<div class="col-sm-6 carousel-text">
|
|
29
30
|
<h5>
|
|
30
|
-
The step-by-step nature of Rapid Router
|
|
31
|
+
The step-by-step nature of Rapid Router
|
|
32
|
+
makes it simple for you and your students to
|
|
31
33
|
gain experience quickly.
|
|
32
34
|
</h5>
|
|
33
35
|
</div>
|
|
34
36
|
</div>
|
|
35
37
|
<div class="item">
|
|
36
38
|
<div class="col-sm-6 carousel-image-wrapper">
|
|
37
|
-
<img src="{% static 'portal/img/icon_uk_flag.png' %}"
|
|
39
|
+
<img src="{% static 'portal/img/icon_uk_flag.png' %}"
|
|
40
|
+
alt="Illustration of The Union Jack flag">
|
|
38
41
|
</div>
|
|
39
42
|
<div class="col-sm-6 carousel-text">
|
|
40
43
|
<h5>
|
|
41
|
-
Our resources are aligned to the UK National
|
|
42
|
-
|
|
44
|
+
Our resources are aligned to the UK National
|
|
45
|
+
computing curriculum, so you can gain the
|
|
46
|
+
knowledge and confidence you need.
|
|
43
47
|
</h5>
|
|
44
48
|
</div>
|
|
45
49
|
</div>
|
|
46
50
|
<div class="item">
|
|
47
51
|
<div class="col-sm-6 carousel-image-wrapper">
|
|
48
|
-
<img src="{% static 'portal/img/icon_tracking.png' %}"
|
|
52
|
+
<img src="{% static 'portal/img/icon_tracking.png' %}"
|
|
53
|
+
alt="Illustration of a progress chart">
|
|
49
54
|
</div>
|
|
50
55
|
<div class="col-sm-6 carousel-text">
|
|
51
56
|
<h5>
|
|
52
|
-
Easy to use teacher dashboard includes
|
|
57
|
+
Easy to use teacher dashboard includes
|
|
58
|
+
scores to track student progress as well as
|
|
53
59
|
comprehensive teaching resources.
|
|
54
60
|
</h5>
|
|
55
61
|
</div>
|
|
@@ -68,27 +74,30 @@
|
|
|
68
74
|
<div class="flex-grow-1">
|
|
69
75
|
<h4 class="mt-0">Resources and progress tracking</h4>
|
|
70
76
|
<p>
|
|
71
|
-
Once you've registered your personal details and logged
|
|
72
|
-
|
|
77
|
+
Once you've registered your personal details and logged
|
|
78
|
+
in, you'll be able to create your school or club, or
|
|
79
|
+
join other teachers at your institution.
|
|
73
80
|
</p>
|
|
74
81
|
<p>
|
|
75
|
-
You can sign up your class, download free teaching
|
|
76
|
-
|
|
77
|
-
|
|
82
|
+
You can sign up your class, download free teaching
|
|
83
|
+
packs, including sessions plans, pupil resources and
|
|
84
|
+
assessment tools and track pupils' progress. There are
|
|
85
|
+
even videos to help you and your class understand what
|
|
86
|
+
you'll be learning next.
|
|
78
87
|
</p>
|
|
79
88
|
</div>
|
|
80
89
|
<div>
|
|
81
|
-
<a href="{% url 'register' %}"
|
|
90
|
+
<a href="{% url 'register' %}"
|
|
91
|
+
class="button button--primary button-right-arrow">
|
|
82
92
|
Register now
|
|
83
93
|
</a>
|
|
84
94
|
</div>
|
|
85
95
|
</div>
|
|
86
96
|
<div class="col-sm-6">
|
|
87
|
-
<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
</a> -->
|
|
97
|
+
<a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdCZE3FuBgH5fHsGocKGv%2Fuploads%2FpNFqak7cyoAenDK1PEOZ%2FCode%20for%20Life%20-%20Programming%20teaching%20resources.mp4?alt=media" class="youtube">
|
|
98
|
+
<img src="{% static 'portal/img/thumbnail_educate_resources.png' %}"
|
|
99
|
+
alt="Image of Code for Life Resources on Gitbook with play button in bottom right corner">
|
|
100
|
+
</a>
|
|
92
101
|
</div>
|
|
93
102
|
</div>
|
|
94
103
|
</div>
|
|
@@ -98,26 +107,33 @@
|
|
|
98
107
|
<div class="container">
|
|
99
108
|
<div class="row d-flex">
|
|
100
109
|
<div class="col-sm-6">
|
|
101
|
-
<
|
|
110
|
+
<a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdCZE3FuBgH5fHsGocKGv%2Fuploads%2FrCbonCJjzNYlDTmvrPOA%2FCode%20for%20Life%20-%20Rapid%20Router%20for%20teachers.mp4?alt=media"
|
|
111
|
+
class="youtube">
|
|
112
|
+
<img src="{% static 'portal/img/thumbnail_educate_rapid_router.png' %}"
|
|
113
|
+
alt="Image of Rapid Router logo and game with play button in bottom right corner">
|
|
114
|
+
</a>
|
|
102
115
|
</div>
|
|
103
116
|
<div class="col-sm-6 d-flex flex-column">
|
|
104
117
|
<div class="flex-grow-1">
|
|
105
118
|
<h4 class="mt-0">Rapid router</h4>
|
|
106
119
|
<p>
|
|
107
|
-
Rapid Router is a fun and engaging education resource
|
|
108
|
-
|
|
120
|
+
Rapid Router is a fun and engaging education resource
|
|
121
|
+
that helps teach the first principles of computer
|
|
122
|
+
programming covered in the UK Computing curriculum.
|
|
109
123
|
</p>
|
|
110
124
|
<p>
|
|
111
|
-
Built on 'Blockly', an easy-to-use visual programming
|
|
112
|
-
|
|
125
|
+
Built on 'Blockly', an easy-to-use visual programming
|
|
126
|
+
language, Rapid Router enables teachers to monitor and
|
|
127
|
+
manage individual pupil progress and identify where more
|
|
128
|
+
support is required.
|
|
113
129
|
</p>
|
|
114
130
|
<p>
|
|
115
|
-
See how
|
|
116
|
-
<a href="https://
|
|
117
|
-
English national curriculum — the computer science strand
|
|
131
|
+
See how Rapid Router fits into
|
|
132
|
+
<a href="https://docs.codeforlife.education/national-curriculum-alignment" target="_blank">
|
|
133
|
+
the English national curriculum — the computer science strand
|
|
118
134
|
<span class="iconify" data-icon="mdi:open-in-new"></span></a>
|
|
119
135
|
and
|
|
120
|
-
<a href="https://
|
|
136
|
+
<a href="https://docs.codeforlife.education/national-curriculum-alignment-1" target="_blank">
|
|
121
137
|
the Scottish curriculum.
|
|
122
138
|
<span class="iconify" data-icon="mdi:open-in-new"></span>
|
|
123
139
|
</a>
|
|
@@ -138,28 +154,31 @@
|
|
|
138
154
|
<div class="row d-flex">
|
|
139
155
|
<div class="col-sm-6 d-flex flex-column">
|
|
140
156
|
<div class="flex-grow-1">
|
|
141
|
-
<h4 class="mt-0">
|
|
142
|
-
<p>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
</a>
|
|
157
|
+
<h4 class="mt-0">Python programming</h4>
|
|
158
|
+
<p>The Python Den is an exploration of Python
|
|
159
|
+
programming through a comprehensive course with free
|
|
160
|
+
lesson plans, videos and worksheets to support you in
|
|
161
|
+
teaching Python programming to your students. From
|
|
162
|
+
foundational syntax to advanced concepts like loops
|
|
163
|
+
and data manipulation, each session is tailored to
|
|
164
|
+
engage young learners.</p>
|
|
165
|
+
<p>We aim to provide a tried-and-tested, structured set
|
|
166
|
+
of lessons that you can use in your classroom, no
|
|
167
|
+
matter your own level of experience.
|
|
153
168
|
</p>
|
|
154
169
|
</div>
|
|
155
170
|
<div>
|
|
156
|
-
<a href="{% url '
|
|
157
|
-
|
|
171
|
+
<a href="{% url 'python_levels' %}"
|
|
172
|
+
class="button button--primary button-right-arrow">
|
|
173
|
+
Try out Python Den
|
|
158
174
|
</a>
|
|
159
175
|
</div>
|
|
160
176
|
</div>
|
|
161
177
|
<div class="col-sm-6">
|
|
162
|
-
<
|
|
178
|
+
<a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdCZE3FuBgH5fHsGocKGv%2Fuploads%2FB1XFzZC63IEYvYBzLFfC%2FPython_Den_teachers.mp4?alt=media" class="youtube">
|
|
179
|
+
<img src="{% static 'portal/img/thumbnail_python_den.png' %}"
|
|
180
|
+
alt="Python Den logo">
|
|
181
|
+
</a>
|
|
163
182
|
</div>
|
|
164
183
|
</div>
|
|
165
184
|
</div>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
{% extends 'portal/base.html' %}
|
|
2
|
+
{% load static %}
|
|
3
|
+
{% load app_tags banner_tags headline_tags %}
|
|
4
|
+
|
|
5
|
+
{% block subNav %}
|
|
6
|
+
{% banner banner_name="BANNER" %}
|
|
7
|
+
{% endblock subNav %}
|
|
8
|
+
|
|
9
|
+
{% block scripts %}
|
|
10
|
+
{{ block.super }}
|
|
11
|
+
<script defer type="text/javascript" src="{% static 'portal/js/tenYearMap.js' %}"></script>
|
|
12
|
+
{% endblock scripts %}
|
|
13
|
+
|
|
14
|
+
{% block content %}
|
|
15
|
+
|
|
16
|
+
<div class="background">
|
|
17
|
+
{% headline headline_name="HEADLINE" %}
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class="background container" id="map-container">
|
|
21
|
+
<section class="background background--primary">
|
|
22
|
+
<img title="world map" alt="World map" src="{% static 'portal/img/long_europe_map.png' %}" width="95%"/>
|
|
23
|
+
<button class="map-pin" id="hatfield" onclick="setActivePin('hatfield')" data-target="#carousel-ten-year-map" data-slide-to="0">
|
|
24
|
+
<map-pin id="hatfield-pin" />
|
|
25
|
+
</button>
|
|
26
|
+
<button class="map-pin" id="barcelona" onclick="setActivePin('barcelona')" data-target="#carousel-ten-year-map" data-slide-to="1">
|
|
27
|
+
<map-pin id="barcelona-pin" />
|
|
28
|
+
</button>
|
|
29
|
+
<button class="map-pin" id="krakow" onclick="setActivePin('krakow')" data-target="#carousel-ten-year-map" data-slide-to="2">
|
|
30
|
+
<map-pin id="krakow-pin" />
|
|
31
|
+
</button>
|
|
32
|
+
<button class="map-pin" id="sofia" onclick="setActivePin('sofia')" data-target="#carousel-ten-year-map" data-slide-to="3">
|
|
33
|
+
<map-pin id="sofia-pin" />
|
|
34
|
+
</button>
|
|
35
|
+
</section>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="background">
|
|
39
|
+
<div class="container">
|
|
40
|
+
<div class="row">
|
|
41
|
+
<div class="col-sm-12">
|
|
42
|
+
<div id="carousel-ten-year-map" class="carousel slide">
|
|
43
|
+
<ol class="carousel-indicators">
|
|
44
|
+
<li data-target="#carousel-ten-year-map" data-slide-to="0" class="active" onclick="setActivePin('hatfield')"></li>
|
|
45
|
+
<li data-target="#carousel-ten-year-map" data-slide-to="1" onclick="setActivePin('barcelona')"></li>
|
|
46
|
+
<li data-target="#carousel-ten-year-map" data-slide-to="2" onclick="setActivePin('krakow')"></li>
|
|
47
|
+
<li data-target="#carousel-ten-year-map" data-slide-to="3" onclick="setActivePin('sofia')"></li>
|
|
48
|
+
</ol>
|
|
49
|
+
|
|
50
|
+
<div class="carousel-inner" role="listbox">
|
|
51
|
+
<div class="item active" id="hatfield-carousel">
|
|
52
|
+
<div>
|
|
53
|
+
<div class="col-sm-6 carousel-column--images">
|
|
54
|
+
<div class="row carousel-image-wrapper">
|
|
55
|
+
<img src="{% static 'portal/img/howe_dell_1.png' %}" class="carousel-image carousel-image--column" alt="Code for Life volunteers outside Howe Dell Primary School">
|
|
56
|
+
</div>
|
|
57
|
+
<div class="row carousel-image-wrapper">
|
|
58
|
+
<img src="{% static 'portal/img/howe_dell_2.png' %}" class="carousel-image carousel-image--column" alt="CfL volunteers outside Howe Dell Primary School showing off their Code for Life T-shirts">
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="col-sm-6 carousel-text">
|
|
62
|
+
<h4 class="carousel-header">
|
|
63
|
+
<b>Howe Dell Primary School, Hatfield, UK</b>
|
|
64
|
+
</h4>
|
|
65
|
+
<h5>
|
|
66
|
+
July 2024
|
|
67
|
+
</h5>
|
|
68
|
+
<p>
|
|
69
|
+
We completed the UK leg of our world tour with an enthusiastic reception from Year 4 students at Howe Dell Primary School
|
|
70
|
+
in Hatfield. The pupils were captivated by our presentation on different types of robots and Ocado Group's automation
|
|
71
|
+
technology used in sorting and packing deliveries. They were then tasked with designing robots to solve problems, producing
|
|
72
|
+
creative concepts like robot childminders and homework helpers. Midway through, we introduced them to coding with Rapid Router,
|
|
73
|
+
explaining algorithms and letting them experiment with the levels. The students were thrilled about the competition for the
|
|
74
|
+
best robot design, which included a prize of a golden 3D printed medal. Teachers praised the engaging and educational workshop,
|
|
75
|
+
while Ocado volunteers found the experience rewarding and beneficial for developing their communication and teaching skills.
|
|
76
|
+
The children's designs were exceptional, making the judging process challenging, but ultimately a few standout innovations were
|
|
77
|
+
selected.
|
|
78
|
+
</p>
|
|
79
|
+
<div class="carousel-button">
|
|
80
|
+
<a href="https://www.linkedin.com/company/code-for-life-uk/posts/?feedView=all" target="_blank" class="button button--primary button-right-arrow">Learn more</a>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
<div>
|
|
85
|
+
<img src="{% static 'portal/img/howe_dell_3.png' %}" class="carousel-image"" alt="The three winners of Howe Dell Primary School's robot design challenge">
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="item" id="barcelona-carousel">
|
|
89
|
+
<div class="col-sm-6 carousel-image-wrapper">
|
|
90
|
+
<img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
|
|
91
|
+
</div>
|
|
92
|
+
<div class="col-sm-6 carousel-text">
|
|
93
|
+
<h5>
|
|
94
|
+
Barcelona
|
|
95
|
+
</h5>
|
|
96
|
+
<p>
|
|
97
|
+
Coming soon!
|
|
98
|
+
</p>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="item" id="krakow-carousel">
|
|
102
|
+
<div class="col-sm-6 carousel-image-wrapper">
|
|
103
|
+
<img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
|
|
104
|
+
</div>
|
|
105
|
+
<div class="col-sm-6 carousel-text">
|
|
106
|
+
<h5>
|
|
107
|
+
Kraków
|
|
108
|
+
</h5>
|
|
109
|
+
<p>
|
|
110
|
+
Coming soon!
|
|
111
|
+
</p>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
<div class="item" id="sofia-carousel">
|
|
115
|
+
<div class="col-sm-6 carousel-image-wrapper">
|
|
116
|
+
<img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
|
|
117
|
+
</div>
|
|
118
|
+
<div class="col-sm-6 carousel-text">
|
|
119
|
+
<h5>
|
|
120
|
+
Sofia
|
|
121
|
+
</h5>
|
|
122
|
+
<p>
|
|
123
|
+
Coming soon!
|
|
124
|
+
</p>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<script>
|
|
135
|
+
customElements.define("map-pin", class extends HTMLElement {
|
|
136
|
+
connectedCallback() {
|
|
137
|
+
setTimeout(() => {
|
|
138
|
+
this.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" height="40px" viewBox="0 0 24 24" width="40px" fill="#FFC709">
|
|
139
|
+
<path d="M0 0h24v24H0z" fill="none"/>
|
|
140
|
+
<path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
|
|
141
|
+
</svg>`
|
|
142
|
+
})
|
|
143
|
+
}
|
|
144
|
+
})
|
|
145
|
+
</script>
|
|
146
|
+
|
|
147
|
+
{% endblock content %}
|