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,12 +9,20 @@ table {
|
|
|
9
9
|
@include _padding(2px, 10px, 2px, 10px);
|
|
10
10
|
min-width: 70px;
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
select {
|
|
14
|
+
margin: 0;
|
|
15
|
+
}
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
th {
|
|
15
19
|
@include _padding(5px, 10px, 5px, 10px);
|
|
16
20
|
font-weight: 500;
|
|
17
21
|
color: $color-text-secondary;
|
|
22
|
+
|
|
23
|
+
p {
|
|
24
|
+
@include _padding(10px, 0px, 10px, 0px);
|
|
25
|
+
}
|
|
18
26
|
}
|
|
19
27
|
|
|
20
28
|
td {
|
|
@@ -36,10 +44,6 @@ th + th {
|
|
|
36
44
|
border-left: 2px solid $color-background-secondary;
|
|
37
45
|
}
|
|
38
46
|
|
|
39
|
-
tr + tr {
|
|
40
|
-
border-top: 2px solid $color-background-secondary;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
47
|
.header-primary {
|
|
44
48
|
th:not(.no-bg) {
|
|
45
49
|
background-color: $color-table-header-primary;
|
|
@@ -50,6 +54,10 @@ tr + tr {
|
|
|
50
54
|
td:not(.no-bg) {
|
|
51
55
|
background-color: $color-background-tint-primary;
|
|
52
56
|
}
|
|
57
|
+
|
|
58
|
+
tr + tr {
|
|
59
|
+
border-top: 2px solid $color-background-secondary;
|
|
60
|
+
}
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
.header-secondary {
|
|
@@ -90,22 +98,6 @@ tr + tr {
|
|
|
90
98
|
width: 10px;
|
|
91
99
|
}
|
|
92
100
|
|
|
93
|
-
.status-indicator--off {
|
|
94
|
-
background: $color-button-primary-action-danger;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.status-indicator--on {
|
|
98
|
-
background: $color-button-primary-action-positive;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.status-indicator--standby {
|
|
102
|
-
background: $color-button-primary-action-setup;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.status-indicator--game {
|
|
106
|
-
margin: auto 2 * $spacing auto 0px;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
101
|
.student-table {
|
|
110
102
|
a[class^="button"] {
|
|
111
103
|
padding: auto;
|
|
@@ -69,15 +69,6 @@ a:focus {
|
|
|
69
69
|
font-weight: 600;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
.kurono-overview__paragraph {
|
|
73
|
-
@include _font-size(25px);
|
|
74
|
-
@include _line-height(35px);
|
|
75
|
-
|
|
76
|
-
+ .kurono-overview__paragraph {
|
|
77
|
-
@include _padding(8 * $spacing, 0px, 0px, 0px);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
72
|
.grid-benefits__text1 {
|
|
82
73
|
grid-area: text1;
|
|
83
74
|
}
|
|
@@ -189,6 +180,11 @@ blockquote {
|
|
|
189
180
|
}
|
|
190
181
|
}
|
|
191
182
|
|
|
183
|
+
.background--python-den {
|
|
184
|
+
background-color: $color-background-python-den;
|
|
185
|
+
color: $color-text-secondary;
|
|
186
|
+
}
|
|
187
|
+
|
|
192
188
|
@media (min-width: $tablet-small-min-width) {
|
|
193
189
|
.list--two-columns {
|
|
194
190
|
columns: 2;
|
|
@@ -243,4 +239,4 @@ blockquote {
|
|
|
243
239
|
body {
|
|
244
240
|
font-size: 14px;
|
|
245
241
|
}
|
|
246
|
-
}
|
|
242
|
+
}
|
|
Binary file
|
portal/strings/about.py
CHANGED
|
@@ -9,6 +9,11 @@ GETINVOLVED_BANNER = {
|
|
|
9
9
|
"title": "Get involved",
|
|
10
10
|
"subtitle": "How you can get involved with the creation of Code for Life products and resources",
|
|
11
11
|
"image_class": "banner--picture--getinvolved",
|
|
12
|
+
"button": {
|
|
13
|
+
"external": True,
|
|
14
|
+
"text": "Opportunities with Code for Life",
|
|
15
|
+
"link": "https://2662351606-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_6UDUiGoJDhr_OXetO%2Fuploads%2FPavvCifcuUeZZZLkV01C%2FOpportunities%20with%20Code%20for%20Life.pdf?alt=media",
|
|
16
|
+
},
|
|
12
17
|
}
|
|
13
18
|
|
|
14
19
|
CONTRIBUTE_BANNER = {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
CODING_CLUB_BANNER = {
|
|
2
|
+
"title": "Coding clubs",
|
|
3
|
+
"subtitle": "A FREE set of slides and guides to run your own coding clubs",
|
|
4
|
+
"text": "",
|
|
5
|
+
"button": "",
|
|
6
|
+
"image_class": "banner--picture--coding-club",
|
|
7
|
+
"alt": "Boy using a laptop",
|
|
8
|
+
"image_description": "Credit: Jeswin Thomas, Unsplash",
|
|
9
|
+
}
|
portal/strings/play.py
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
PLAY_BANNER = {
|
|
2
2
|
"title": "Play",
|
|
3
|
-
"subtitle": "Anyone can learn how to code. We will help you learn how. It’s "
|
|
4
|
-
"fun, free and easy.",
|
|
3
|
+
"subtitle": "Anyone can learn how to code. We will help you learn how. It’s " "fun, free and easy.",
|
|
5
4
|
"text": "",
|
|
6
|
-
"button": {"text": "
|
|
5
|
+
"button": {"text": "Try Rapid Router", "link": "levels"},
|
|
6
|
+
"button2": {"text": "Try Python Den", "link": "python_levels"},
|
|
7
7
|
"image_class": "banner--picture--play",
|
|
8
|
+
"alt": "Boy playing on ipad",
|
|
9
|
+
"image_description": "Credit: Annie Spratt, Unsplash",
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
PLAY_HEADLINE = {
|
|
@@ -12,6 +14,5 @@ PLAY_HEADLINE = {
|
|
|
12
14
|
"description": "Whether you’re a parent, teacher or a student, our games support "
|
|
13
15
|
"and guide you, making learning to code great fun. Get started with Rapid Router "
|
|
14
16
|
"designed for students new to coding. Rapid Router is where you will build up your "
|
|
15
|
-
"ability
|
|
16
|
-
"in Python.",
|
|
17
|
+
"ability.",
|
|
17
18
|
}
|
portal/strings/teach.py
CHANGED
|
@@ -3,5 +3,5 @@ TEACH_BANNER = {
|
|
|
3
3
|
"subtitle": "Get ready to teach the next generation of computer scientists",
|
|
4
4
|
"text": "",
|
|
5
5
|
"image_class": "banner--picture--educate",
|
|
6
|
-
"
|
|
6
|
+
"alt": "Female teacher helping young female student on a laptop",
|
|
7
7
|
}
|
|
@@ -4,12 +4,6 @@ RAPID_ROUTER_RESOURCES_BANNER = {
|
|
|
4
4
|
"teach students Computing.",
|
|
5
5
|
"text": "",
|
|
6
6
|
"image_class": "banner--picture--play",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
KURONO_RESOURCES_BANNER = {
|
|
10
|
-
"title": "Kurono Resources",
|
|
11
|
-
"subtitle": "We’ve created a comprehensive set of teaching materials to help you "
|
|
12
|
-
"teach students the UK National Computing Curriculum.",
|
|
13
|
-
"text": "",
|
|
14
|
-
"image_class": "banner--picture--aimmo-resources",
|
|
7
|
+
"image_description": "Credit: Annie Spratt, Unsplash",
|
|
8
|
+
"alt": "Boy playing on ipad",
|
|
15
9
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
TEN_YEAR_MAP_BANNER = {
|
|
2
|
+
"title": "Celebrate",
|
|
3
|
+
"subtitle": "Join us in celebrating our 10 year anniversary",
|
|
4
|
+
"text": "",
|
|
5
|
+
"image_class": "banner--picture--educate",
|
|
6
|
+
"alt": "Female teacher helping young female student on a laptop",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
TEN_YEAR_MAP_HEADLINE = {
|
|
10
|
+
"title": "Code for Life is turning 10!",
|
|
11
|
+
"description": "For our 10th anniversary, we're going global! Click on the pins on the map "
|
|
12
|
+
"to check out what events are being run by our amazing volunteers from around the world.",
|
|
13
|
+
}
|
portal/templates/403.html
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% extends 'portal/base_no_userprofile.html' %}
|
|
2
|
-
{% load
|
|
2
|
+
{% load static %}
|
|
3
3
|
|
|
4
4
|
{% block css %}
|
|
5
|
-
<link rel="stylesheet" type="text/css" href='{% static "portal.css" %}'>
|
|
5
|
+
<link rel="stylesheet" type="text/css" href='{% static "portal/css/portal.css" %}'>
|
|
6
6
|
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500&display=swap" rel="stylesheet">
|
|
7
7
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
8
8
|
<link rel="shortcut icon" href="{% static 'portal/img/favicon.ico' %}" type="image/x-icon">
|
portal/templates/404.html
CHANGED
portal/templates/500.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{% load
|
|
1
|
+
{% load static %}
|
|
2
2
|
{% load app_tags %}
|
|
3
3
|
<!DOCTYPE html>
|
|
4
4
|
<html>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
{% include "common/onetrust_cookies_consent_notice.html" %}
|
|
9
9
|
|
|
10
|
-
<link rel="stylesheet" type="text/css" href="{% static 'portal.css' %}">
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="{% static 'portal/css/portal.css' %}">
|
|
11
11
|
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500&display=swap" rel="stylesheet">
|
|
12
12
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
13
13
|
<link rel="shortcut icon" href="{% static 'portal/img/favicon.ico' %}" type="image/x-icon">
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
<!-- This is adapted from django-recaptcha 4.0.0 to work on multiple
|
|
2
|
+
reCAPTCHA's on the same page
|
|
3
|
+
See verifyCaptcha_{{ widget_uuid}} for the edit #} -->
|
|
3
4
|
<script src="https://{{ recaptcha_domain }}/recaptcha/api.js{% if api_params %}?{{ api_params }}{% endif %}"></script>
|
|
4
5
|
<script type="text/javascript">
|
|
5
|
-
|
|
6
6
|
// Submit function to be called, after reCAPTCHA was successful.
|
|
7
7
|
var onSubmit_{{ widget_uuid }} = function(token) {
|
|
8
8
|
console.log("reCAPTCHA validated for 'data-widget-uuid=\"{{ widget_uuid }}\"'. Submitting form...")
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
{% include "
|
|
1
|
+
<!-- copied from django-recaptcha 4.0.0 -->
|
|
2
|
+
{% include "django_recaptcha/includes/js_v2_invisible.html" %}
|
|
3
3
|
<div class="g-recaptcha"
|
|
4
4
|
{% for name, value in widget.attrs.items %}{% if value is not False %} {{ name }}{% if value is not True %}="{{ value|stringformat:'s' }}"{% endif %}{% endif %}{% endfor %}
|
|
5
5
|
>
|
portal/templates/email.html
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
{% extends 'portal/email_style_template.html' %}
|
|
1
2
|
{% load static %}
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
{% block email_content %}
|
|
4
|
+
<h1 style="text-align: center;color:rgb(224,0,77);font-family: 'space grotesk';font-size: 2rem;">{{ title }}</h1>
|
|
4
5
|
{{ content|urlize|linebreaks }}
|
|
6
|
+
{% endblock email_content %}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
{% load app_tags %}
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html>
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code For Life - maintenance</title>
|
|
7
|
+
<link rel="stylesheet" type="text/css" href="{% static 'portal/css/portal.css' %}">
|
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500&display=swap" rel="stylesheet">
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
10
|
+
<link rel="shortcut icon" href="{% static 'portal/img/favicon.ico' %}" type="image/x-icon">
|
|
11
|
+
<link rel="icon" href="{% static 'portal/img/favicon.ico' %}" type="image/x-icon">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<div class="content-footer-wrapper">
|
|
15
|
+
<div id="contentWrapper">
|
|
16
|
+
{% block topBar %}
|
|
17
|
+
{% include 'portal/partials/header.html' %}
|
|
18
|
+
{% endblock topBar %}
|
|
19
|
+
<div class="content">
|
|
20
|
+
<div class="error-page background container">
|
|
21
|
+
<div class="row mx-0 d-flex justify-content-between">
|
|
22
|
+
<div class="flex-grow-1">
|
|
23
|
+
<h2>Works in progress!</h2>
|
|
24
|
+
<h5>Apologies! Dee is working on something important.</h5>
|
|
25
|
+
<p>The website is temporarily unavailable.</p>
|
|
26
|
+
</div>
|
|
27
|
+
<img title="Dee" alt="Dee" src="{% static 'portal/img/dee.png' %}"/>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</body>
|
|
34
|
+
</html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% extends 'portal/base.html' %}
|
|
2
|
-
{% load
|
|
2
|
+
{% load static %}
|
|
3
3
|
{% load app_tags %}
|
|
4
4
|
{% load banner_tags %}
|
|
5
5
|
|
|
@@ -10,23 +10,25 @@
|
|
|
10
10
|
{% block content %}
|
|
11
11
|
<div class="background container">
|
|
12
12
|
<section>
|
|
13
|
-
<h4>Code For Life is a non
|
|
14
|
-
computing.</h4>
|
|
13
|
+
<h4>Code For Life is a non-profit initiative that delivers free,
|
|
14
|
+
open-source games that help all students learn computing.</h4>
|
|
15
15
|
<div class="row homepage-info">
|
|
16
16
|
<div class="col-sm-4">
|
|
17
17
|
<h2 class="text--brand-tertiary">2014</h2>
|
|
18
|
-
<p>The year that computing was added to the UK curriculum. We've
|
|
19
|
-
|
|
18
|
+
<p>The year that computing was added to the UK curriculum. We've
|
|
19
|
+
been supporting teachers and students ever since.</p>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="col-sm-4">
|
|
22
22
|
<h2 class="text--brand-tertiary">>160</h2>
|
|
23
|
-
<p>Countries are taking part, with the UK, the USA, Brazil,
|
|
24
|
-
|
|
23
|
+
<p>Countries are taking part, with the UK, the USA, Brazil,
|
|
24
|
+
Australia and Canada as top locations for schools signed up
|
|
25
|
+
to CFL. Nearly 10,000 schools are registered globally.</p>
|
|
25
26
|
</div>
|
|
26
27
|
<div class="col-sm-4">
|
|
27
|
-
<h2 class="text--brand-tertiary">>
|
|
28
|
-
<p>Active users so far, with numbers growing every day. In 2020
|
|
29
|
-
|
|
28
|
+
<h2 class="text--brand-tertiary">>260,000</h2>
|
|
29
|
+
<p>Active users so far, with numbers growing every day. In 2020
|
|
30
|
+
alone, close to 100,000 new people subscribed to our
|
|
31
|
+
resources.</p>
|
|
30
32
|
</div>
|
|
31
33
|
</div>
|
|
32
34
|
</section>
|
|
@@ -36,18 +38,23 @@
|
|
|
36
38
|
<div class="row d-flex align-items-center">
|
|
37
39
|
<div class="col-sm-6">
|
|
38
40
|
<h5>What is Code for Life?</h5>
|
|
39
|
-
<p>Code for Life (CFL) is a free, easy-to-use resource that
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
<p>Code for Life (CFL) is a free, easy-to-use resource that
|
|
42
|
+
provides teaching and lesson plans, user guides and
|
|
43
|
+
engagement through our fun coding games and resources.
|
|
44
|
+
These games are specially designed for people learning
|
|
45
|
+
computing for the first time.</p>
|
|
46
|
+
<p>The aim is to teach new coders the basic principles, to help
|
|
47
|
+
them thrive in an increasingly digital world. CFL is
|
|
48
|
+
primarily designed for and tested by primary school
|
|
49
|
+
teachers. Our games are aligned with the UK's computing
|
|
50
|
+
curriculum, so teachers can incorporate CFL into their
|
|
51
|
+
lessons.</p>
|
|
52
|
+
<p>But anyone looking to get into coding can also do so using
|
|
53
|
+
the games and resources.</p>
|
|
48
54
|
</div>
|
|
49
55
|
<div class="col-sm-6">
|
|
50
|
-
<img title="What is Code for Life?" alt="What is Code for Life?"
|
|
56
|
+
<img title="What is Code for Life?" alt="What is Code for Life?"
|
|
57
|
+
src="{% static 'portal/img/about_us_cfl.jpg' %}">
|
|
51
58
|
</div>
|
|
52
59
|
</div>
|
|
53
60
|
</div>
|
|
@@ -55,20 +62,26 @@
|
|
|
55
62
|
<div class="background container">
|
|
56
63
|
<div class="row d-flex align-items-center">
|
|
57
64
|
<div class="col-sm-6">
|
|
58
|
-
<img title="Who is Ocado Group?" alt="Who is Ocado Group?"
|
|
65
|
+
<img title="Who is Ocado Group?" alt="Who is Ocado Group?"
|
|
66
|
+
src="{% static 'portal/img/about_us_ocado.jpg' %}">
|
|
59
67
|
</div>
|
|
60
68
|
<div class="col-sm-6">
|
|
61
69
|
<h5>Who is Ocado Group?</h5>
|
|
62
|
-
<p>Ocado Group, the online grocery solutions provider, is powering
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<p
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
<p>Ocado Group, the online grocery solutions provider, is powering
|
|
71
|
+
the future of online retail. Ocado's tech and solutions are
|
|
72
|
+
supplied to grocery businesses all around the world. It enables
|
|
73
|
+
these forward-thinking retailers to do grocery online
|
|
74
|
+
profitably, sustainably, and in a scalable manner.</p>
|
|
75
|
+
<p>The Ocado Smart Platform (OSP) is the world's most advanced
|
|
76
|
+
end-to-end e-Commerce, fulfilment and logistic platform.</p>
|
|
77
|
+
<p><a target="_blank" href="https://www.ocadogroup.com/sustainability/sustainability">
|
|
78
|
+
Our People and Skills for the Future</a> is one of Ocado Group's
|
|
79
|
+
core Sustainability pillars (alongside Environment and Natural
|
|
80
|
+
Resources and Platform Resilience and Innovation). For Ocado
|
|
81
|
+
Group, Our People and Skills for the Future means accelerating
|
|
82
|
+
the development of our people and championing digital literacy.
|
|
83
|
+
We want to inspire the next generation of STEM leaders, so that
|
|
84
|
+
everyone can fully participate in society.</p>
|
|
72
85
|
</div>
|
|
73
86
|
</div>
|
|
74
87
|
</div>
|
|
@@ -79,21 +92,27 @@
|
|
|
79
92
|
<div class="col-sm-6">
|
|
80
93
|
<blockquote>
|
|
81
94
|
<p class="says text--brand-primary">
|
|
82
|
-
“We were delighted computing entered the UK curriculum
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
“We were delighted computing entered the UK curriculum
|
|
96
|
+
in 2014. However, many teachers felt unprepared. And the
|
|
97
|
+
lack of diversity in people studying STEM concerned us.
|
|
98
|
+
So, we sought to make the subject appeal to a broader
|
|
99
|
+
group of both students and teachers."
|
|
85
100
|
</p>
|
|
86
101
|
</blockquote>
|
|
87
|
-
<p>Anne Marie Neatham, Commercial Director and COO Kindred,
|
|
102
|
+
<p>Anne Marie Neatham, Commercial Director and COO Kindred,
|
|
103
|
+
Ocado Group.</p>
|
|
88
104
|
</div>
|
|
89
105
|
<div class="col-sm-6">
|
|
90
|
-
<p>With that in mind, CFL was developed by volunteers and
|
|
91
|
-
|
|
92
|
-
|
|
106
|
+
<p>With that in mind, CFL was developed by volunteers and
|
|
107
|
+
interns from Ocado Technology - the technology arm of Ocado
|
|
108
|
+
Group - and teacher Sharon Harrison, who created the Rapid
|
|
109
|
+
Router learning materials. Anne Marie continues:</p>
|
|
93
110
|
<blockquote>
|
|
94
111
|
<p class="says text--brand-primary">
|
|
95
|
-
“I'm proud this initiative has been breaking down
|
|
96
|
-
|
|
112
|
+
“I'm proud this initiative has been breaking down
|
|
113
|
+
stereotypes. Children are seeing that you don't have to
|
|
114
|
+
fit a certain gender, race or personality type to get
|
|
115
|
+
coding."
|
|
97
116
|
</p>
|
|
98
117
|
</blockquote>
|
|
99
118
|
<p>Today, CFL is operated by a small core team and volunteers.</p>
|
|
@@ -107,29 +126,35 @@
|
|
|
107
126
|
<div class="row">
|
|
108
127
|
<div class="col-sm-6">
|
|
109
128
|
<h5>Our team and volunteers</h5>
|
|
110
|
-
<p>Code for Life would not have been possible without the time and
|
|
111
|
-
|
|
112
|
-
|
|
129
|
+
<p>Code for Life would not have been possible without the time and
|
|
130
|
+
skills volunteered by our talented developers and creatives at
|
|
131
|
+
Ocado Technology. Thank you to everyone who has helped us get to
|
|
132
|
+
where we are now.</p>
|
|
113
133
|
<h5>Want to get involved?</h5>
|
|
114
|
-
<p>We are open source, so anyone can ask to contribute. You can play
|
|
115
|
-
Python/Django, animation using SVG
|
|
116
|
-
|
|
117
|
-
|
|
134
|
+
<p>We are open source, so anyone can ask to contribute. You can play
|
|
135
|
+
with game-running JavaScript, Python/Django, animation using SVG
|
|
136
|
+
and Raphael, and a lot more. We'd like input from all sorts of
|
|
137
|
+
backgrounds, whether you're: a programmer looking for a creative
|
|
138
|
+
outlet; a teacher hoping to shape the resources; or even a pupil
|
|
139
|
+
putting your skills to the test.</p>
|
|
118
140
|
</div>
|
|
119
141
|
<div class="col-sm-6">
|
|
120
142
|
<h5>Developers</h5>
|
|
121
143
|
<p>To contribute, head over to <a target="_blank" href="https://github.com/ocadotechnology/codeforlife-portal">GitHub</a>,
|
|
122
|
-
check out the issue tracker, and get started. There you can
|
|
123
|
-
|
|
144
|
+
check out the issue tracker, and get started. There you can
|
|
145
|
+
suggest new features or assign yourself an issue to develop. You
|
|
146
|
+
can find more info about how to do all these on our
|
|
124
147
|
<a target="_blank" href="https://docs.codeforlife.education/">docs on Gitbook</a>.
|
|
125
148
|
<h5>Teachers, parents, and creatives</h5>
|
|
126
|
-
<p>Please get in touch through our <a class="freshdesk__contact-us">contact</a>
|
|
127
|
-
you would like to get involved.</p>
|
|
128
|
-
<p>We would like to thank our friends who have contributed to this
|
|
149
|
+
<p>Please get in touch through our <a class="freshdesk__contact-us">contact</a>
|
|
150
|
+
form and let us know how you would like to get involved.</p>
|
|
151
|
+
<p>We would like to thank our friends who have contributed to this
|
|
152
|
+
initiative.</p>
|
|
129
153
|
</div>
|
|
130
154
|
</div>
|
|
131
155
|
<section class="background">
|
|
132
|
-
<h6>We would like to thank our friends who have contributed to this
|
|
156
|
+
<h6>We would like to thank our friends who have contributed to this
|
|
157
|
+
initiative</h6>
|
|
133
158
|
<div class="row image-row">
|
|
134
159
|
<img title="10x" alt="10x logo" src="{% static 'portal/img/10x_logo.png' %}">
|
|
135
160
|
<img title="BCS" alt="BCS logo" src="{% static 'portal/img/bcs_logo.png' %}">
|
|
@@ -140,10 +165,13 @@
|
|
|
140
165
|
<img title="GLA" alt="GLA logo" src="{% static 'portal/img/gla_logo.png' %}">
|
|
141
166
|
<img title="Pressure Cooker" alt="Pressure Cooker logo" src="{% static 'portal/img/pressure_cooker_logo.png' %}">
|
|
142
167
|
</div>
|
|
143
|
-
<p><small>10X, BCS Academy of Computing, Barefoot Computing, Computing
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
168
|
+
<p><small>10X, BCS Academy of Computing, Barefoot Computing, Computing
|
|
169
|
+
at School, The National Museum of Computing, Imperial College
|
|
170
|
+
London, M&C Saatchi, Alvaro Ramirez, Jason Fingland, Ramneet Loyall,
|
|
171
|
+
Sharon Harrison, Keith Avery, Dale Coan, Rob Whitehouse, Mandy Nash,
|
|
172
|
+
Tanya Nothard, Matt Trevor, Moy El-Bushra, Richard Siwiak, Peter
|
|
173
|
+
Tondrow, Liz Pratt, Pressure Cooker Studios, GAL Education, Hope
|
|
174
|
+
Education.</small></p>
|
|
147
175
|
</section>
|
|
148
176
|
</div>
|
|
149
177
|
|
|
@@ -151,14 +179,18 @@
|
|
|
151
179
|
<div class="container">
|
|
152
180
|
<section>
|
|
153
181
|
<h4>Dedicated to Sharon Harrison</h4>
|
|
154
|
-
<img title="Sharon Harrison" alt="Sharon Harrison portrait"
|
|
182
|
+
<img title="Sharon Harrison" alt="Sharon Harrison portrait"
|
|
183
|
+
class="portrait"
|
|
184
|
+
src="{% static 'portal/img/sharon_harrison.jpg' %}">
|
|
155
185
|
<h5>1956 — 2015</h5>
|
|
156
186
|
</section>
|
|
157
|
-
<p><strong>Sharon was instrumental in helping to create Code for Life.
|
|
158
|
-
|
|
187
|
+
<p><strong>Sharon was instrumental in helping to create Code for Life.
|
|
188
|
+
At the beginning of 2014 she was recruited to act as our Educational
|
|
189
|
+
Consultant. The project drew on her previous skills as a pioneering
|
|
159
190
|
computing teacher and education consultant.</strong></p>
|
|
160
|
-
<p>Sharon has left a lasting legacy by creating something which will
|
|
161
|
-
generation of computer scientists
|
|
191
|
+
<p>Sharon has left a lasting legacy by creating something which will
|
|
192
|
+
help teach STEM skills to the next generation of computer scientists
|
|
193
|
+
across the world.</p>
|
|
162
194
|
</div>
|
|
163
195
|
</div>
|
|
164
196
|
{% endblock content %}
|