codeforlife-portal 7.3.7__tar.gz → 7.4.0__tar.gz
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.
Potentially problematic release.
This version of codeforlife-portal might be problematic. Click here for more details.
- {codeforlife-portal-7.3.7/codeforlife_portal.egg-info → codeforlife-portal-7.4.0}/PKG-INFO +1 -1
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0/codeforlife_portal.egg-info}/PKG-INFO +1 -1
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/SOURCES.txt +2 -1
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/requires.txt +1 -1
- codeforlife-portal-7.4.0/portal/__init__.py +1 -0
- codeforlife-portal-7.4.0/portal/context_processors.py +9 -0
- codeforlife-portal-7.4.0/portal/forms/dotmailer.py +55 -0
- codeforlife-portal-7.4.0/portal/static/portal/img/rr_advanced.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/common.js +35 -5
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_colours.scss +3 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_levels.scss +1 -1
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_mixins.scss +5 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_buttons.scss +31 -3
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_header.scss +7 -6
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_popup.scss +7 -2
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/base.html +12 -3
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/home_learning.html +8 -7
- codeforlife-portal-7.4.0/portal/templates/portal/partials/donate_popup.html +46 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/header.html +34 -30
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_emails.py +17 -22
- codeforlife-portal-7.3.7/portal/tests/test_newsletter_footer.py → codeforlife-portal-7.4.0/portal/tests/test_global_forms.py +17 -1
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/urls.py +2 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/dotmailer.py +30 -2
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/teacher/dashboard.py +174 -57
- codeforlife-portal-7.3.7/portal/__init__.py +0 -1
- codeforlife-portal-7.3.7/portal/context_processors.py +0 -5
- codeforlife-portal-7.3.7/portal/forms/dotmailer.py +0 -20
- codeforlife-portal-7.3.7/portal/static/portal/img/rr_advanced.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/LICENSE.md +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/MANIFEST.in +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/README.md +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/dependency_links.txt +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/not-zip-safe +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/top_level.txt +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/captcha.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/admin_access.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/basicauth.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/exceptionlogging.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/screentime_warning.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/security.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/middleware/session_timeout.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/apple-touch-icon-120x120.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/apple-touch-icon-152x152.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/apple-touch-icon-180x180.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/apple-touch-icon-76x76.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/apple-touch-icon.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/static/robots.txt +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/templates/deploy/csrf_failure.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/deploy/views.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/admin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/app_settings.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/backends.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/beta.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/admin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/error_messages.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/invite_teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/organisation.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/play.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/registration.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/forms/teach.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/handlers.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/captcha.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/decorators.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/password.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/ratelimit.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/regexes.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/helpers/request_handlers.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0001_squashed_0041_new_news.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0042_school_country.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0043_auto_20150430_0952.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0044_auto_20150430_0959.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0045_auto_20150430_1446.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0046_auto_20150723_1101.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0047_remove_userprofile_avatar.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0048_plural_management_frontnews.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0049_refactor_emailverifications.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0050_refactor_emailverifications_2.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0051_add_missing_ev_records.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0052_refactor_emailverifications_3.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0053_refactor_teacher_student_1.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0054_pending_join_request_can_be_blank.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0055_add_preview_user.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0056_remove_preview_user.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0057_delete_frontpagenews.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0058_move_to_common_models.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0059_move_email_verifications_to_common.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0060_delete_guardian.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0061_make_portaladmin_teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/0062_verify_portaladmin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/migrations/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/mixins/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/mixins/cron_mixin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/models.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/permissions/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/permissions/is_cron_request_from_google.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/pipeline_compilers/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/pipeline_compilers/libsass_compiler.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/10_years_anniversary.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/10x_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/RR_logo_grass_background.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/RR_logo_green.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/RR_logo_simple.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/about_us_cfl.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/about_us_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/about_us_ocado.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/barefoot_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/bcs_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/clubs.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/coding_club_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/coding_club_python_pack.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/colorboxImages/border.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/colorboxImages/controls.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/colorboxImages/loading.gif +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/colorboxImages/loading_background.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/colorboxImages/overlay.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/confirmation_tick.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/cross.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/dee.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/facebook.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/favicon.ico +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/get_involved_hero.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/gitbook.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/gitbook_space.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/github.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/github_hero.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/gla_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/hamburger.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/help_and_support_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/home_educate.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/home_educate_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/home_learning_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/home_play.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/home_play_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/hope_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/howe_dell_1.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/howe_dell_2.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/howe_dell_3.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icl_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_controller.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_free.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_globe.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_piechart.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_step_by_step.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_tracking.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/icon_uk_flag.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/kirsty.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_cfl.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_cfl_powered.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_cfl_reminder_cards.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_cfl_white_landscape.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_ocado.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_ocado_group.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_ocado_group.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_ocado_group_white.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/logo_python_den.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/long_europe_map.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/mc_saatchi_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/nigel.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/ocado-swirl.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/oval_blue.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/oval_pink.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/oval_yellow.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/paper_plane.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/phil.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/polygon_blue.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/polygon_pink.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/polygon_yellow.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/pressure_cooker_logo.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/python_den.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/python_den_banner.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rapid_router.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rapid_router_landing_hero.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rapidrouter.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/resources_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/resources_montage.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/reuben.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rob.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rr_beginner.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/rr_intermediate.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/sadface.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/sharon_harrison.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/sian.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/teaching_resources_hero.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/ten_year_map_pin.svg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/thumbnail_educate_rapid_router.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/thumbnail_educate_resources.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/thumbnail_intro_c4l.jpg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/thumbnail_play_rapid_router.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/thumbnail_python_den.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/twitter.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/universities.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/wes.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/img/x_close_video.png +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/bootstrap.min.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/carouselCards.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/independentLogin.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/independentRegistration.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/join_create_game_toggle.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/jquery.placeholder.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/levelControl.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/jquery-video-lightning.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/jquery.colorbox.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/jquery.easy-ticker.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/jquery.min.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/modernizr-build.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/lib/papaparse.min.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/organisation_manage.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/passwordStrength.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/play.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/resetPassword.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/riveted.min.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/school.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/sticky_subnav.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/studentLogin.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/teach_browser.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/teach_class.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/teacherEditStudent.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/teacherLogin.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/js/tenYearMap.js +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_alerts.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_badges.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_breadcrumbs.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_button-groups.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_buttons.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_carousel.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_close.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_code.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_component-animations.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_dropdowns.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_forms.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_glyphicons.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_grid.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_input-groups.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_jumbotron.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_labels.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_list-group.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_media.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_mixins.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_modals.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_navbar.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_navs.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_normalize.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_pager.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_pagination.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_panels.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_popovers.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_print.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_progress-bars.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_responsive-embed.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_responsive-utilities.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_scaffolding.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_tables.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_theme.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_thumbnails.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_tooltip.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_type.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_utilities.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_variables.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/_wells.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_alerts.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_background-variant.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_border-radius.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_breakpoints.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_buttons.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_center-block.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_clearfix.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_forms.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_gradients.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_grid-framework.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_grid.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_hide-text.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_image.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_labels.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_list-group.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_nav-divider.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_opacity.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_pagination.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_panels.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_progress-bar.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_reset-filter.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_reset-text.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_resize.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_responsive-visibility.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_size.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_tab-focus.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_table-row.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_text-emphasis.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_text-overflow.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_text-truncate.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap/mixins/_vendor-prefixes.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_mixins/_all.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_mixins/_border-radius.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_mixins/_box-shadow.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_mixins/_hover.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_mixins/_nav-divider.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_partials/_dropdown.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_partials/_glyphicons.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_partials/_grid.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_partials/_variables.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_align.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_background.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_borders.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_clearfix.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_cursor.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_display.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_flex.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_float.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_position.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_screenreaders.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_sizing.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_spacing.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_text.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/bootstrap_utilities/_visibility.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/colorbox.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_all.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_animation.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_breakpoints.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_card_constants.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_homepage_constants.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_spacing.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_banners.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_base.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_carousel.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_footer.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_forms.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_grids.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_images.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_progress-bars.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_subnavs.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_tables.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_text.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_ui-dialog.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_utils.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/styles.scss +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/video/code for life .pdf +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/about.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/coding_club.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/help_and_support.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/home_learning.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/materials.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/play.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/teach.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/teacher_resources.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/strings/ten_year_map.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/403.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/404.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/500.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/captcha/includes/js_v2_invisible.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/captcha/widget_v2_invisible.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/email.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/email.txt +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/about.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/base_no_userprofile.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/coding_club.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/contribute.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/dotmailer_consent_form.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/email_invitation_sent.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/email_style_template.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/email_verification_failed.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/email_verification_needed.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/form_shapes.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/getinvolved.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/home.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/locked_out.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/locked_out_school_student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/login/independent_student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/login/student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/login/student_class_code.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/login/teacher.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/mouseflow.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/banner.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/benefits.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/card_list.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/character_list.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/delete_popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/footer.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/headline.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/hero_card.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/info_popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/invite_admin_teacher.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/register_newsletter_tickbox.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/screentime_popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/service_unavailable_popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/session_popup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/teacher_non_dashboard_subnav.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/teacher_non_dashboard_subnav_account.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/play/student_dashboard.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/play/student_edit_account.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/play/student_join_organisation.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/play.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/privacy_notice.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/register.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/reset_password.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/reset_password_confirm.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/reset_password_done.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/reset_password_email_sent.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/tag_manager/tag_manager_body.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/tag_manager/tag_manager_head.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/base_registering.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/class.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/dashboard.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/invited.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/onboarding_classes.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/onboarding_print.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/onboarding_school.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/onboarding_students.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_add_external_student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_added_external_student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_dismiss_students.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_edit_class.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_edit_student.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_move_all_classes.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_move_students.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach/teacher_move_students_to_class.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/teach.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/ten_year_map.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/terms.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_base.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_wizard_actions.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_wizard_actions_enable_2fa.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_wizard_actions_submit.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_wizard_forms.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/_wizard_forms_token.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/backup_token.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/core/backup_tokens.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/core/login.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/core/setup.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/core/setup_complete.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/profile/disable.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/profile/profile.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/two_factor/setup_wizard_token.html +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/app_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/banner_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/benefits_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/card_list_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/future.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/headline_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/hero_card_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templatetags/table_tags.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/base_test.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/conftest.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_make_portaladmin_teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_preview_user_remove.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_preview_users.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_remove_front_page_news.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_remove_guardian.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_use_common_models.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/migrations/test_migration_verify_portaladmin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/admin/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/admin/admin_base_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/admin/admin_data_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/admin/admin_map_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/base_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/email_verification_needed_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/forbidden_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/game_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/home_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/independent_login_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/password_reset_form_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/password_reset_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play/account_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play/dashboard_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play/join_school_or_club_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play/play_base_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/play_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/resources_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/signup_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/student_login_class_code.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/student_login_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/add_independent_student_to_class_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/added_independent_student_to_class_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/class_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/dashboard_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/dismiss_students_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/edit_student_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/move_class_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/move_classes_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/move_students_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/onboarding_classes_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/onboarding_organisation_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/onboarding_student_list_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/onboarding_students_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teach/teach_base_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/pageObjects/portal/teacher_login_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/selenium_test_case.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/snapshots/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/snapshots/snap_test_partials.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_2FA.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_admin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_api.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_captcha_forms.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_class.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_daily_activities.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_helper_methods.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_independent_student.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_invite_teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_middleware.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_organisation.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_partials.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_ratelimit.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_school_student.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_security.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_teacher_student.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/test_views.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/utils/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/utils/classes.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/tests/utils/messages.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/about.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/admin.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/api.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/cron/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/cron/user.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/email.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/home.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/legal.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/login/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/login/independent_student.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/login/student.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/login/teacher.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/organisation.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/play_landing_page.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/registration.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/student/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/student/edit_account_details.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/student/play.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/teach.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/teacher/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/teacher/teach.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/two_factor/__init__.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/two_factor/core.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/two_factor/form.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/views/two_factor/profile.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/wsgi.py +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/pyproject.toml +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/setup.cfg +0 -0
- {codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/setup.py +0 -0
{codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/codeforlife_portal.egg-info/SOURCES.txt
RENAMED
|
@@ -388,6 +388,7 @@ portal/templates/portal/partials/benefits.html
|
|
|
388
388
|
portal/templates/portal/partials/card_list.html
|
|
389
389
|
portal/templates/portal/partials/character_list.html
|
|
390
390
|
portal/templates/portal/partials/delete_popup.html
|
|
391
|
+
portal/templates/portal/partials/donate_popup.html
|
|
391
392
|
portal/templates/portal/partials/footer.html
|
|
392
393
|
portal/templates/portal/partials/header.html
|
|
393
394
|
portal/templates/portal/partials/headline.html
|
|
@@ -456,11 +457,11 @@ portal/tests/test_captcha_forms.py
|
|
|
456
457
|
portal/tests/test_class.py
|
|
457
458
|
portal/tests/test_daily_activities.py
|
|
458
459
|
portal/tests/test_emails.py
|
|
460
|
+
portal/tests/test_global_forms.py
|
|
459
461
|
portal/tests/test_helper_methods.py
|
|
460
462
|
portal/tests/test_independent_student.py
|
|
461
463
|
portal/tests/test_invite_teacher.py
|
|
462
464
|
portal/tests/test_middleware.py
|
|
463
|
-
portal/tests/test_newsletter_footer.py
|
|
464
465
|
portal/tests/test_organisation.py
|
|
465
466
|
portal/tests/test_partials.py
|
|
466
467
|
portal/tests/test_ratelimit.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "7.4.0"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from django import forms
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class NewsletterForm(forms.Form):
|
|
5
|
+
email = forms.EmailField(
|
|
6
|
+
label="Sign up to receive updates about Code for Life games and teaching resources.",
|
|
7
|
+
label_suffix="",
|
|
8
|
+
widget=forms.EmailInput(
|
|
9
|
+
attrs={
|
|
10
|
+
"placeholder": "Your email address",
|
|
11
|
+
"id": "newsletter_email_field",
|
|
12
|
+
}
|
|
13
|
+
),
|
|
14
|
+
help_text="Enter email address above",
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
age_verification = forms.BooleanField(
|
|
18
|
+
widget=forms.CheckboxInput(), initial=False, required=True
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DonateForm(forms.Form):
|
|
23
|
+
email = forms.EmailField(
|
|
24
|
+
label="This data will only be used for this purpose and you will be "
|
|
25
|
+
"able to opt out anytime. Please read our privacy notice for "
|
|
26
|
+
"further details.",
|
|
27
|
+
label_suffix="",
|
|
28
|
+
widget=forms.EmailInput(
|
|
29
|
+
attrs={
|
|
30
|
+
"placeholder": "Enter your email address",
|
|
31
|
+
"id": "donate_email_field",
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
help_text="Enter your email address",
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
age_verification = forms.BooleanField(
|
|
38
|
+
widget=forms.CheckboxInput(attrs={"id": "donate_age_verification"}),
|
|
39
|
+
initial=False,
|
|
40
|
+
required=True,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ConsentForm(forms.Form):
|
|
45
|
+
email = forms.EmailField(
|
|
46
|
+
label="Email",
|
|
47
|
+
label_suffix="",
|
|
48
|
+
widget=forms.EmailInput(
|
|
49
|
+
attrs={"placeholder": "your.name@yourdomain.com"}
|
|
50
|
+
),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
consent_ticked = forms.BooleanField(
|
|
54
|
+
widget=forms.CheckboxInput(), initial=False, required=True
|
|
55
|
+
)
|
|
Binary file
|
|
@@ -38,13 +38,42 @@ function hidePopupConfirmation() {
|
|
|
38
38
|
$("#popup").find(".popup-text").remove();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
function showDonatePopup(title, text) {
|
|
42
|
+
let popup = $("#donate-popup");
|
|
43
|
+
popup.find(".popup-box__title").text(title);
|
|
44
|
+
popup.find(".popup-box__msg").append(text);
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
popup.addClass("popup--fade");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function hideDonatePopup() {
|
|
50
|
+
$("#donate-popup").removeClass("popup--fade");
|
|
51
|
+
$("#donate-popup").find(".popup-text").remove();
|
|
52
|
+
$("#donate_email_field").val("");
|
|
53
|
+
$('#donate_age_verification').prop("checked", false);
|
|
54
|
+
const donateSubmitButton = $('#confirm_donate_button');
|
|
55
|
+
donateSubmitButton.addClass("disabled");
|
|
56
|
+
donateSubmitButton.prop("disabled", true);
|
|
57
|
+
}
|
|
43
58
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
function showDonateConfirmation(path) {
|
|
60
|
+
let title = "We would love to have you support our non-profit mission! ❤️";
|
|
61
|
+
let text =
|
|
62
|
+
"<div class='popup-text'>" +
|
|
63
|
+
"<h6>If you would like to be added to a mailing list and find out" +
|
|
64
|
+
" more about how you could support our mission, please add your" +
|
|
65
|
+
" email below.</h6>" +
|
|
66
|
+
"</div>";
|
|
67
|
+
let confirm_handler = "postWithCsrf('" + path + "')";
|
|
68
|
+
|
|
69
|
+
showDonatePopup(title, text, confirm_handler);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Show a service unavailable popup with a close button in the top-right corner.
|
|
74
|
+
* @param {String} title The title of the popup.
|
|
75
|
+
* @param {String} text The message of the popup.
|
|
76
|
+
*/
|
|
48
77
|
|
|
49
78
|
function showServiceUnavailable(title, text) {
|
|
50
79
|
let popup = $("#service-unavailable-popup");
|
|
@@ -57,6 +86,7 @@ function showServiceUnavailable(title, text) {
|
|
|
57
86
|
function hideServiceUnavailable() {
|
|
58
87
|
$("#service-unavailable-popup").removeClass("popup--fade");
|
|
59
88
|
}
|
|
89
|
+
|
|
60
90
|
/**
|
|
61
91
|
* Show an info popup with a close button in the top-right corner.
|
|
62
92
|
* @param {String} title The title of the popup.
|
|
@@ -63,6 +63,9 @@ $color-button-contained-disabled: $color-secondary-100;
|
|
|
63
63
|
$color-button-outlined-border: $color-secondary-600;
|
|
64
64
|
$color-button-outlined-border-active: $color-secondary-600;
|
|
65
65
|
$color-button-subnav-border: white;
|
|
66
|
+
$color-button-pill: #86ae18;
|
|
67
|
+
$color-button-pill-hover: #82a210;
|
|
68
|
+
$color-button-pill-active: #82a210;
|
|
66
69
|
// Old buttons
|
|
67
70
|
$color-button-primary-action-navigation: $color-secondary;
|
|
68
71
|
$color-button-primary-action-navigation-hover: $color-secondary;
|
{codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/modules/_mixins.scss
RENAMED
|
@@ -55,6 +55,11 @@
|
|
|
55
55
|
calculate-rem($radius-bottom-left);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
@mixin _border-radius-all($radius) {
|
|
59
|
+
border-radius: calculate-rem($radius) calculate-rem($radius)
|
|
60
|
+
calculate-rem($radius) calculate-rem($radius);
|
|
61
|
+
}
|
|
62
|
+
|
|
58
63
|
@mixin _box-shadow($h-offset, $v-offset, $blur, $spread, $color) {
|
|
59
64
|
box-shadow: calculate-rem($h-offset) calculate-rem($v-offset)
|
|
60
65
|
calculate-rem($blur) calculate-rem($spread) $color;
|
|
@@ -89,7 +89,6 @@ table {
|
|
|
89
89
|
color: $color-text-primary;
|
|
90
90
|
box-shadow: none;
|
|
91
91
|
}
|
|
92
|
-
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
/* Outlined button */
|
|
@@ -139,6 +138,30 @@ table {
|
|
|
139
138
|
}
|
|
140
139
|
}
|
|
141
140
|
|
|
141
|
+
/* Green button */
|
|
142
|
+
.button--tertiary {
|
|
143
|
+
@include _padding(10px, 15px, 10px, 15px);
|
|
144
|
+
background: $color-button-pill;
|
|
145
|
+
color: $color-text-secondary;
|
|
146
|
+
|
|
147
|
+
&:hover:not(.disabled){
|
|
148
|
+
@include material-shadow();
|
|
149
|
+
background: $color-button-pill-hover;
|
|
150
|
+
color: $color-text-secondary;
|
|
151
|
+
text-decoration: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
&:active:not(.disabled) {
|
|
155
|
+
background: $color-button-pill-active;
|
|
156
|
+
color: $color-text-secondary;
|
|
157
|
+
box-shadow: none;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.button--pill {
|
|
162
|
+
@include _border-radius-all(20px);
|
|
163
|
+
}
|
|
164
|
+
|
|
142
165
|
.button-right-arrow {
|
|
143
166
|
&:after {
|
|
144
167
|
content: "\e5e1";
|
|
@@ -172,8 +195,6 @@ table {
|
|
|
172
195
|
}
|
|
173
196
|
|
|
174
197
|
.button--menu {
|
|
175
|
-
background-color: transparent;
|
|
176
|
-
border-radius: 0;
|
|
177
198
|
text-decoration: none;
|
|
178
199
|
}
|
|
179
200
|
|
|
@@ -416,6 +437,13 @@ td .button--primary {
|
|
|
416
437
|
justify-content: center;
|
|
417
438
|
}
|
|
418
439
|
|
|
440
|
+
&.button--donate {
|
|
441
|
+
background: $color-button-pill;
|
|
442
|
+
border: 0;
|
|
443
|
+
color: $color-text-secondary;
|
|
444
|
+
justify-content: center;
|
|
445
|
+
}
|
|
446
|
+
|
|
419
447
|
&.button--header--login {
|
|
420
448
|
border: 2px solid $color-secondary-600;
|
|
421
449
|
margin: 0;
|
|
@@ -260,13 +260,14 @@
|
|
|
260
260
|
width: 100%;
|
|
261
261
|
z-index: $nav-bar-level;
|
|
262
262
|
|
|
263
|
-
.button--menu
|
|
264
|
-
|
|
263
|
+
.button--menu:hover,
|
|
264
|
+
.button--menu:focus, {
|
|
265
|
+
font-weight: normal;
|
|
266
|
+
}
|
|
265
267
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
268
|
+
.button--pill:hover,
|
|
269
|
+
.button--pill:focus, {
|
|
270
|
+
font-weight: 600;
|
|
270
271
|
}
|
|
271
272
|
|
|
272
273
|
.button--menu--secondary {
|
{codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/static/portal/sass/partials/_popup.scss
RENAMED
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
.popup-box {
|
|
21
21
|
background-color: $color-background-secondary;
|
|
22
22
|
box-shadow: 0 0 4 * $spacing $color-background-box-shadow;
|
|
23
|
-
margin:
|
|
23
|
+
margin: 10% auto;
|
|
24
24
|
overflow: hidden;
|
|
25
|
-
width:
|
|
25
|
+
width: 520px;
|
|
26
26
|
|
|
27
27
|
.popup-box__msg {
|
|
28
28
|
@include _padding(0px, 5 * $spacing, 5 * $spacing, 5 * $spacing);
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
.popup-box__title {
|
|
48
48
|
@include _padding(5 * $spacing, 5 * $spacing, 0px, 5 * $spacing);
|
|
49
49
|
background-color: $color-background-secondary;
|
|
50
|
+
color: $color-text-primary;
|
|
50
51
|
display: flex;
|
|
51
52
|
justify-content: flex-start;
|
|
52
53
|
font-family: "Space Grotesk", sans-serif;
|
|
@@ -57,6 +58,10 @@
|
|
|
57
58
|
min-width:0;
|
|
58
59
|
@include _margin(8px, 8px, 8px, 8px);
|
|
59
60
|
}
|
|
61
|
+
|
|
62
|
+
label {
|
|
63
|
+
text-align: left;
|
|
64
|
+
}
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
&#screentime-popup,
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
type="image/x-icon">
|
|
33
33
|
{% endblock css %}
|
|
34
34
|
{% include "portal/tag_manager/tag_manager_head.html" %}
|
|
35
|
-
|
|
36
35
|
<script type="text/javascript" src="{% static 'portal/js/lib/modernizr-build.js' %}"></script>
|
|
37
36
|
<script type="text/javascript" src="{% static 'portal/js/common.js' %}"></script>
|
|
38
37
|
<script type="text/javascript" src="{% static 'portal/js/jquery.placeholder.js' %}"></script>
|
|
@@ -82,6 +81,7 @@
|
|
|
82
81
|
{% include "portal/tag_manager/tag_manager_body.html" %}
|
|
83
82
|
{% render_block "js" %}
|
|
84
83
|
{% include 'portal/mouseflow.html' %}
|
|
84
|
+
{% include "portal/partials/donate_popup.html" %}
|
|
85
85
|
<div class="content-footer-wrapper">
|
|
86
86
|
{% block contentWrapper %}
|
|
87
87
|
<div {% block pageID %}id="contentWrapper"{% endblock %}>
|
|
@@ -240,16 +240,25 @@
|
|
|
240
240
|
});
|
|
241
241
|
</script>
|
|
242
242
|
<script>
|
|
243
|
-
// disable newsletter signup
|
|
243
|
+
// disable newsletter signup and donate buttons by default
|
|
244
244
|
const newsletterSubmitButton = $('#submit_newsletter');
|
|
245
245
|
newsletterSubmitButton.addClass("disabled");
|
|
246
246
|
newsletterSubmitButton.prop("disabled", true);
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
const donateSubmitButton = $('#confirm_donate_button');
|
|
249
|
+
donateSubmitButton.addClass("disabled");
|
|
250
|
+
donateSubmitButton.prop("disabled", true);
|
|
251
|
+
|
|
252
|
+
// enable them or disable them depending on age verification checkbox
|
|
249
253
|
$('#id_age_verification').on("click", function() {
|
|
250
254
|
newsletterSubmitButton.prop("disabled", !this.checked);
|
|
251
255
|
newsletterSubmitButton.toggleClass("disabled", !this.checked);
|
|
252
256
|
});
|
|
257
|
+
|
|
258
|
+
$('#donate_age_verification').on("click", function() {
|
|
259
|
+
donateSubmitButton.prop("disabled", !this.checked);
|
|
260
|
+
donateSubmitButton.toggleClass("disabled", !this.checked);
|
|
261
|
+
})
|
|
253
262
|
</script>
|
|
254
263
|
{% endblock scripts %}
|
|
255
264
|
</body>
|
{codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/home_learning.html
RENAMED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
<div class="row">
|
|
16
16
|
<div class="col-sm-6">
|
|
17
17
|
<p>Rapid Router is our shopping delivery game that teaches children aged 5–14 to learn how to code using
|
|
18
|
-
Blockly
|
|
19
|
-
<p>The game and lessons support the English National Curriculum Computing strand, and
|
|
18
|
+
Blockly. The pupils can then progress to Python Den to continue to build up their skills.</p>
|
|
19
|
+
<p>The game and lessons support the English National Curriculum Computing strand, and teachers across the
|
|
20
20
|
world love them.</p>
|
|
21
21
|
<p>Now, we’ve made lessons available for parents and caregivers to teach at home, so we can #KeepKidsCoding.
|
|
22
22
|
They're free and easy, but most of all, they’re fun!</p>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
algorithms, and learn how to create and debug simple programs. Designed for children aged 5–7,
|
|
56
56
|
but start here if you’ve never played Rapid Router.
|
|
57
57
|
</div>
|
|
58
|
-
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/beginner
|
|
58
|
+
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/rapid-router-resources/beginner" target="_blank">
|
|
59
59
|
<button class="button--primary button--icon">
|
|
60
60
|
Go to lessons<span class="iconify" data-icon="mdi:open-in-new"></span>
|
|
61
61
|
</button>
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
programming constructs. Designed for children aged 8–11, but anyone can progress here if
|
|
122
122
|
ready.
|
|
123
123
|
</div>
|
|
124
|
-
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/intermediate
|
|
124
|
+
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/rapid-router-resources/intermediate" target="_blank">
|
|
125
125
|
<button class="button--primary button--icon">
|
|
126
126
|
Go to lessons<span class="iconify" data-icon="mdi:open-in-new"></span>
|
|
127
127
|
</button>
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
<div>Let’s get advanced! Learn about repeat loops and selection, variables, and how to create
|
|
151
151
|
efficient code. Designed for children aged 12–14, but open to all.
|
|
152
152
|
</div>
|
|
153
|
-
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/advanced
|
|
153
|
+
<a class="button" href="https://code-for-life.gitbook.io/independent-student-resources/rapid-router-resources/advanced" target="_blank">
|
|
154
154
|
<button class="button--primary button--icon">
|
|
155
155
|
Go to lessons<span class="iconify" data-icon="mdi:open-in-new"></span>
|
|
156
156
|
</button>
|
|
@@ -171,10 +171,11 @@
|
|
|
171
171
|
<h6>Session 3 & 4</h6>
|
|
172
172
|
<p>Extra tasks for children who want a challenge! Watch the if...do video to learn about selection
|
|
173
173
|
statements. Ask your child to explain how their finished program works!</p>
|
|
174
|
+
<h6>Session 5</h6>
|
|
175
|
+
<p>Learn more about if...else through traffic lights. In the Traffic Lights levels in Rapid Router, traffic light is a variable that either contains red or green.</p>
|
|
174
176
|
<h6>Extended</h6>
|
|
175
177
|
<p>Build on everything learned so far with traffic lights, limited blocks, procedures and brain teasers.
|
|
176
|
-
Older children might even like to start learning to program using the Python language using
|
|
177
|
-
80 onwards.</p>
|
|
178
|
+
Older children might even like to start learning to program using the Python language using <a href="{% url 'python_levels' %}">Python Den</a>.</p>
|
|
178
179
|
</div>
|
|
179
180
|
</div>
|
|
180
181
|
</div>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
{% load app_tags %}
|
|
3
|
+
{# A popup with a form input for email addresses. #}
|
|
4
|
+
<section id="donate-popup" class="popup-wrapper">
|
|
5
|
+
<div class="popup-box">
|
|
6
|
+
<div>
|
|
7
|
+
<button type="button" onclick="hideDonatePopup()" class="close popup-box__close" aria-label="Close">
|
|
8
|
+
<span class="iconify" data-icon="mdi:close"></span>
|
|
9
|
+
</button>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="popup-box__title"></div>
|
|
12
|
+
<div class="popup-box__msg"></div>
|
|
13
|
+
<form id="donate_form" action="{% url 'process_donate_form' %}"
|
|
14
|
+
method="post">
|
|
15
|
+
<div class="col-sm-12">
|
|
16
|
+
{{ donate_form.non_field_errors }}
|
|
17
|
+
<div class="form--row">
|
|
18
|
+
<div class="form--row__input">
|
|
19
|
+
<label><small>{{ donate_form.email.label }}</small></label>
|
|
20
|
+
<div class="input--icon">
|
|
21
|
+
{{ donate_form.email }}
|
|
22
|
+
<span class="iconify" data-icon="mdi:email-outline"></span>
|
|
23
|
+
</div>
|
|
24
|
+
{{ donate_form.email.errors }}
|
|
25
|
+
<small>{{ donate_form.email.help_text }}</small>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="form--row justify-content-between">
|
|
29
|
+
<div class="form__checkbox">
|
|
30
|
+
<div class="form__checkbox-input">
|
|
31
|
+
{{ donate_form.age_verification }}
|
|
32
|
+
</div>
|
|
33
|
+
<p class="p-0">Please confirm that you are over 18.</p>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="popup-box__buttons">
|
|
38
|
+
<a class="button button--small button--secondary button--secondary--dark"
|
|
39
|
+
onclick="hideDonatePopup()" aria-labelledby="cancel_button">Cancel</a>
|
|
40
|
+
<button type="submit" id="confirm_donate_button"
|
|
41
|
+
class='button button--small button--primary'
|
|
42
|
+
aria-labelledby="confirm_button">Confirm</button>
|
|
43
|
+
</div>
|
|
44
|
+
</form>
|
|
45
|
+
</div>
|
|
46
|
+
</section>
|
{codeforlife-portal-7.3.7 → codeforlife-portal-7.4.0}/portal/templates/portal/partials/header.html
RENAMED
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
<a class="button--menu button--menu--secondary button--menu--disabled">Games</a>
|
|
58
58
|
<a class="button--menu button--menu--secondary button--menu--disabled">Teaching Resources</a>
|
|
59
59
|
{% endif %}
|
|
60
|
+
<button onclick="showDonateConfirmation()" class="button--menu button--pill button--tertiary">Donate</button>
|
|
60
61
|
{% else %}
|
|
61
62
|
{% if user|is_independent_student %}
|
|
62
63
|
<div class="menu--title">Independent</div>
|
|
@@ -103,6 +104,7 @@
|
|
|
103
104
|
<div class="menu__left-side col-md-5">
|
|
104
105
|
<a href="{% url 'teach' %}" class="button--menu button--menu--primary button--menu--enabled">Teachers</a>
|
|
105
106
|
<a href="{% url 'play' %}" class="button--menu button--menu--primary button--menu--enabled">Students</a>
|
|
107
|
+
<button id="donate" onclick="showDonateConfirmation()" class="button--menu button--pill button--tertiary">Donate</button>
|
|
106
108
|
{% endif %}
|
|
107
109
|
</div>
|
|
108
110
|
{% if user|is_logged_in %}
|
|
@@ -145,36 +147,36 @@
|
|
|
145
147
|
{% endif %}
|
|
146
148
|
</ul>
|
|
147
149
|
</div>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
150
|
+
{% else %}
|
|
151
|
+
<div class="menu__right-side col-md-5">
|
|
152
|
+
<a href="{% url 'register' %}" id="signup_button" class="button button--primary button--register register">Register</a>
|
|
153
|
+
<div class="dropdown">
|
|
154
|
+
<button id="login_dropdown" class="button--regular button--secondary button--header--login button--dropdown"
|
|
155
|
+
data-toggle="dropdown">
|
|
156
|
+
<div class="dropdown__text">Log in</div>
|
|
157
|
+
</button>
|
|
158
|
+
<ul class="dropdown-menu header__login-options-dropdown-menu">
|
|
159
|
+
<li class="dropdown-menu__option">
|
|
160
|
+
<a id="teacher_login_button" class="button--regular" aria-labelledby="Teacher" href="{% url 'teacher_login' %}">
|
|
161
|
+
<div class="dropdown-menu__option__text">Teacher</div>
|
|
162
|
+
<span data-nosnippet class="material-icons-outlined">chevron_right</span>
|
|
163
|
+
</a>
|
|
164
|
+
</li>
|
|
165
|
+
<li class="dropdown-menu__option">
|
|
166
|
+
<a id="student_login_button" class="button--regular" aria-labelledby="Student" href="{% url 'student_login_access_code' %}">
|
|
167
|
+
<div class="dropdown-menu__option__text">Student</div>
|
|
168
|
+
<span data-nosnippet class="material-icons-outlined">chevron_right</span>
|
|
169
|
+
</a>
|
|
170
|
+
</li>
|
|
171
|
+
<li class="dropdown-menu__option">
|
|
172
|
+
<a id="independent_login_button" class="button--regular" aria-labelledby="Independent" href="{% url 'independent_student_login' %}">
|
|
173
|
+
<div class="dropdown-menu__option__text">Independent</div>
|
|
174
|
+
<span data-nosnippet class="material-icons-outlined">chevron_right</span>
|
|
175
|
+
</a>
|
|
176
|
+
</li>
|
|
177
|
+
</ul>
|
|
178
|
+
</div>
|
|
179
|
+
{% endif %}
|
|
178
180
|
</div>
|
|
179
181
|
</div>
|
|
180
182
|
<div id="menu-items" class="collapse">
|
|
@@ -239,6 +241,8 @@
|
|
|
239
241
|
{% else %}
|
|
240
242
|
<a class="button button--menu__item button--register"
|
|
241
243
|
href="{% url 'register' %}">Register now</a>
|
|
244
|
+
<button onclick="showDonateConfirmation()"
|
|
245
|
+
class="button--menu__item button--donate">Donate</button>
|
|
242
246
|
<button class="button--menu__item button--menu__item--sub-header login"
|
|
243
247
|
data-toggle="collapse" data-target="#login-tabs">Log in</button>
|
|
244
248
|
<div id="login-tabs" class="collapse">
|
|
@@ -10,6 +10,7 @@ from common.helpers.emails import (
|
|
|
10
10
|
send_dotmailer_consent_confirmation_email_to_user,
|
|
11
11
|
DotmailerUserType,
|
|
12
12
|
)
|
|
13
|
+
from common.mail import address_book_ids
|
|
13
14
|
from django.test import Client
|
|
14
15
|
from django.urls import reverse
|
|
15
16
|
|
|
@@ -21,7 +22,6 @@ from example_project.portal_test_settings import (
|
|
|
21
22
|
DOTMAILER_THANKS_FOR_STAYING_CAMPAIGN_ID,
|
|
22
23
|
DOTMAILER_CREATE_CONTACT_URL,
|
|
23
24
|
DOTMAILER_DELETE_USER_BY_ID_URL,
|
|
24
|
-
DOTMAILER_MAIN_ADDRESS_BOOK_URL,
|
|
25
25
|
DOTMAILER_TEACHER_ADDRESS_BOOK_URL,
|
|
26
26
|
DOTMAILER_STUDENT_ADDRESS_BOOK_URL,
|
|
27
27
|
DOTMAILER_NO_ACCOUNT_ADDRESS_BOOK_URL,
|
|
@@ -47,7 +47,11 @@ def test_newsletter_calls_correct_requests(mocker, monkeypatch):
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
add_to_dotmailer(
|
|
50
|
-
"Ray",
|
|
50
|
+
"Ray",
|
|
51
|
+
"Charles",
|
|
52
|
+
"ray.charles@example.com",
|
|
53
|
+
address_book_ids["newsletter"],
|
|
54
|
+
DotmailerUserType.TEACHER,
|
|
51
55
|
)
|
|
52
56
|
|
|
53
57
|
mocked_create_contact.assert_called_once()
|
|
@@ -121,17 +125,15 @@ def test_newsletter_sends_correct_request_data(
|
|
|
121
125
|
)
|
|
122
126
|
|
|
123
127
|
add_contact_to_address_book(
|
|
124
|
-
"Ray",
|
|
128
|
+
"Ray",
|
|
129
|
+
"Charles",
|
|
130
|
+
"ray.charles@example.com",
|
|
131
|
+
address_book_ids["newsletter"],
|
|
132
|
+
DotmailerUserType.TEACHER,
|
|
125
133
|
)
|
|
126
134
|
|
|
127
135
|
assert mocked_post.call_count == 3
|
|
128
136
|
|
|
129
|
-
mocked_post.assert_any_call(
|
|
130
|
-
DOTMAILER_MAIN_ADDRESS_BOOK_URL,
|
|
131
|
-
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|
|
132
|
-
json=expected_body2,
|
|
133
|
-
)
|
|
134
|
-
|
|
135
137
|
mocked_post.assert_any_call(
|
|
136
138
|
DOTMAILER_TEACHER_ADDRESS_BOOK_URL,
|
|
137
139
|
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|
|
@@ -141,17 +143,15 @@ def test_newsletter_sends_correct_request_data(
|
|
|
141
143
|
mocked_post.reset_mock()
|
|
142
144
|
|
|
143
145
|
add_contact_to_address_book(
|
|
144
|
-
"Ray",
|
|
146
|
+
"Ray",
|
|
147
|
+
"Charles",
|
|
148
|
+
"ray.charles@example.com",
|
|
149
|
+
address_book_ids["newsletter"],
|
|
150
|
+
DotmailerUserType.STUDENT,
|
|
145
151
|
)
|
|
146
152
|
|
|
147
153
|
assert mocked_post.call_count == 2
|
|
148
154
|
|
|
149
|
-
mocked_post.assert_any_call(
|
|
150
|
-
DOTMAILER_MAIN_ADDRESS_BOOK_URL,
|
|
151
|
-
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|
|
152
|
-
json=expected_body2,
|
|
153
|
-
)
|
|
154
|
-
|
|
155
155
|
mocked_post.assert_any_call(
|
|
156
156
|
DOTMAILER_STUDENT_ADDRESS_BOOK_URL,
|
|
157
157
|
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|
|
@@ -164,17 +164,12 @@ def test_newsletter_sends_correct_request_data(
|
|
|
164
164
|
"Ray",
|
|
165
165
|
"Charles",
|
|
166
166
|
"ray.charles@example.com",
|
|
167
|
+
address_book_ids["newsletter"],
|
|
167
168
|
DotmailerUserType.NO_ACCOUNT,
|
|
168
169
|
)
|
|
169
170
|
|
|
170
171
|
assert mocked_post.call_count == 2
|
|
171
172
|
|
|
172
|
-
mocked_post.assert_any_call(
|
|
173
|
-
DOTMAILER_MAIN_ADDRESS_BOOK_URL,
|
|
174
|
-
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|
|
175
|
-
json=expected_body2,
|
|
176
|
-
)
|
|
177
|
-
|
|
178
173
|
mocked_post.assert_any_call(
|
|
179
174
|
DOTMAILER_NO_ACCOUNT_ADDRESS_BOOK_URL,
|
|
180
175
|
auth=(DOTMAILER_USER, DOTMAILER_PASSWORD),
|