codeforlife-portal 8.4.2__tar.gz → 8.4.3__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-8.4.2/codeforlife_portal.egg-info → codeforlife_portal-8.4.3}/PKG-INFO +1 -1
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3/codeforlife_portal.egg-info}/PKG-INFO +1 -1
- codeforlife_portal-8.4.3/portal/__init__.py +1 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/teach.py +1 -1
- codeforlife_portal-8.4.3/portal/templates/portal/teach/teacher_edit_class.html +261 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_class.py +23 -28
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/teacher/teach.py +4 -4
- codeforlife_portal-8.4.2/portal/__init__.py +0 -1
- codeforlife_portal-8.4.2/portal/templates/portal/teach/teacher_edit_class.html +0 -255
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/LICENSE.md +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/MANIFEST.in +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/README.md +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/codeforlife_portal.egg-info/SOURCES.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/codeforlife_portal.egg-info/dependency_links.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/codeforlife_portal.egg-info/not-zip-safe +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/codeforlife_portal.egg-info/requires.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/codeforlife_portal.egg-info/top_level.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/captcha.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/admin_access.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/basicauth.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/exceptionlogging.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/maintenance.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/screentime_warning.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/security.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/middleware/session_timeout.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/apple-touch-icon-120x120.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/apple-touch-icon-152x152.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/apple-touch-icon-180x180.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/apple-touch-icon-76x76.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/apple-touch-icon.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/static/robots.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/templates/deploy/csrf_failure.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/deploy/views.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/admin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/app_settings.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/backends.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/beta.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/context_processors.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/admin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/dotmailer.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/error_messages.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/invite_teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/organisation.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/play.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/forms/registration.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/handlers.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/captcha.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/decorators.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/password.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/ratelimit.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/regexes.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/helpers/request_handlers.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0001_squashed_0041_new_news.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0042_school_country.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0043_auto_20150430_0952.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0044_auto_20150430_0959.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0045_auto_20150430_1446.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0046_auto_20150723_1101.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0047_remove_userprofile_avatar.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0048_plural_management_frontnews.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0049_refactor_emailverifications.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0050_refactor_emailverifications_2.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0051_add_missing_ev_records.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0052_refactor_emailverifications_3.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0053_refactor_teacher_student_1.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0054_pending_join_request_can_be_blank.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0055_add_preview_user.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0056_remove_preview_user.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0057_delete_frontpagenews.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0058_move_to_common_models.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0059_move_email_verifications_to_common.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0060_delete_guardian.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0061_make_portaladmin_teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/0062_verify_portaladmin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/migrations/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/mixins/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/mixins/cron_mixin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/models.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/permissions/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/permissions/is_cron_request_from_google.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/pipeline_compilers/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/pipeline_compilers/libsass_compiler.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/10_years_anniversary.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/10x_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/RR_logo_grass_background.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/RR_logo_green.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/RR_logo_simple.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/about_us_cfl.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/about_us_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/about_us_ocado.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/barefoot_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/bcs_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/clubs.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/coding_club_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/coding_club_python_pack.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/colorboxImages/border.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/colorboxImages/controls.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/colorboxImages/loading.gif +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/colorboxImages/loading_background.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/colorboxImages/overlay.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/confirmation_tick.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/cross.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/dee.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/facebook.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/favicon.ico +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/get_involved_hero.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/gitbook.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/gitbook_space.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/github.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/github_hero.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/gla_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/hamburger.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/help_and_support_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/home_educate.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/home_educate_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/home_learning_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/home_play.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/home_play_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/hope_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/howe_dell_1.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/howe_dell_2.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/howe_dell_3.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icl_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_controller.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_free.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_globe.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_piechart.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_step_by_step.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_tracking.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/icon_uk_flag.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/kirsty.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_cfl.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_cfl_powered.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_cfl_reminder_cards.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_cfl_white_landscape.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_ocado.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_ocado_group.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_ocado_group.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_ocado_group_white.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/logo_python_den.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/long_europe_map.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/mc_saatchi_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/nigel.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/ocado-swirl.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/oval_blue.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/oval_pink.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/oval_yellow.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/paper_plane.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/phil.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/polygon_blue.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/polygon_pink.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/polygon_yellow.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/pressure_cooker_logo.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/python_den.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/python_den_banner.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rapid_router.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rapid_router_landing_hero.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rapidrouter.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/resources_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/resources_montage.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/reuben.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rob.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rr_advanced.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rr_beginner.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/rr_intermediate.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/sadface.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/sharon_harrison.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/sian.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/teaching_resources_hero.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/ten_year_map_pin.svg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/thumbnail_educate_rapid_router.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/thumbnail_educate_resources.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/thumbnail_intro_c4l.jpg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/thumbnail_play_rapid_router.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/thumbnail_python_den.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/twitter.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/universities.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/img/wes.png +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/bootstrap.min.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/carouselCards.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/common.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/independentLogin.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/independentRegistration.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/join_create_game_toggle.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/jquery.placeholder.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/levelControl.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/jquery-video-lightning.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/jquery.colorbox.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/jquery.easy-ticker.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/jquery.min.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/modernizr-build.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/lib/papaparse.min.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/organisation_manage.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/passwordStrength.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/play.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/resetPassword.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/riveted.min.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/school.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/sticky_subnav.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/studentLogin.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/teach_browser.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/teach_class.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/teacherEditStudent.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/teacherLogin.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/js/tenYearMap.js +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_alerts.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_badges.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_breadcrumbs.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_button-groups.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_buttons.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_carousel.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_close.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_code.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_component-animations.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_dropdowns.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_forms.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_glyphicons.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_grid.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_input-groups.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_jumbotron.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_labels.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_list-group.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_media.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_mixins.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_modals.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_navbar.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_navs.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_normalize.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_pager.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_pagination.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_panels.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_popovers.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_print.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_progress-bars.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_responsive-embed.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_responsive-utilities.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_scaffolding.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_tables.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_theme.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_thumbnails.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_tooltip.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_type.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_utilities.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_variables.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/_wells.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_alerts.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_background-variant.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_border-radius.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_breakpoints.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_buttons.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_center-block.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_clearfix.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_forms.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_gradients.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_grid-framework.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_grid.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_hide-text.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_image.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_labels.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_list-group.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_nav-divider.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_opacity.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_pagination.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_panels.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_progress-bar.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_reset-filter.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_reset-text.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_resize.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_responsive-visibility.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_size.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_tab-focus.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_table-row.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_text-emphasis.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_text-overflow.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_text-truncate.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap/mixins/_vendor-prefixes.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_mixins/_all.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_mixins/_border-radius.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_mixins/_box-shadow.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_mixins/_hover.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_mixins/_nav-divider.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_partials/_dropdown.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_partials/_glyphicons.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_partials/_grid.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_partials/_variables.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_align.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_background.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_borders.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_clearfix.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_cursor.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_display.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_flex.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_float.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_position.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_screenreaders.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_sizing.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_spacing.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_text.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/bootstrap_utilities/_visibility.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/colorbox.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_all.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_animation.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_breakpoints.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_card_constants.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_colours.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_homepage_constants.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_levels.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_mixins.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/modules/_spacing.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_banners.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_base.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_buttons.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_carousel.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_footer.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_forms.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_grids.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_header.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_images.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_popup.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_progress-bars.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_subnavs.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_tables.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_text.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_ui-dialog.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/partials/_utils.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/sass/styles.scss +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/static/portal/video/code for life .pdf +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/about.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/coding_club.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/help_and_support.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/home_learning.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/materials.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/play.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/teach.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/teacher_resources.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/strings/ten_year_map.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/403.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/404.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/500.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/django_recaptcha/includes/js_v2_invisible.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/django_recaptcha/widget_v2_invisible.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/email.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/email.txt +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/maintenance.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/about.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/base.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/base_no_userprofile.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/coding_club.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/contribute.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/dotmailer_consent_form.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/email_invitation_sent.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/email_style_template.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/email_verification_failed.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/email_verification_needed.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/form_shapes.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/getinvolved.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/home.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/home_learning.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/locked_out.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/locked_out_school_student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/login/independent_student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/login/student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/login/student_class_code.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/login/teacher.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/banner.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/benefits.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/card_list.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/character_list.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/delete_popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/footer.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/header.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/headline.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/hero_card.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/info_popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/invite_admin_teacher.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/register_newsletter_tickbox.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/screentime_popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/service_unavailable_popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/session_popup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/teacher_non_dashboard_subnav.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/partials/teacher_non_dashboard_subnav_account.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/play/student_dashboard.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/play/student_edit_account.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/play/student_join_organisation.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/play.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/privacy_notice.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/register.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/reset_password.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/reset_password_confirm.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/reset_password_done.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/reset_password_email_sent.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/tag_manager/tag_manager_body.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/tag_manager/tag_manager_head.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/base_registering.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/class.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/dashboard.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/invited.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/onboarding_classes.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/onboarding_print.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/onboarding_school.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/onboarding_students.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_add_external_student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_added_external_student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_dismiss_students.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_edit_student.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_move_all_classes.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_move_students.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach/teacher_move_students_to_class.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/teach.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/ten_year_map.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/portal/terms.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_base.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_wizard_actions.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_wizard_actions_enable_2fa.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_wizard_actions_submit.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_wizard_forms.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/_wizard_forms_token.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/backup_token.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/core/backup_tokens.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/core/login.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/core/setup.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/core/setup_complete.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/profile/disable.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/profile/profile.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templates/two_factor/setup_wizard_token.html +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/app_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/banner_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/benefits_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/card_list_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/future.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/headline_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/hero_card_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/templatetags/table_tags.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/base_test.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/conftest.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_make_portaladmin_teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_preview_user_remove.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_preview_users.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_remove_front_page_news.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_remove_guardian.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_use_common_models.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/migrations/test_migration_verify_portaladmin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/admin/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/admin/admin_base_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/admin/admin_data_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/admin/admin_map_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/base_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/email_verification_needed_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/forbidden_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/game_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/home_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/independent_login_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/password_reset_form_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/password_reset_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play/account_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play/dashboard_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play/join_school_or_club_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play/play_base_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/play_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/resources_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/signup_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/student_login_class_code.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/student_login_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/add_independent_student_to_class_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/added_independent_student_to_class_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/class_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/dashboard_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/dismiss_students_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/edit_student_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/move_class_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/move_classes_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/move_students_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/onboarding_classes_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/onboarding_organisation_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/onboarding_student_list_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/onboarding_students_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teach/teach_base_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/pageObjects/portal/teacher_login_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/selenium_test_case.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/snapshots/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/snapshots/snap_test_partials.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_2FA.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_admin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_api.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_captcha_forms.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_emails.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_global_forms.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_helper_methods.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_independent_student.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_invite_teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_middleware.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_organisation.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_partials.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_ratelimit.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_school_student.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_security.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_teacher_student.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/test_views.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/utils/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/utils/classes.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/tests/utils/messages.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/urls.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/about.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/admin.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/api.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/cron/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/cron/user.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/dotmailer.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/email.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/google_analytics.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/home.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/legal.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/login/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/login/independent_student.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/login/student.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/login/teacher.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/organisation.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/play_landing_page.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/registration.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/student/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/student/edit_account_details.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/student/play.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/teach.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/teacher/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/teacher/dashboard.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/two_factor/__init__.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/two_factor/core.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/two_factor/form.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/views/two_factor/profile.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/portal/wsgi.py +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/pyproject.toml +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/setup.cfg +0 -0
- {codeforlife_portal-8.4.2 → codeforlife_portal-8.4.3}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "8.4.3"
|
|
@@ -327,7 +327,7 @@ class ClassLevelControlForm(forms.Form):
|
|
|
327
327
|
for worksheet in episode.worksheets.filter(before_level__isnull=True):
|
|
328
328
|
choices.append((f"worksheet:{worksheet.id}", episode.name))
|
|
329
329
|
|
|
330
|
-
self.fields[episode.
|
|
330
|
+
self.fields[f"episode{episode.id}"] = forms.MultipleChoiceField(
|
|
331
331
|
choices=itertools.chain(choices),
|
|
332
332
|
widget=forms.CheckboxSelectMultiple(),
|
|
333
333
|
required=False,
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
{% extends 'portal/base.html' %}
|
|
2
|
+
{% load static %}
|
|
3
|
+
{% load app_tags %}
|
|
4
|
+
|
|
5
|
+
{% block subNav %}
|
|
6
|
+
{% include "portal/partials/teacher_non_dashboard_subnav.html" %}
|
|
7
|
+
{% endblock subNav %}
|
|
8
|
+
|
|
9
|
+
{% block scripts %}
|
|
10
|
+
{{ block.super }}
|
|
11
|
+
<script type="text/javascript" src="{% static 'portal/js/levelControl.js' %}"></script>
|
|
12
|
+
<script>
|
|
13
|
+
// Uncheck the checkboxes that correspond to the already-locked levels
|
|
14
|
+
$(document).ready(function(){
|
|
15
|
+
const lockedLevelsIds = {{ locked_levels }};
|
|
16
|
+
const lockedWorksheetIds = {{ locked_worksheet_ids }};
|
|
17
|
+
|
|
18
|
+
lockedLevelsIds.forEach(function(lockedLevelId) {
|
|
19
|
+
const selector = `[value="level:${lockedLevelId}"]`;
|
|
20
|
+
$(selector).click();
|
|
21
|
+
})
|
|
22
|
+
lockedWorksheetIds.forEach(function(lockedWorksheetId) {
|
|
23
|
+
const selector = `[value="worksheet:${lockedWorksheetId}"]`;
|
|
24
|
+
$(selector).click();
|
|
25
|
+
})
|
|
26
|
+
})
|
|
27
|
+
</script>
|
|
28
|
+
{% endblock scripts %}
|
|
29
|
+
|
|
30
|
+
{% block content %}
|
|
31
|
+
<div id="teach_edit_class_page"></div>
|
|
32
|
+
|
|
33
|
+
<div class="background container">
|
|
34
|
+
<section>
|
|
35
|
+
<h4>Additional settings for class {{ class.name }} ({{ class.access_code }})</h4>
|
|
36
|
+
</section>
|
|
37
|
+
<p>
|
|
38
|
+
<a id="return_to_class_button" href="{% url 'view_class' class.access_code %}" class="button--menu button--menu--enabled">< Back to Edit Class</a>
|
|
39
|
+
</p>
|
|
40
|
+
<p>You may change the name of the class, or change permissions to allow external requests from independent
|
|
41
|
+
students to join this class. You may also transfer the class to another teacher, or change permissions to
|
|
42
|
+
allow pupils to see their classmates' progress.</p>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="background background--primary">
|
|
45
|
+
<div class="container">
|
|
46
|
+
<form method="post" class="pb-3">
|
|
47
|
+
{% csrf_token %}
|
|
48
|
+
|
|
49
|
+
{{ form.non_field_errors }}
|
|
50
|
+
|
|
51
|
+
<h5>Class details</h5>
|
|
52
|
+
|
|
53
|
+
<div class="row form--row">
|
|
54
|
+
<div class="form--row__input col-sm-6 col-md-6">
|
|
55
|
+
<div class="input--icon">
|
|
56
|
+
{{ form.name }}
|
|
57
|
+
<span class="iconify" data-icon="mdi:account-multiple"></span>
|
|
58
|
+
</div>
|
|
59
|
+
<small>{{ form.name.help_text }}</small>
|
|
60
|
+
{{ form.name.errors }}
|
|
61
|
+
</div>
|
|
62
|
+
<div class="form--row__input col-sm-12 col-md-6">
|
|
63
|
+
<div class="form__checkbox">
|
|
64
|
+
<div class="form__checkbox-input">
|
|
65
|
+
{{ form.classmate_progress }}
|
|
66
|
+
</div>
|
|
67
|
+
<label for="id_{{ form.classmate_progress.html_name }}" class="font-weight-normal">{{ form.classmate_progress.label }}</label>
|
|
68
|
+
</div>
|
|
69
|
+
{{ form.classmate_progress.errors }}
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="background">
|
|
74
|
+
<h5>External requests setting</h5>
|
|
75
|
+
<p>You can set up permissions for this class allowing students to send requests asking to join your class
|
|
76
|
+
from outside of your school or club.</p>
|
|
77
|
+
<p class="background"><strong>{{ external_requests_message }}</strong></p>
|
|
78
|
+
<div class="row form--row">
|
|
79
|
+
<div class="form--row__input col-md-6">
|
|
80
|
+
<label for="id_{{ form.external_requests.html_name }}" class="font-weight-normal">{{ form.external_requests.label }}</label>
|
|
81
|
+
{{ form.external_requests }}
|
|
82
|
+
<small>{{ form.external_requests.help_text }}</small>
|
|
83
|
+
{{ form.external_requests.errors }}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div class="button-group">
|
|
89
|
+
<a id="cancel_button" class="button button--secondary button--secondary--dark" href="{% url 'view_class' class.access_code %}">Cancel</a>
|
|
90
|
+
<button id="update_button" type="submit" class="button button--primary" name="class_edit_submit">Update</button>
|
|
91
|
+
</div>
|
|
92
|
+
</form>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<div class="background container">
|
|
97
|
+
<h5>Levels access settings</h5>
|
|
98
|
+
<p>You may control access to levels here by selecting what you wish to display to the students.</p>
|
|
99
|
+
|
|
100
|
+
<form method="post">
|
|
101
|
+
{% csrf_token %}
|
|
102
|
+
|
|
103
|
+
{{ level_control_form.non_field_errors }}
|
|
104
|
+
|
|
105
|
+
<div id="episodes">
|
|
106
|
+
<div class="panel-intro d-flex align-items-center justify-content-between">
|
|
107
|
+
<h6>Rapid Router levels</h6>
|
|
108
|
+
<label class="pr-5 mb-0 mr-5">
|
|
109
|
+
<input type="checkbox" id="select-all-blockly-levels">
|
|
110
|
+
</label>
|
|
111
|
+
</div>
|
|
112
|
+
{% for episode in blockly_episodes %}
|
|
113
|
+
{% with episode.id|stringformat:"s" as episode_id %}
|
|
114
|
+
{% with "episode"|add:episode_id as episode_index %}
|
|
115
|
+
<div class="panel">
|
|
116
|
+
<div class="panel-header bg--{{ episode.difficulty }}" id="episode-{{episode.id}}">
|
|
117
|
+
<div class="d-flex align-items-center justify-content-end" data-toggle="collapse"
|
|
118
|
+
data-target="#collapse-{{episode.id}}" aria-expanded="false"
|
|
119
|
+
aria-controls="collapse-{{episode.id}}" data-parent="#episodes">
|
|
120
|
+
<p class="episode-title flex-grow-1">{{episode.name}}</p>
|
|
121
|
+
<span>Levels {{episode.first_level}}-{{episode.last_level}}</span>
|
|
122
|
+
<div class="episode_range_text collapsed d-flex align-items-center justify-content-end"
|
|
123
|
+
data-toggle="collapse" data-target="#collapse-{{episode.id}}"
|
|
124
|
+
aria-expanded="false" aria-controls="collapse-{{episode.id}}" data-parent="#episodes">
|
|
125
|
+
<label class="mb-0" for="select-all-episode-levels">
|
|
126
|
+
<input type="checkbox" value="{{ episode_index }}" id="select-all-blockly-levels-{{ episode.id }}">
|
|
127
|
+
</label>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
<div id="collapse-{{episode.id}}" aria-labelledby="episode-{{episode.id}}" class="collapse">
|
|
132
|
+
<div class="panel-body d-flex justify-content-between">
|
|
133
|
+
<div class="d-flex flex-grow-1 flex-column justify-content-between">
|
|
134
|
+
{% for level in episode.levels %}
|
|
135
|
+
<p>{{level.name}}: {{level.title.strip | safe}}</p>
|
|
136
|
+
{% endfor %}
|
|
137
|
+
</div>
|
|
138
|
+
<div class="form__checkbox flex-column justify-content-between p-0">
|
|
139
|
+
{% for input in level_control_form|get_dict_item:episode_index %}
|
|
140
|
+
<div class="form__checkbox-input p-0">
|
|
141
|
+
{{ input }}
|
|
142
|
+
</div>
|
|
143
|
+
{% endfor %}
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
{% endwith %}
|
|
149
|
+
{% endwith %}
|
|
150
|
+
{% endfor %}
|
|
151
|
+
<div class="panel-intro d-flex align-items-center justify-content-between">
|
|
152
|
+
<h6>Python Den levels</h6>
|
|
153
|
+
<label class="pr-5 mb-0 mr-5">
|
|
154
|
+
<input type="checkbox" id="select-all-python-levels">
|
|
155
|
+
</label>
|
|
156
|
+
</div>
|
|
157
|
+
{% for episode in python_episodes %}
|
|
158
|
+
{% with episode.id|stringformat:"s" as episode_id %}
|
|
159
|
+
{% with "episode"|add:episode_id as episode_index %}
|
|
160
|
+
<div class="panel">
|
|
161
|
+
<div class="panel-header bg--{{ episode.difficulty }}" id="episode-{{episode.id}}">
|
|
162
|
+
<div class="d-flex align-items-center justify-content-end" data-toggle="collapse"
|
|
163
|
+
data-target="#collapse-{{episode.id}}" aria-expanded="false"
|
|
164
|
+
aria-controls="collapse-{{episode.id}}" data-parent="#episodes">
|
|
165
|
+
<p class="episode-title flex-grow-1">{{episode.name}}</p>
|
|
166
|
+
{% if episode.levels %}
|
|
167
|
+
{% if episode.first_level > 1009 %}
|
|
168
|
+
<span>Levels {{episode.first_level|stringformat:"i"|slice:"2:4"}}-{{episode.last_level|stringformat:"i"|slice:"2:4"}}</span>
|
|
169
|
+
{% else %}
|
|
170
|
+
{% if episode.last_level > 1009 %}
|
|
171
|
+
<span>Levels {{episode.first_level|stringformat:"i"|slice:"3:4"}}-{{episode.last_level|stringformat:"i"|slice:"2:4"}}</span>
|
|
172
|
+
{% else %}
|
|
173
|
+
<span>Levels {{episode.first_level|stringformat:"i"|slice:"3:4"}}-{{episode.last_level|stringformat:"i"|slice:"3:4"}}</span>
|
|
174
|
+
{% endif %}
|
|
175
|
+
{% endif %}
|
|
176
|
+
{% endif %}
|
|
177
|
+
<div class="episode_range_text collapsed d-flex align-items-center justify-content-end"
|
|
178
|
+
data-toggle="collapse" data-target="#collapse-{{episode.id}}"
|
|
179
|
+
aria-expanded="false" aria-controls="collapse-{{episode.id}}" data-parent="#episodes">
|
|
180
|
+
<label class="mb-0" for="select-all-episode-levels">
|
|
181
|
+
<input type="checkbox" value="{{ episode_index }}" id="select-all-python-levels-{{ episode.id }}">
|
|
182
|
+
</label>
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
<div id="collapse-{{episode.id}}" aria-labelledby="episode-{{episode.id}}" class="collapse">
|
|
187
|
+
<div class="panel-body d-flex justify-content-between">
|
|
188
|
+
<div class="d-flex flex-grow-1 flex-column justify-content-between">
|
|
189
|
+
{% for level in episode.levels %}
|
|
190
|
+
{% for worksheet in episode.worksheets %}
|
|
191
|
+
{% if worksheet.before_level == level.id %}
|
|
192
|
+
<p>{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</p>
|
|
193
|
+
{% endif %}
|
|
194
|
+
{% endfor %}
|
|
195
|
+
{% if level.name < 1010 %}
|
|
196
|
+
<p>{{level.name|stringformat:"i"|slice:"3:4"}}: {{level.title.strip | safe}}</p>
|
|
197
|
+
{% else %}
|
|
198
|
+
<p>{{level.name|stringformat:"i"|slice:"2:4"}}: {{level.title.strip | safe}}</p>
|
|
199
|
+
{% endif %}
|
|
200
|
+
{% endfor %}
|
|
201
|
+
{% for worksheet in episode.worksheets %}
|
|
202
|
+
{% if not worksheet.before_level %}
|
|
203
|
+
<p>{{episode.name}}{% if episode.worksheets|length > 1 %} pt. {{ worksheet.index }}{% endif %}</p>
|
|
204
|
+
{% endif %}
|
|
205
|
+
{% endfor %}
|
|
206
|
+
</div>
|
|
207
|
+
<div class="form__checkbox flex-column justify-content-between p-0">
|
|
208
|
+
{% for input in level_control_form|get_dict_item:episode_index %}
|
|
209
|
+
<div class="form__checkbox-input p-0">
|
|
210
|
+
{{ input }}
|
|
211
|
+
</div>
|
|
212
|
+
{% endfor %}
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
{% endwith %}
|
|
218
|
+
{% endwith %}
|
|
219
|
+
{% endfor %}
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div class="button-group">
|
|
223
|
+
<button id="lock_levels_button" class="button button--primary" type="submit" name="level_control_submit">
|
|
224
|
+
Save level settings</button>
|
|
225
|
+
</div>
|
|
226
|
+
</form>
|
|
227
|
+
</div>
|
|
228
|
+
|
|
229
|
+
<div class="background background--primary">
|
|
230
|
+
<div class="container">
|
|
231
|
+
<h5>Transfer class to another teacher</h5>
|
|
232
|
+
<p>Select a new teacher from your school or club to take over the above class from the list below.</p>
|
|
233
|
+
|
|
234
|
+
<p class="text-danger">
|
|
235
|
+
<strong>
|
|
236
|
+
Warning: The class will move immediately to the new teacher. Should you wish to undo this action,
|
|
237
|
+
please contact that teacher.
|
|
238
|
+
</strong>
|
|
239
|
+
</p>
|
|
240
|
+
|
|
241
|
+
<form method="post" class="pb-0">
|
|
242
|
+
{% csrf_token %}
|
|
243
|
+
|
|
244
|
+
{{ class_move_form.non_field_errors }}
|
|
245
|
+
|
|
246
|
+
<div class="row form--row">
|
|
247
|
+
<div class="form--row__input col-md-6">
|
|
248
|
+
<label for="id_{{ class_move_form.new_teacher.html_name }}" class="font-weight-normal"><strong>{{ class_move_form.new_teacher.label }}</strong></label>
|
|
249
|
+
{{ class_move_form.new_teacher }}
|
|
250
|
+
<small>{{ class_move_form.new_teacher.help_text }}</small>
|
|
251
|
+
{{ class_move_form.new_teacher.errors }}
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<div class="button-group">
|
|
256
|
+
<button id="move_button" class="button button--primary" type="submit" name="class_move_submit">Transfer class</button>
|
|
257
|
+
</div>
|
|
258
|
+
</form>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
{% endblock %}
|
|
@@ -138,7 +138,7 @@ class TestClass(TestCase):
|
|
|
138
138
|
url = reverse("teacher_edit_class", kwargs={"access_code": access_code1})
|
|
139
139
|
# POST request data for locking only the first level
|
|
140
140
|
data = {
|
|
141
|
-
"
|
|
141
|
+
"episode1": [
|
|
142
142
|
"level:2",
|
|
143
143
|
"level:3",
|
|
144
144
|
"level:4",
|
|
@@ -151,7 +151,7 @@ class TestClass(TestCase):
|
|
|
151
151
|
"level:11",
|
|
152
152
|
"level:12",
|
|
153
153
|
],
|
|
154
|
-
"
|
|
154
|
+
"episode2": [
|
|
155
155
|
"level:13",
|
|
156
156
|
"level:14",
|
|
157
157
|
"level:15",
|
|
@@ -159,7 +159,7 @@ class TestClass(TestCase):
|
|
|
159
159
|
"level:17",
|
|
160
160
|
"level:18",
|
|
161
161
|
],
|
|
162
|
-
"
|
|
162
|
+
"episode3": [
|
|
163
163
|
"level:19",
|
|
164
164
|
"level:20",
|
|
165
165
|
"level:21",
|
|
@@ -171,13 +171,13 @@ class TestClass(TestCase):
|
|
|
171
171
|
"level:27",
|
|
172
172
|
"level:28",
|
|
173
173
|
],
|
|
174
|
-
"
|
|
174
|
+
"episode4": [
|
|
175
175
|
"level:29",
|
|
176
176
|
"level:30",
|
|
177
177
|
"level:31",
|
|
178
178
|
"level:32",
|
|
179
179
|
],
|
|
180
|
-
"
|
|
180
|
+
"episode5": [
|
|
181
181
|
"level:33",
|
|
182
182
|
"level:34",
|
|
183
183
|
"level:35",
|
|
@@ -190,7 +190,7 @@ class TestClass(TestCase):
|
|
|
190
190
|
"level:42",
|
|
191
191
|
"level:43",
|
|
192
192
|
],
|
|
193
|
-
"
|
|
193
|
+
"episode6": [
|
|
194
194
|
"level:44",
|
|
195
195
|
"level:45",
|
|
196
196
|
"level:46",
|
|
@@ -199,7 +199,7 @@ class TestClass(TestCase):
|
|
|
199
199
|
"level:49",
|
|
200
200
|
"level:50",
|
|
201
201
|
],
|
|
202
|
-
"
|
|
202
|
+
"episode7": [
|
|
203
203
|
"level:53",
|
|
204
204
|
"level:78",
|
|
205
205
|
"level:79",
|
|
@@ -211,7 +211,7 @@ class TestClass(TestCase):
|
|
|
211
211
|
"level:54",
|
|
212
212
|
"level:55",
|
|
213
213
|
],
|
|
214
|
-
"
|
|
214
|
+
"episode8": [
|
|
215
215
|
# "level:85",
|
|
216
216
|
# "level:52",
|
|
217
217
|
# "level:60",
|
|
@@ -220,7 +220,7 @@ class TestClass(TestCase):
|
|
|
220
220
|
# "level:87",
|
|
221
221
|
# "level:61",
|
|
222
222
|
],
|
|
223
|
-
"
|
|
223
|
+
"episode9": [
|
|
224
224
|
"level:56",
|
|
225
225
|
"level:57",
|
|
226
226
|
"level:58",
|
|
@@ -234,7 +234,7 @@ class TestClass(TestCase):
|
|
|
234
234
|
"level:112",
|
|
235
235
|
"level:92",
|
|
236
236
|
],
|
|
237
|
-
"
|
|
237
|
+
"episode10": [
|
|
238
238
|
"level:93",
|
|
239
239
|
"level:63",
|
|
240
240
|
"level:64",
|
|
@@ -248,7 +248,7 @@ class TestClass(TestCase):
|
|
|
248
248
|
"level:96",
|
|
249
249
|
"level:97",
|
|
250
250
|
],
|
|
251
|
-
"
|
|
251
|
+
"episode11": [
|
|
252
252
|
"level:98",
|
|
253
253
|
"level:70",
|
|
254
254
|
"level:71",
|
|
@@ -291,7 +291,7 @@ class TestClass(TestCase):
|
|
|
291
291
|
|
|
292
292
|
# Resubmitting to unlock level 1
|
|
293
293
|
data = {
|
|
294
|
-
"
|
|
294
|
+
"episode1": [
|
|
295
295
|
"level:1",
|
|
296
296
|
"level:2",
|
|
297
297
|
"level:3",
|
|
@@ -305,7 +305,7 @@ class TestClass(TestCase):
|
|
|
305
305
|
"level:11",
|
|
306
306
|
"level:12",
|
|
307
307
|
],
|
|
308
|
-
"
|
|
308
|
+
"episode2": [
|
|
309
309
|
"level:13",
|
|
310
310
|
"level:14",
|
|
311
311
|
"level:15",
|
|
@@ -313,7 +313,7 @@ class TestClass(TestCase):
|
|
|
313
313
|
"level:17",
|
|
314
314
|
"level:18",
|
|
315
315
|
],
|
|
316
|
-
"
|
|
316
|
+
"episode3": [
|
|
317
317
|
"level:19",
|
|
318
318
|
"level:20",
|
|
319
319
|
"level:21",
|
|
@@ -325,13 +325,13 @@ class TestClass(TestCase):
|
|
|
325
325
|
"level:27",
|
|
326
326
|
"level:28",
|
|
327
327
|
],
|
|
328
|
-
"
|
|
328
|
+
"episode4": [
|
|
329
329
|
"level:29",
|
|
330
330
|
"level:30",
|
|
331
331
|
"level:31",
|
|
332
332
|
"level:32",
|
|
333
333
|
],
|
|
334
|
-
"
|
|
334
|
+
"episode5": [
|
|
335
335
|
"level:33",
|
|
336
336
|
"level:34",
|
|
337
337
|
"level:35",
|
|
@@ -344,7 +344,7 @@ class TestClass(TestCase):
|
|
|
344
344
|
"level:42",
|
|
345
345
|
"level:43",
|
|
346
346
|
],
|
|
347
|
-
"
|
|
347
|
+
"episode6": [
|
|
348
348
|
"level:44",
|
|
349
349
|
"level:45",
|
|
350
350
|
"level:46",
|
|
@@ -353,7 +353,7 @@ class TestClass(TestCase):
|
|
|
353
353
|
"level:49",
|
|
354
354
|
"level:50",
|
|
355
355
|
],
|
|
356
|
-
"
|
|
356
|
+
"episode7": [
|
|
357
357
|
"level:53",
|
|
358
358
|
"level:78",
|
|
359
359
|
"level:79",
|
|
@@ -365,7 +365,7 @@ class TestClass(TestCase):
|
|
|
365
365
|
"level:54",
|
|
366
366
|
"level:55",
|
|
367
367
|
],
|
|
368
|
-
"
|
|
368
|
+
"episode8": [
|
|
369
369
|
# "level:85",
|
|
370
370
|
# "level:52",
|
|
371
371
|
# "level:60",
|
|
@@ -374,7 +374,7 @@ class TestClass(TestCase):
|
|
|
374
374
|
# "level:87",
|
|
375
375
|
# "level:61",
|
|
376
376
|
],
|
|
377
|
-
"
|
|
377
|
+
"episode9": [
|
|
378
378
|
"level:56",
|
|
379
379
|
"level:57",
|
|
380
380
|
"level:58",
|
|
@@ -388,7 +388,7 @@ class TestClass(TestCase):
|
|
|
388
388
|
"level:112",
|
|
389
389
|
"level:92",
|
|
390
390
|
],
|
|
391
|
-
"
|
|
391
|
+
"episode10": [
|
|
392
392
|
"level:93",
|
|
393
393
|
"level:63",
|
|
394
394
|
"level:64",
|
|
@@ -402,7 +402,7 @@ class TestClass(TestCase):
|
|
|
402
402
|
"level:96",
|
|
403
403
|
"level:97",
|
|
404
404
|
],
|
|
405
|
-
"
|
|
405
|
+
"episode11": [
|
|
406
406
|
"level:98",
|
|
407
407
|
"level:70",
|
|
408
408
|
"level:71",
|
|
@@ -546,12 +546,7 @@ class TestClassFrontend(BaseTest):
|
|
|
546
546
|
class_name = "Class!"
|
|
547
547
|
|
|
548
548
|
self.selenium.get(self.live_server_url)
|
|
549
|
-
page = (
|
|
550
|
-
HomePage(self.selenium)
|
|
551
|
-
.go_to_teacher_login_page()
|
|
552
|
-
.login_no_class(email, password)
|
|
553
|
-
.open_classes_tab()
|
|
554
|
-
)
|
|
549
|
+
page = HomePage(self.selenium).go_to_teacher_login_page().login_no_class(email, password).open_classes_tab()
|
|
555
550
|
|
|
556
551
|
page = page.create_class(class_name, False)
|
|
557
552
|
|
|
@@ -431,18 +431,18 @@ def mark_levels_to_lock_in_episodes(request, episodes, levels_to_lock_ids, locke
|
|
|
431
431
|
:param levels_to_lock_ids: A list of Level IDs marked to be locked.
|
|
432
432
|
"""
|
|
433
433
|
for episode in episodes:
|
|
434
|
-
episode_name = episode["name"]
|
|
435
434
|
episode_levels = episode["levels"]
|
|
436
435
|
episode_worksheets = episode["worksheets"]
|
|
437
|
-
|
|
436
|
+
episode_index = f"episode{episode['id']}"
|
|
437
|
+
if episode_index in request.POST:
|
|
438
438
|
[
|
|
439
439
|
levels_to_lock_ids.append(episode_level["id"])
|
|
440
440
|
for episode_level in episode_levels
|
|
441
|
-
if f'level:{episode_level["id"]}' not in request.POST.getlist(
|
|
441
|
+
if f'level:{episode_level["id"]}' not in request.POST.getlist(episode_index)
|
|
442
442
|
]
|
|
443
443
|
for episode_worksheet in episode_worksheets:
|
|
444
444
|
worksheet_id = episode_worksheet["id"]
|
|
445
|
-
if f"worksheet:{worksheet_id}" not in request.POST.getlist(
|
|
445
|
+
if f"worksheet:{worksheet_id}" not in request.POST.getlist(episode_index):
|
|
446
446
|
locked_worksheet_ids.append(worksheet_id)
|
|
447
447
|
else:
|
|
448
448
|
[levels_to_lock_ids.append(episode_level["id"]) for episode_level in episode_levels]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "8.4.2"
|