codeforlife-portal 5.33.5__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.33.5.dist-info → codeforlife_portal-8.9.9.dist-info}/RECORD +339 -241
- {codeforlife_portal-5.33.5.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.33.5.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 +4 -2
- 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 +8 -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 -91
- 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 +96 -9
- 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 +235 -166
- portal/views/admin.py +0 -332
- portal/views/api.py +82 -48
- 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/core.py +22 -19
- portal/views/two_factor/profile.py +2 -2
- codeforlife_portal-5.33.5.dist-info/LICENSE.md +0 -577
- codeforlife_portal-5.33.5.dist-info/METADATA +0 -38
- deploy/permissions.py +0 -2
- example_project/manage.py +0 -10
- portal/autoconfig.py +0 -141
- 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
|
@@ -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
|
-
}
|
|
Binary file
|
|
@@ -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 %}
|