codeforlife-portal 1.0.0.post.dev485__tar.gz → 1.0.0.post.dev489__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.
Files changed (721) hide show
  1. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/PKG-INFO +1 -1
  2. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/PKG-INFO +1 -1
  3. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/SOURCES.txt +2 -0
  4. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/_version.py +2 -2
  5. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/sass/styles.scss +60 -0
  6. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/base_new.html +1 -1
  7. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/dashboard.html +67 -42
  8. codeforlife-portal-1.0.0.post.dev489/portal/templates/redesign/teach_new/teacher_move_all_classes_new.html +81 -0
  9. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/dashboard_page_new.py +15 -11
  10. codeforlife-portal-1.0.0.post.dev489/portal/tests/pageObjects/portal/teach/move_classes_page_new.py +55 -0
  11. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_organisation_new.py +92 -0
  12. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/urls.py +2 -1
  13. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/organisation_new.py +41 -0
  14. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/dashboard.py +1 -1
  15. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/MANIFEST.in +0 -0
  16. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/README.md +0 -0
  17. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/dependency_links.txt +0 -0
  18. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/not-zip-safe +0 -0
  19. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/requires.txt +0 -0
  20. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/codeforlife_portal.egg-info/top_level.txt +0 -0
  21. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/__init__.py +0 -0
  22. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/captcha.py +0 -0
  23. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/mail.py +0 -0
  24. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/middleware/__init__.py +0 -0
  25. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/middleware/basicauth.py +0 -0
  26. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/middleware/exceptionlogging.py +0 -0
  27. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/permissions.py +0 -0
  28. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/apple-touch-icon-120x120.png +0 -0
  29. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/apple-touch-icon-152x152.png +0 -0
  30. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/apple-touch-icon-180x180.png +0 -0
  31. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/apple-touch-icon-76x76.png +0 -0
  32. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/apple-touch-icon.png +0 -0
  33. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/static/robots.txt +0 -0
  34. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/templates/deploy/csrf_failure.html +0 -0
  35. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/deploy/views.py +0 -0
  36. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/example_project/__init__.py +0 -0
  37. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/example_project/example_project/__init__.py +0 -0
  38. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/example_project/example_project/settings.py +0 -0
  39. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/example_project/example_project/wsgi.py +0 -0
  40. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/example_project/manage.py +0 -0
  41. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/__init__.py +0 -0
  42. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/admin.py +0 -0
  43. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/app_settings.py +0 -0
  44. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/autoconfig.py +0 -0
  45. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/beta.py +0 -0
  46. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/emailMessages.py +0 -0
  47. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/emailMessages_new.py +0 -0
  48. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/__init__.py +0 -0
  49. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/admin_login.py +0 -0
  50. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/auth_forms.py +0 -0
  51. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/home.py +0 -0
  52. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/organisation.py +0 -0
  53. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/play.py +0 -0
  54. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/play_new.py +0 -0
  55. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/registration.py +0 -0
  56. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/registration_new.py +0 -0
  57. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/teach.py +0 -0
  58. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/forms/teach_new.py +0 -0
  59. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/handlers.py +0 -0
  60. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/__init__.py +0 -0
  61. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/emails.py +0 -0
  62. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/emails_new.py +0 -0
  63. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/generators.py +0 -0
  64. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/location.py +0 -0
  65. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/helpers/password.py +0 -0
  66. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/middleware/__init__.py +0 -0
  67. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/middleware/ratelimit_login_attempts.py +0 -0
  68. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0001_squashed_0041_new_news.py +0 -0
  69. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0042_school_country.py +0 -0
  70. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0043_auto_20150430_0952.py +0 -0
  71. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0044_auto_20150430_0959.py +0 -0
  72. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0045_auto_20150430_1446.py +0 -0
  73. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0046_auto_20150723_1101.py +0 -0
  74. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0047_remove_userprofile_avatar.py +0 -0
  75. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0048_plural_management_frontnews.py +0 -0
  76. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0049_refactor_emailverifications.py +0 -0
  77. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0050_refactor_emailverifications_2.py +0 -0
  78. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0051_add_missing_ev_records.py +0 -0
  79. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0052_refactor_emailverifications_3.py +0 -0
  80. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/0053_refactor_teacher_student_1.py +0 -0
  81. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/migrations/__init__.py +0 -0
  82. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/models.py +0 -0
  83. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/permissions.py +0 -0
  84. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/email_media/logo_c4l_hexa.png +0 -0
  85. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/colorbox.css +0 -0
  86. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/common.css +0 -0
  87. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/KS-level-sprite.png +0 -0
  88. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/Menu-arrow-down.png +0 -0
  89. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/animated-overlay.gif +0 -0
  90. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  91. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  92. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_flat_10_000000_40x100.png +0 -0
  93. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  94. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  95. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  96. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  97. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  98. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  99. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-icons_222222_256x240.png +0 -0
  100. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-icons_228ef1_256x240.png +0 -0
  101. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-icons_ef8c08_256x240.png +0 -0
  102. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-icons_ffd27a_256x240.png +0 -0
  103. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/images/ui-icons_ffffff_256x240.png +0 -0
  104. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/jquery-ui.css +0 -0
  105. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/jquery-ui.structure.css +0 -0
  106. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/jquery-ui.theme.css +0 -0
  107. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/list.css +0 -0
  108. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/materials.css +0 -0
  109. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/noJS.css +0 -0
  110. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/reset.css +0 -0
  111. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/solution_selection.css +0 -0
  112. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/styles.css +0 -0
  113. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/css/tables.css +0 -0
  114. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/fonts/glyphicons-halflings-regular.eot +0 -0
  115. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/fonts/glyphicons-halflings-regular.svg +0 -0
  116. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/fonts/glyphicons-halflings-regular.ttf +0 -0
  117. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/fonts/glyphicons-halflings-regular.woff +0 -0
  118. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/fonts/glyphicons-halflings-regular.woff2 +0 -0
  119. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/2fa_authenticator_link.png +0 -0
  120. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/RR_logo_blank.png +0 -0
  121. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/RRlogo_on_green.png +0 -0
  122. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/RRlogo_on_green_small.png +0 -0
  123. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/RRlogo_on_less_green.png +0 -0
  124. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/RRlogo_on_less_green_small.png +0 -0
  125. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/colorboxImages/border.png +0 -0
  126. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/colorboxImages/controls.png +0 -0
  127. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/colorboxImages/loading.gif +0 -0
  128. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/colorboxImages/loading_background.png +0 -0
  129. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/colorboxImages/overlay.png +0 -0
  130. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/dee_hi_res.png +0 -0
  131. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/dee_large.png +0 -0
  132. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/dee_red_box.png +0 -0
  133. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/favicon.ico +0 -0
  134. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/kirsty.png +0 -0
  135. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/kirsty_hi_res.png +0 -0
  136. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/kirsty_large.png +0 -0
  137. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_001.png +0 -0
  138. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_002.png +0 -0
  139. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_003.png +0 -0
  140. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_004.png +0 -0
  141. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_005.png +0 -0
  142. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_006.png +0 -0
  143. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_007.png +0 -0
  144. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_008.png +0 -0
  145. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_009.png +0 -0
  146. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_010.png +0 -0
  147. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_011.png +0 -0
  148. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_012.png +0 -0
  149. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_013.png +0 -0
  150. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_014.png +0 -0
  151. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_015.png +0 -0
  152. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_016.png +0 -0
  153. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_017.png +0 -0
  154. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_018.png +0 -0
  155. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_019.png +0 -0
  156. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_020.png +0 -0
  157. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_021.png +0 -0
  158. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_022.png +0 -0
  159. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_023.png +0 -0
  160. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_024.png +0 -0
  161. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_025.png +0 -0
  162. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_026.png +0 -0
  163. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_027.png +0 -0
  164. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_028.png +0 -0
  165. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_029.png +0 -0
  166. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_030.png +0 -0
  167. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_031.png +0 -0
  168. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_032.png +0 -0
  169. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_033.png +0 -0
  170. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_034.png +0 -0
  171. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_035.png +0 -0
  172. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_036.png +0 -0
  173. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_037.png +0 -0
  174. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_038.png +0 -0
  175. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_039.png +0 -0
  176. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_040.png +0 -0
  177. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_041.png +0 -0
  178. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_042.png +0 -0
  179. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_043.png +0 -0
  180. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_044.png +0 -0
  181. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_045.png +0 -0
  182. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_046.png +0 -0
  183. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_047.png +0 -0
  184. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_048.png +0 -0
  185. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_049.png +0 -0
  186. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_050.png +0 -0
  187. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_051.png +0 -0
  188. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_052.png +0 -0
  189. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_053.png +0 -0
  190. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_054.png +0 -0
  191. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_055.png +0 -0
  192. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_056.png +0 -0
  193. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_057.png +0 -0
  194. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_058.png +0 -0
  195. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_059.png +0 -0
  196. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_060.png +0 -0
  197. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_061.png +0 -0
  198. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_062.png +0 -0
  199. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_063.png +0 -0
  200. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_064.png +0 -0
  201. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_065.png +0 -0
  202. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_066.png +0 -0
  203. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_067.png +0 -0
  204. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_068.png +0 -0
  205. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_069.png +0 -0
  206. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_070.png +0 -0
  207. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_071.png +0 -0
  208. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_072.png +0 -0
  209. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_073.png +0 -0
  210. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_074.png +0 -0
  211. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_075.png +0 -0
  212. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_076.png +0 -0
  213. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_077.png +0 -0
  214. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_078.png +0 -0
  215. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_079.png +0 -0
  216. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_080.png +0 -0
  217. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_081.png +0 -0
  218. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_082.png +0 -0
  219. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_083.png +0 -0
  220. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_084.png +0 -0
  221. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_085.png +0 -0
  222. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_086.png +0 -0
  223. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_087.png +0 -0
  224. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_088.png +0 -0
  225. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_089.png +0 -0
  226. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_090.png +0 -0
  227. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_091.png +0 -0
  228. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_092.png +0 -0
  229. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_093.png +0 -0
  230. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_094.png +0 -0
  231. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_095.png +0 -0
  232. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_096.png +0 -0
  233. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_097.png +0 -0
  234. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_098.png +0 -0
  235. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_099.png +0 -0
  236. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_100.png +0 -0
  237. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_101.png +0 -0
  238. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_102.png +0 -0
  239. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_103.png +0 -0
  240. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_104.png +0 -0
  241. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_105.png +0 -0
  242. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_106.png +0 -0
  243. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_107.png +0 -0
  244. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_108.png +0 -0
  245. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/levels/level_109.png +0 -0
  246. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/logged_in_blob.png +0 -0
  247. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/logged_out_blob.png +0 -0
  248. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/logo_c4l_horizontal.png +0 -0
  249. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/movie_file.png +0 -0
  250. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/nigel.png +0 -0
  251. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/nigel_hi_res.png +0 -0
  252. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/nigel_large.png +0 -0
  253. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/padlock.png +0 -0
  254. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/pdfsmall.png +0 -0
  255. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/phil.png +0 -0
  256. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/phil_hi_res.png +0 -0
  257. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/phil_large.png +0 -0
  258. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/qr_code_scan.png +0 -0
  259. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/rrBG.jpg +0 -0
  260. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/rrBGIE.jpg +0 -0
  261. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/rrBGsmall.jpg +0 -0
  262. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_080.png +0 -0
  263. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_081.png +0 -0
  264. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_082.png +0 -0
  265. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_083.png +0 -0
  266. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_084.png +0 -0
  267. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_085.png +0 -0
  268. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_086.png +0 -0
  269. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_087.png +0 -0
  270. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_088.png +0 -0
  271. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_089.png +0 -0
  272. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_090.png +0 -0
  273. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solutionPY_091.png +0 -0
  274. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_001.png +0 -0
  275. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_002.png +0 -0
  276. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_003.png +0 -0
  277. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_004.png +0 -0
  278. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_005.png +0 -0
  279. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_006.png +0 -0
  280. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_007.png +0 -0
  281. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_008.png +0 -0
  282. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_009.png +0 -0
  283. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_010.png +0 -0
  284. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_011.png +0 -0
  285. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_012.png +0 -0
  286. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_013.png +0 -0
  287. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_014.png +0 -0
  288. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_015.png +0 -0
  289. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_016.png +0 -0
  290. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_017.png +0 -0
  291. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_018.png +0 -0
  292. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_019.png +0 -0
  293. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_020.png +0 -0
  294. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_021.png +0 -0
  295. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_022.png +0 -0
  296. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_023.png +0 -0
  297. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_024.png +0 -0
  298. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_025.png +0 -0
  299. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_026.png +0 -0
  300. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_027.png +0 -0
  301. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_028.png +0 -0
  302. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_029.png +0 -0
  303. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_030.png +0 -0
  304. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_031.png +0 -0
  305. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_032.png +0 -0
  306. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_033.png +0 -0
  307. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_034.png +0 -0
  308. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_035.png +0 -0
  309. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_036.png +0 -0
  310. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_037.png +0 -0
  311. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_038.png +0 -0
  312. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_039.png +0 -0
  313. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_040.png +0 -0
  314. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_041.png +0 -0
  315. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_042.png +0 -0
  316. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_043.png +0 -0
  317. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_044.png +0 -0
  318. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_045.png +0 -0
  319. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_046.png +0 -0
  320. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_047.png +0 -0
  321. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_048.png +0 -0
  322. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_049.png +0 -0
  323. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_050.png +0 -0
  324. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_051.png +0 -0
  325. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_052.png +0 -0
  326. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_053.png +0 -0
  327. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_054.png +0 -0
  328. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_055.png +0 -0
  329. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_056.png +0 -0
  330. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_057.png +0 -0
  331. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_058.png +0 -0
  332. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_059.png +0 -0
  333. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_060.png +0 -0
  334. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_061.png +0 -0
  335. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_062.png +0 -0
  336. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_063.png +0 -0
  337. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_064.png +0 -0
  338. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_065.png +0 -0
  339. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_066.png +0 -0
  340. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_067.png +0 -0
  341. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_068.png +0 -0
  342. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_069.png +0 -0
  343. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_070.png +0 -0
  344. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_071.png +0 -0
  345. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_072.png +0 -0
  346. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_073.png +0 -0
  347. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_074.png +0 -0
  348. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_075.png +0 -0
  349. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_076.png +0 -0
  350. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_077.png +0 -0
  351. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_078.png +0 -0
  352. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_079.png +0 -0
  353. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_080.png +0 -0
  354. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_081.png +0 -0
  355. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_082.png +0 -0
  356. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_083.png +0 -0
  357. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_084.png +0 -0
  358. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_085.png +0 -0
  359. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_086.png +0 -0
  360. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_087.png +0 -0
  361. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_088.png +0 -0
  362. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_089.png +0 -0
  363. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_090.png +0 -0
  364. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_091.png +0 -0
  365. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_092.png +0 -0
  366. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_093.png +0 -0
  367. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_094.png +0 -0
  368. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_095.png +0 -0
  369. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_096.png +0 -0
  370. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_097.png +0 -0
  371. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_098.png +0 -0
  372. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_099.png +0 -0
  373. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_100.png +0 -0
  374. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_101.png +0 -0
  375. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_102.png +0 -0
  376. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_103.png +0 -0
  377. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_104.png +0 -0
  378. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_105.png +0 -0
  379. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_106.png +0 -0
  380. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_107.png +0 -0
  381. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_108.png +0 -0
  382. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/solutions/solution_109.png +0 -0
  383. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/video_still.png +0 -0
  384. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/wes.png +0 -0
  385. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/wes_hi_res.png +0 -0
  386. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/wes_large.png +0 -0
  387. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img/zip.png +0 -0
  388. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/10x_logo.png +0 -0
  389. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/a_fun_game_for_students.jpg +0 -0
  390. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/about_blockly.png +0 -0
  391. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/about_us_hero.jpg +0 -0
  392. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/background_blue.png +0 -0
  393. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/background_orange.png +0 -0
  394. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/barefoot_logo.png +0 -0
  395. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/bcs_logo.png +0 -0
  396. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/confirmation_tick.png +0 -0
  397. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/cross.png +0 -0
  398. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/dee.png +0 -0
  399. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/facebook.png +0 -0
  400. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/footer_arrow.png +0 -0
  401. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/form_chooser_arrow.png +0 -0
  402. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/gla_logo.png +0 -0
  403. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/google+.png +0 -0
  404. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/hamburger.png +0 -0
  405. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/help_and_support_hero.jpg +0 -0
  406. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/home_educate_hero.jpg +0 -0
  407. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/home_play_hero.jpg +0 -0
  408. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/hope_logo.png +0 -0
  409. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icl_logo.png +0 -0
  410. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_13.png +0 -0
  411. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_close.png +0 -0
  412. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_free.png +0 -0
  413. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_game.png +0 -0
  414. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_globe.png +0 -0
  415. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_graph.png +0 -0
  416. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_info.png +0 -0
  417. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_laptop.png +0 -0
  418. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/icon_steps.png +0 -0
  419. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/kirsty.png +0 -0
  420. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/logo_c4l_hexa.png +0 -0
  421. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/logo_c4l_horizontal.png +0 -0
  422. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/logo_ocado.png +0 -0
  423. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/logout_icon.png +0 -0
  424. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/mc_saatchi_logo.png +0 -0
  425. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/nigel.png +0 -0
  426. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/paper_plane.png +0 -0
  427. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/phil.png +0 -0
  428. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/play_button.png +0 -0
  429. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/pressure_cooker_logo.png +0 -0
  430. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/rapid_router.png +0 -0
  431. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/rapid_router_background.jpg +0 -0
  432. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/rapid_router_landing_hero.png +0 -0
  433. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/resources_image.png +0 -0
  434. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/sadface.png +0 -0
  435. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/sharon_harrison.jpg +0 -0
  436. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/stage_icon_ks1.png +0 -0
  437. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/stage_icon_lks2.png +0 -0
  438. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/stage_icon_uks2.png +0 -0
  439. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/step_done.png +0 -0
  440. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/step_in_progress.png +0 -0
  441. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/step_undone.png +0 -0
  442. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teacher1.png +0 -0
  443. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teacher2.png +0 -0
  444. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teacher3.png +0 -0
  445. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teacher_dashboard.png +0 -0
  446. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teaching_resources.jpg +0 -0
  447. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/teaching_tools.jpg +0 -0
  448. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/thumbnail_intro_c4l.jpg +0 -0
  449. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/thumbnail_intro_rr.jpg +0 -0
  450. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/twitter.png +0 -0
  451. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/warning.png +0 -0
  452. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/wes.png +0 -0
  453. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/img_new/zip.png +0 -0
  454. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/bootstrap.js +0 -0
  455. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/common.js +0 -0
  456. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/deleteWorkspaces.js +0 -0
  457. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/fuzzySchoolLookup.js +0 -0
  458. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/jquery.placeholder.js +0 -0
  459. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/jquery-ui.js +0 -0
  460. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/jquery-video-lightning.js +0 -0
  461. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/jquery.colorbox.js +0 -0
  462. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/jquery.easy-ticker.js +0 -0
  463. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/jquery.js +0 -0
  464. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/magnific.js +0 -0
  465. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/lib/modernizr.custom.79639.js +0 -0
  466. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/organisation_manage.js +0 -0
  467. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/passwordStrength.js +0 -0
  468. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/passwordStrength_new.js +0 -0
  469. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/play.js +0 -0
  470. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/riveted.min.js +0 -0
  471. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/solutionSelection.js +0 -0
  472. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/sticky_subnav.js +0 -0
  473. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/student_login.js +0 -0
  474. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/student_login_new.js +0 -0
  475. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/teach_browser.js +0 -0
  476. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/teach_class.js +0 -0
  477. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/js/teach_class_new.js +0 -0
  478. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/sass/bootstrap.scss +0 -0
  479. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/static/portal/sass/colorbox.scss +0 -0
  480. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/403.html +0 -0
  481. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/404.html +0 -0
  482. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/500.html +0 -0
  483. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/email.html +0 -0
  484. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/email.txt +0 -0
  485. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/2FA_redirect.html +0 -0
  486. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/about.html +0 -0
  487. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/admin/aggregated_data.html +0 -0
  488. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/admin/map.html +0 -0
  489. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/base.html +0 -0
  490. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/base_no_userprofile.html +0 -0
  491. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/contact.html +0 -0
  492. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/email_verification_failed.html +0 -0
  493. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/email_verification_needed.html +0 -0
  494. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/help-and-support.html +0 -0
  495. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/home.html +0 -0
  496. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/locked_out.html +0 -0
  497. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/mouseflow.html +0 -0
  498. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/play/base.html +0 -0
  499. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/play/student_details.html +0 -0
  500. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/play/student_edit_account.html +0 -0
  501. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/play/student_join_organisation.html +0 -0
  502. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/play.html +0 -0
  503. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/base.html +0 -0
  504. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/materials/base.html +0 -0
  505. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/materials/home.html +0 -0
  506. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/materials/viewer.html +0 -0
  507. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/organisation_create.html +0 -0
  508. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/organisation_manage.html +0 -0
  509. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_add_external_student.html +0 -0
  510. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_added_external_student.html +0 -0
  511. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_class.html +0 -0
  512. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_classes.html +0 -0
  513. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_dismiss_students.html +0 -0
  514. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_edit_account.html +0 -0
  515. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_edit_class.html +0 -0
  516. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_edit_student.html +0 -0
  517. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_home.html +0 -0
  518. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_lesson_plans.html +0 -0
  519. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_lesson_plans_python.html +0 -0
  520. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_level_solutions.html +0 -0
  521. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_move_all_classes.html +0 -0
  522. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_move_class.html +0 -0
  523. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_move_students.html +0 -0
  524. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_move_students_to_class.html +0 -0
  525. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_new_students.html +0 -0
  526. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_solution.html +0 -0
  527. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_solutionPY.html +0 -0
  528. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_student_reset.html +0 -0
  529. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach/teacher_students_reset.html +0 -0
  530. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/teach.html +0 -0
  531. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/portal/terms.html +0 -0
  532. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/about_new.html +0 -0
  533. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/email_verification_failed_new.html +0 -0
  534. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/email_verification_needed_new.html +0 -0
  535. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/help-and-support_new.html +0 -0
  536. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/home_new.html +0 -0
  537. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/login.html +0 -0
  538. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/play_new.html +0 -0
  539. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/register.html +0 -0
  540. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_confirm.html +0 -0
  541. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_done.html +0 -0
  542. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_email.html +0 -0
  543. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_email_sent.html +0 -0
  544. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_student.html +0 -0
  545. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/reset_password_teach.html +0 -0
  546. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/base_logged_in.html +0 -0
  547. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/base_registering.html +0 -0
  548. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/class_new.html +0 -0
  549. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/materials_new.html +0 -0
  550. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/onboarding_classes.html +0 -0
  551. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/onboarding_complete.html +0 -0
  552. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/onboarding_print.html +0 -0
  553. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/onboarding_school.html +0 -0
  554. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/onboarding_students.html +0 -0
  555. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_dismiss_students_new.html +0 -0
  556. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_edit_class_new.html +0 -0
  557. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_edit_student_new.html +0 -0
  558. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_move_class_new.html +0 -0
  559. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_move_students_new.html +0 -0
  560. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_move_students_to_class_new.html +0 -0
  561. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/teacher_student_reset_new.html +0 -0
  562. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new/viewer_new.html +0 -0
  563. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/teach_new.html +0 -0
  564. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/redesign/terms_new.html +0 -0
  565. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/login.html +0 -0
  566. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/password_reset_complete.html +0 -0
  567. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/password_reset_confirm.html +0 -0
  568. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/password_reset_done.html +0 -0
  569. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/password_reset_email.html +0 -0
  570. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/student_password_reset_form.html +0 -0
  571. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/registration/teacher_password_reset_form.html +0 -0
  572. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/two_factor/_base.html +0 -0
  573. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/two_factor/core/setup_complete.html +0 -0
  574. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templates/two_factor/profile/profile.html +0 -0
  575. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templatetags/__init__.py +0 -0
  576. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templatetags/app_tags.py +0 -0
  577. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/templatetags/table_tags.py +0 -0
  578. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/__init__.py +0 -0
  579. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/base_test.py +0 -0
  580. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/base_test_migration.py +0 -0
  581. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/base_test_new.py +0 -0
  582. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/custom_handler.py +0 -0
  583. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/__init__.py +0 -0
  584. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/__init__.py +0 -0
  585. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/about_page.py +0 -0
  586. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/admin/__init__.py +0 -0
  587. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/admin/admin_base_page.py +0 -0
  588. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/admin/admin_data_page.py +0 -0
  589. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/admin/admin_login_page.py +0 -0
  590. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/admin/admin_map_page.py +0 -0
  591. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/base_page.py +0 -0
  592. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/contact_page.py +0 -0
  593. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/email_verification_needed_page.py +0 -0
  594. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/email_verification_needed_page_new.py +0 -0
  595. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/forbidden_page.py +0 -0
  596. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/game_page.py +0 -0
  597. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/help_and_support_page.py +0 -0
  598. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/help_and_support_page_new.py +0 -0
  599. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/home_page.py +0 -0
  600. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/home_page_new.py +0 -0
  601. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/login_page.py +0 -0
  602. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/password_reset_form_page_new.py +0 -0
  603. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/pdf_viewer_page.py +0 -0
  604. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play/__init__.py +0 -0
  605. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play/account_page.py +0 -0
  606. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play/dashboard_page.py +0 -0
  607. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play/join_school_or_club_page.py +0 -0
  608. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play/play_base_page.py +0 -0
  609. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/play_page.py +0 -0
  610. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/resources_page.py +0 -0
  611. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/signup_page.py +0 -0
  612. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/student_password_reset_form_page_new.py +0 -0
  613. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/__init__.py +0 -0
  614. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/account_page.py +0 -0
  615. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/add_independent_student_to_class_page.py +0 -0
  616. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/added_independent_student_to_class_page.py +0 -0
  617. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/class_page.py +0 -0
  618. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/class_page_new.py +0 -0
  619. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/class_settings_page.py +0 -0
  620. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/class_settings_page_new.py +0 -0
  621. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/classes_page.py +0 -0
  622. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/dashboard_page.py +0 -0
  623. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/dismiss_students_page.py +0 -0
  624. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/dismiss_students_page_new.py +0 -0
  625. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/edit_student_page.py +0 -0
  626. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/edit_student_password_page.py +0 -0
  627. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_class_page.py +0 -0
  628. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_class_page_new.py +0 -0
  629. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py +0 -0
  630. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_students_disambiguate_page_new.py +0 -0
  631. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_students_page.py +0 -0
  632. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/move_students_page_new.py +0 -0
  633. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/new_students_page.py +0 -0
  634. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/onboarding_classes_page.py +0 -0
  635. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/onboarding_organisation_page.py +0 -0
  636. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/onboarding_revoke_request_page.py +0 -0
  637. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/onboarding_student_list_page.py +0 -0
  638. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/onboarding_students_page.py +0 -0
  639. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/organisation_create_page.py +0 -0
  640. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/organisation_manage_page.py +0 -0
  641. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/organisation_revoke_page.py +0 -0
  642. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/teach_base_page.py +0 -0
  643. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/teach_base_page_new.py +0 -0
  644. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach/thanks_for_reset_page.py +0 -0
  645. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teach_page.py +0 -0
  646. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/teacher_password_reset_form_page_new.py +0 -0
  647. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/portal/terms_page.py +0 -0
  648. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/registration/__init__.py +0 -0
  649. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/registration/independent_student_login_form_page.py +0 -0
  650. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/registration/password_reset_form_page.py +0 -0
  651. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/registration/student_password_reset_form_page.py +0 -0
  652. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/pageObjects/registration/teacher_password_reset_form_page.py +0 -0
  653. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_admin.py +0 -0
  654. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_api.py +0 -0
  655. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_class.py +0 -0
  656. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_class_new.py +0 -0
  657. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_contact.py +0 -0
  658. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_emails.py +0 -0
  659. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_independent_student.py +0 -0
  660. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_independent_student_joins_a_class.py +0 -0
  661. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_independent_student_new.py +0 -0
  662. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_location.py +0 -0
  663. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_navigation.py +0 -0
  664. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_organisation.py +0 -0
  665. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_school_student.py +0 -0
  666. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_school_student_new.py +0 -0
  667. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_security.py +0 -0
  668. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_teacher.py +0 -0
  669. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_teacher_new.py +0 -0
  670. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_teacher_student.py +0 -0
  671. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_teacher_student_new.py +0 -0
  672. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_views.py +0 -0
  673. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/test_views_new.py +0 -0
  674. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/__init__.py +0 -0
  675. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/classes.py +0 -0
  676. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/classes_new.py +0 -0
  677. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/email.py +0 -0
  678. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/email_new.py +0 -0
  679. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/messages.py +0 -0
  680. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/organisation.py +0 -0
  681. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/organisation_new.py +0 -0
  682. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/student.py +0 -0
  683. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/student_new.py +0 -0
  684. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/teacher.py +0 -0
  685. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/tests/utils/teacher_new.py +0 -0
  686. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/utils.py +0 -0
  687. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/__init__.py +0 -0
  688. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/admin.py +0 -0
  689. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/api.py +0 -0
  690. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/email.py +0 -0
  691. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/email_new.py +0 -0
  692. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/home.py +0 -0
  693. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/home_new.py +0 -0
  694. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/organisation.py +0 -0
  695. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/play.py +0 -0
  696. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/registration.py +0 -0
  697. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/registration_new.py +0 -0
  698. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/__init__.py +0 -0
  699. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/home.py +0 -0
  700. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/home_new.py +0 -0
  701. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/pdfs.py +0 -0
  702. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/solutions_level_selector.py +0 -0
  703. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/teach.py +0 -0
  704. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/views/teacher/teach_new.py +0 -0
  705. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/portal/wsgi.py +0 -0
  706. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/ratelimit/__init__.py +0 -0
  707. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/ratelimit/backends/__init__.py +0 -0
  708. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/ratelimit/backends/cache.py +0 -0
  709. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/ratelimit/decorators.py +0 -0
  710. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/__init__.py +0 -0
  711. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/admin.py +0 -0
  712. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/migrations/0001_initial.py +0 -0
  713. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/migrations/0002_hitsperlevelperday.py +0 -0
  714. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/migrations/__init__.py +0 -0
  715. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/models.py +0 -0
  716. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/tests.py +0 -0
  717. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/urls.py +0 -0
  718. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/reports/views.py +0 -0
  719. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/setup.cfg +0 -0
  720. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/setup.py +0 -0
  721. {codeforlife-portal-1.0.0.post.dev485 → codeforlife-portal-1.0.0.post.dev489}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: codeforlife-portal
3
- Version: 1.0.0.post.dev485
3
+ Version: 1.0.0.post.dev489
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  Author: UNKNOWN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: codeforlife-portal
3
- Version: 1.0.0.post0.dev485
3
+ Version: 1.0.0.post0.dev489
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  Author: UNKNOWN
@@ -555,6 +555,7 @@ portal/templates/redesign/teach_new/onboarding_students.html
555
555
  portal/templates/redesign/teach_new/teacher_dismiss_students_new.html
556
556
  portal/templates/redesign/teach_new/teacher_edit_class_new.html
557
557
  portal/templates/redesign/teach_new/teacher_edit_student_new.html
558
+ portal/templates/redesign/teach_new/teacher_move_all_classes_new.html
558
559
  portal/templates/redesign/teach_new/teacher_move_class_new.html
559
560
  portal/templates/redesign/teach_new/teacher_move_students_new.html
560
561
  portal/templates/redesign/teach_new/teacher_move_students_to_class_new.html
@@ -650,6 +651,7 @@ portal/tests/pageObjects/portal/teach/edit_student_page.py
650
651
  portal/tests/pageObjects/portal/teach/edit_student_password_page.py
651
652
  portal/tests/pageObjects/portal/teach/move_class_page.py
652
653
  portal/tests/pageObjects/portal/teach/move_class_page_new.py
654
+ portal/tests/pageObjects/portal/teach/move_classes_page_new.py
653
655
  portal/tests/pageObjects/portal/teach/move_students_disambiguate_page.py
654
656
  portal/tests/pageObjects/portal/teach/move_students_disambiguate_page_new.py
655
657
  portal/tests/pageObjects/portal/teach/move_students_page.py
@@ -11,8 +11,8 @@ version_json = '''
11
11
  {
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "3668346e26acc734fb77e588bca50a346f433b09",
15
- "version": "1.0.0.post.dev485"
14
+ "full-revisionid": "5c6dfcb91e3b082431a8c5faadf19023a2a583fa",
15
+ "version": "1.0.0.post.dev489"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -15,12 +15,19 @@ $color-quote-text: $color-teacher-blue;
15
15
  $color-quote-name: $color-text-grey;
16
16
  //Buttons
17
17
  $color-button-primary-action-general-play: $color-teacher-blue;
18
+ $color-button-primary-action-general-play-hover: #002284;
18
19
  $color-button-primary-action-general-educate: $color-student-orange;
20
+ $color-button-primary-action-general-educate-hover: #c15b00;
19
21
  $color-button-primary-action-positive: #7ed321;
22
+ $color-button-primary-action-positive-hover: #2dbf00;
20
23
  $color-button-primary-action-negative: #ff637d;
24
+ $color-button-primary-action-negative-hover: #d32a46;
21
25
  $color-button-primary-action-danger: #f00;
26
+ $color-button-primary-action-danger-hover: #df0531;
22
27
  $color-button-primary-action-navigation: $color-text-grey;
28
+ $color-button-primary-action-navigation-hover: #000;
23
29
  $color-button-primary-action-setup: #fab300;
30
+ $color-button-primary-action-setup-hover: #ff9500;
24
31
  $color-button-secondary-border-light: #fff;
25
32
  $color-button-secondary-border-dark: $color-text-grey;
26
33
  $color-button-border-teacher: $color-teacher-blue;
@@ -335,6 +342,10 @@ button,
335
342
  background-color: transparent;
336
343
  border-bottom: 6px solid $color-background-secondary;
337
344
  border-radius: 0;
345
+
346
+ &:hover {
347
+ font-weight: 600;
348
+ }
338
349
  }
339
350
 
340
351
  .button--menu--disabled {
@@ -390,42 +401,74 @@ button,
390
401
  .button--primary--general-play {
391
402
  background: $color-button-primary-action-general-play;
392
403
  color: $color-text-secondary;
404
+
405
+ &:hover {
406
+ background: $color-button-primary-action-general-play-hover;
407
+ }
393
408
  }
394
409
 
395
410
  .button--primary--general-educate {
396
411
  background: $color-button-primary-action-general-educate;
397
412
  color: $color-text-secondary;
413
+
414
+ &:hover {
415
+ background: $color-button-primary-action-general-educate-hover;
416
+ }
398
417
  }
399
418
 
400
419
  .button--primary--positive {
401
420
  background: $color-button-primary-action-positive;
402
421
  color: $color-text-secondary;
422
+
423
+ &:hover {
424
+ background: $color-button-primary-action-positive-hover;
425
+ }
403
426
  }
404
427
 
405
428
  .button--primary--negative {
406
429
  background: $color-button-primary-action-negative;
407
430
  color: $color-text-secondary;
431
+
432
+ &:hover {
433
+ background: $color-button-primary-action-negative-hover;
434
+ }
408
435
  }
409
436
 
410
437
  .button--primary--danger,
411
438
  .ui-dialog-buttonset button {
412
439
  background: $color-button-primary-action-danger;
413
440
  color: $color-text-secondary;
441
+
442
+ &:hover {
443
+ background: $color-button-primary-action-danger-hover;
444
+ }
414
445
  }
415
446
 
416
447
  .button--primary--navigation {
417
448
  background: $color-button-primary-action-navigation;
418
449
  color: $color-text-secondary;
450
+
451
+ &:hover {
452
+ background: $color-button-primary-action-navigation-hover;
453
+ }
419
454
  }
420
455
 
421
456
  .button--primary--setup {
422
457
  background: $color-button-primary-action-setup;
423
458
  color: $color-text-secondary;
459
+
460
+ &:hover {
461
+ background: $color-button-primary-action-setup-hover;
462
+ }
424
463
  }
425
464
 
426
465
  .button--secondary {
427
466
  background-color: transparent;
428
467
  border: 1px solid;
468
+
469
+ &:hover {
470
+ border: 2px solid;
471
+ }
429
472
  }
430
473
 
431
474
  .button--secondary--light {
@@ -446,6 +489,10 @@ button,
446
489
  }
447
490
  }
448
491
 
492
+ .home-icon:hover {
493
+ color: $color-background-primary;
494
+ }
495
+
449
496
  .button--secondary--no-border {
450
497
  border-color: transparent;
451
498
  color: $color-text-tertiary;
@@ -1216,10 +1263,23 @@ td {
1216
1263
  border: 2px solid $color-text-secondary;
1217
1264
  }
1218
1265
 
1266
+ .secondary-table {
1267
+ table,
1268
+ th,
1269
+ td {
1270
+ border: 2px solid $color-background-tint-primary;
1271
+ }
1272
+ }
1273
+
1219
1274
  .header-primary {
1220
1275
  th {
1221
1276
  background-color: $color-table-header-primary;
1222
1277
  }
1278
+
1279
+ td {
1280
+ background-color: $color-background-secondary;
1281
+ }
1282
+
1223
1283
  }
1224
1284
 
1225
1285
  .header-secondary {
@@ -86,7 +86,7 @@
86
86
  <div class="menu__left-side col-sm-6 col-sm-offset-2">
87
87
  <button class="hamburger" data-toggle="collapse" data-target="#menu-items"></button>
88
88
  <a href="{% url 'home_new' %}"><img class="logo-horizontal" src='{% static "portal/img_new/logo-horizontal.png" %}'></a>
89
- <a href="{% url 'home_new' %}" class="button--regular button--secondary button--secondary--no-border home-icon"><div class="glyphicon glyphicon-home"></div></a>
89
+ <a href="{% url 'home_new' %}" class="button--regular button--secondary--no-border home-icon"><div class="glyphicon glyphicon-home"></div></a>
90
90
  {% block leftMenuButtons %}
91
91
  {% if user|is_logged_in %}
92
92
  {% if user|is_logged_in_as_teacher %}
@@ -77,18 +77,22 @@
77
77
  {% else %}
78
78
  <h4 class="col-sm-6 col-center">You can see which other teachers in your school or club are registered here. Should you need to leave the
79
79
  school or club, you can do so below.</h4>
80
+ <form method="post" action="{% url 'organisation_leave_new' %}">
81
+ {% csrf_token %}
82
+ <button id="leave_organisation_button" class="button--regular button--secondary button--secondary--dark"
83
+ type="submit">Leave school or club</button>
84
+ </form>
80
85
  {% endif %}
81
86
  </section>
82
87
 
88
+ {% if is_admin %}
83
89
  <div class="background col-sm-7 col-center">
84
90
  <h3>These teachers are already part of your school or club</h3>
85
91
  <table id="teachers_table" class="header-primary data-primary">
86
92
  <tr>
87
93
  <th><p class="body-text">Name</p></th>
88
94
  <th><p class="body-text">Administrator status</p></th>
89
- {% if is_admin %}
90
- <th colspan="3"><p class="body-text">Status actions</p></th>
91
- {% endif %}
95
+ <th colspan="3"><p class="body-text">Status actions</p></th>
92
96
  </tr>
93
97
  {% for coworker in coworkers %}
94
98
  <tr>
@@ -96,7 +100,7 @@
96
100
  {% if coworker.new_user == user %}<b>(you)</b>{% endif %}</p></td>
97
101
  <td><p class="small-text">{% if coworker.is_admin %}Administrator{% else %}Standard Teacher{% endif %}{% if coworker.is_admin or is_admin %}
98
102
  ({{ coworker.new_user.email|emaildomain }}){% endif %}</p></td>
99
- {% if coworker.new_user != user and is_admin %}
103
+ {% if coworker.new_user != user %}
100
104
  <td class="cell-center">
101
105
  <button id="kick_button" class="button--small button--primary--danger"
102
106
  onclick="showRemoveConfirmation('{% url 'organisation_kick_new' coworker.id %}', '{{ coworker.new_user.first_name|striptags | escapejs }}')">
@@ -116,52 +120,72 @@
116
120
  onclick="showDisable2FAConfirmation('{% url 'teacher_disable_2FA_new' coworker.id %}', '{{ coworker.new_user.first_name|striptags | escapejs}}')">
117
121
  Disable 2FA</button>{% endif %}</td>
118
122
  {% else %}
119
- {% if is_admin %}
120
- <td></td>
121
- <td></td>
122
- <td></td>
123
- {% endif %}
123
+ <td></td>
124
+ <td></td>
125
+ <td></td>
124
126
  {% endif %}
125
127
  </tr>
126
128
  {% endfor %}
127
129
  </table>
128
- {% if is_admin %}
129
- <p class="body-text">Select &lsquo;Remove&rsquo; to delete a teacher from your school or club. You will be able to move any existing classes assigned to that
130
- teacher to other teachers in your school or club.</p>
131
- <p class="body-text">If another teacher is having problems with their Two Factor Authentication, you can disable it for them by selecting &lsquo;Disable 2FA&rsquo;.
132
- We strongly recommend that administrators who are using 2FA ensure there is another administrator who will be able to disable their 2FA should they have problems
133
- with their smartphone or tablet.</p>
134
- {% endif %}
130
+ <p class="body-text">Select &lsquo;Remove&rsquo; to delete a teacher from your school or club. You will be able to move any existing classes assigned to that
131
+ teacher to other teachers in your school or club.</p>
132
+ <p class="body-text">If another teacher is having problems with their Two Factor Authentication, you can disable it for them by selecting &lsquo;Disable 2FA&rsquo;.
133
+ We strongly recommend that administrators who are using 2FA ensure there is another administrator who will be able to disable their 2FA should they have problems
134
+ with their smartphone or tablet.</p>
135
135
  </div>
136
-
137
- <div id="requests">
138
- <div class="background col-sm-7 col-center">
139
- <h3>These teachers have requested to join your school or club</h3>
140
- {% if join_requests %}
141
- <table id="request_table" class="header-primary data-primary">
142
- <tr>
143
- <th><p class="body-text">Name</p></th>
144
- <th><p class="body-text">Email address</p></th>
145
- <th colspan="2"><p class="body-text">Actions</p></th>
146
- </tr>
147
- {% for join_request in join_requests %}
136
+ {% else %}
137
+ <div class="background background--primary secondary-table">
138
+ <div class="col-sm-7 col-center">
139
+ <h3>These teachers are already part of your school or club</h3>
140
+ <table class="header-primary">
141
+ <tr>
142
+ <th><p class="body-text">Name</p></th>
143
+ <th><p class="body-text">Administrator status</p></th>
144
+ </tr>
145
+ {% for coworker in coworkers %}
146
+ <tr>
147
+ <td><p class="small-text">{{ coworker.title }} {{ coworker.new_user.first_name }} {{ coworker.new_user.last_name }}
148
+ {% if coworker.new_user == user %}<b>(you)</b>{% endif %}</p></td>
149
+ <td><p class="small-text">{% if coworker.is_admin %}Administrator{% else %}Standard Teacher{% endif %}{% if coworker.is_admin or is_admin %}
150
+ ({{ coworker.new_user.email|emaildomain }}){% endif %}</p></td>
151
+ </tr>
152
+ {% endfor %}
153
+ </table>
154
+ </div>
155
+ </div>
156
+ {% endif %}
157
+
158
+ {% if is_admin %}
159
+ {% if join_requests %}
160
+ <div id="requests">
161
+ <div class="background col-sm-7 col-center">
162
+ <h3>These teachers have requested to join your school or club</h3>
163
+ {% if join_requests %}
164
+ <table id="request_table" class="header-primary data-primary">
148
165
  <tr>
149
- <td><p class="small-text">{{ join_request.title }} {{ join_request.new_user.first_name }} {{ join_request.new_user.last_name }}</p></td>
150
- <td><p class="small-text">{{ join_request.new_user.email }}</p></td>
151
- <td class="cell-center">
152
- <a id="allow_button" class="button button--small button--primary--positive"
153
- href="{% url 'organisation_allow_join_new' join_request.id %}">Allow</a></td>
154
- <td class="cell-center">
155
- <a id="deny_button" class="button button--small button--primary--danger"
156
- href="{% url 'organisation_deny_join_new' join_request.id %}">Deny</a></td>
166
+ <th><p class="body-text">Name</p></th>
167
+ <th><p class="body-text">Email address</p></th>
168
+ <th colspan="2"><p class="body-text">Actions</p></th>
157
169
  </tr>
158
- {% endfor %}
159
- </table>
160
- {% else %}
161
- <p class="body-text">No teachers have currently requested to join your school or club.</p>
162
- {% endif %}
170
+ {% for join_request in join_requests %}
171
+ <tr>
172
+ <td><p class="small-text">{{ join_request.title }} {{ join_request.new_user.first_name }} {{ join_request.new_user.last_name }}</p></td>
173
+ <td><p class="small-text">{{ join_request.new_user.email }}</p></td>
174
+ <td class="cell-center">
175
+ <a id="allow_button" class="button button--small button-primary button--primary--positive"
176
+ href="{% url 'organisation_allow_join_new' join_request.id %}">Allow</a></td>
177
+ <td class="cell-center">
178
+ <a id="deny_button" class="button button--small button-primary button--primary--danger"
179
+ href="{% url 'organisation_deny_join_new' join_request.id %}">Deny</a></td>
180
+ </tr>
181
+ {% endfor %}
182
+ </table>
183
+ {% else %}
184
+ <p class="body-text">No teachers have currently requested to join your school or club.</p>
185
+ {% endif %}
186
+ </div>
163
187
  </div>
164
- </div>
188
+ {% endif %}
165
189
 
166
190
  <div id="school-details" class="background background--primary">
167
191
  <div class="col-sm-7 col-center">
@@ -184,6 +208,7 @@
184
208
  </form>
185
209
  </div>
186
210
  </div>
211
+ {% endif %}
187
212
  </div>
188
213
 
189
214
  <div id="classes">
@@ -0,0 +1,81 @@
1
+ {% extends 'redesign/teach_new/base_logged_in.html' %}
2
+ {% load static %}
3
+ {% load app_tags %}
4
+
5
+ {% block dashboard %}
6
+ <a href="{% url 'dashboard' %}" class="button--menu button--menu--secondary button--menu--enabled button--menu--teacher--active">School / Club</a>
7
+ {% endblock dashboard %}
8
+
9
+ {% block subNav %}
10
+ {{ block.super }}
11
+ <div class="sticky-subnav sub-nav sub-nav--hidden sub-nav--teacher">
12
+ <a href="{% url 'dashboard' %}#school" class="button button--regular button--secondary button--secondary--light">Your school</a>
13
+ <a href="{% url 'dashboard' %}#classes" class="button button--regular button--secondary button--secondary--light">Classes</a>
14
+ <a href="{% url 'dashboard' %}#account" class="button button--regular button--secondary button--secondary--light">Your Account</a>
15
+ </div>
16
+
17
+ <section class="banner banner--teacher row">
18
+ <h1 class="col-sm-8 col-sm-offset-2 banner__text--primary">Welcome back, {{ user|make_into_username }}</h1>
19
+ </section>
20
+ <div class="sub-nav sub-nav--teacher">
21
+ <div class="col-sm-12">
22
+ <a href="{% url 'dashboard' %}#school" class="button button--regular button--secondary button--secondary--light">Your school</a>
23
+ <a href="{% url 'dashboard' %}#classes" class="button button--regular button--secondary button--secondary--light">Classes</a>
24
+ <a href="{% url 'dashboard' %}#account" class="button button--regular button--secondary button--secondary--light">Your Account</a>
25
+ </div>
26
+ </div>
27
+ {% endblock subNav %}
28
+
29
+ {% block content %}
30
+
31
+ <div id="move_all_classes_page"></div>
32
+
33
+ <section class="background col-sm-6 col-center">
34
+ <h2>Move all classes for teacher {{ original_teacher.new_user|make_into_username }}</h2><br>
35
+
36
+ <h4>Move all classes assigned to teacher {{ original_teacher.new_user.first_name }}
37
+ {{ original_teacher.new_user.last_name }} to other teachers in {{ original_teacher.school.name }}.</h4>
38
+ </section>
39
+
40
+ <div class="background background--primary secondary-table">
41
+ <div class="col-sm-6 col-center">
42
+ <h4><strong>Move all classes</strong></h4>
43
+
44
+ <p class="body-text">Select teachers to take over the classes from the lists below.</p>
45
+
46
+ <form method='post'>
47
+ {% csrf_token %}
48
+ <table class="header-primary">
49
+ <tr>
50
+ <th><p class="body-text">Class</p></th>
51
+ <th><p class="body-text">New Teacher</p></th>
52
+ </tr>
53
+ {% for class in classes %}
54
+ <tr>
55
+ <td><p class="small-text">{{ class.name }} ({{ class.access_code }})</p></td>
56
+ <td>
57
+ <select class='wide' name='{{ class.access_code }}'>
58
+ {% for teacher in teachers %}
59
+ <option value='{{ teacher.id }}'>{{ teacher.title }} {{ teacher.new_user.first_name }}
60
+ {{ teacher.new_user.last_name }}</option>
61
+ {% endfor %}
62
+ </select>
63
+ </td>
64
+ </tr>
65
+ {% endfor %}
66
+ </table>
67
+ <div class="background button-group">
68
+ <a class="button button--regular button--secondary button--secondary--dark" href="{% url 'dashboard' %}">Cancel</a>
69
+ <button type='submit' id="move_classes_button" class="button--regular button--primary--navigation">{{ submit_button_text }}</button>
70
+ </div>
71
+ </form>
72
+ </div>
73
+ </div>
74
+
75
+ <script type="text/javascript">
76
+ $(document).ready(function(){
77
+ toggleStickySubnav($('.banner').outerHeight());
78
+ });
79
+ </script>
80
+
81
+ {% endblock %}
@@ -36,6 +36,8 @@
36
36
  # identified as the original program.
37
37
  from teach_base_page_new import TeachBasePage
38
38
  from class_page_new import TeachClassPage
39
+ from move_classes_page_new import TeachMoveClassesPage
40
+ from onboarding_organisation_page import OnboardingOrganisationPage
39
41
  from selenium.webdriver.support.ui import Select
40
42
 
41
43
  import time
@@ -163,17 +165,6 @@ class TeachDashboardPage(TeachBasePage):
163
165
  def is_teacher_non_admin(self):
164
166
  return "Make admin" in self.browser.find_element_by_id('teachers_table').text
165
167
 
166
- def have_classes(self):
167
- return self.element_exists_by_id('classes_table')
168
-
169
- def does_not_have_classes(self):
170
- return self.element_does_not_exist_by_id('classes_table')
171
-
172
- def does_class_exist(self, name, access_code):
173
- return self.have_classes() and \
174
- (name in self.browser.find_element_by_id('classes_table').text) and \
175
- (access_code in self.browser.find_element_by_id('classes_table').text)
176
-
177
168
  def click_kick_button(self):
178
169
  self.browser.find_element_by_id('kick_button').click()
179
170
 
@@ -189,6 +180,14 @@ class TeachDashboardPage(TeachBasePage):
189
180
 
190
181
  return self
191
182
 
183
+ def leave_organisation_with_students(self):
184
+ self._click_leave_button()
185
+
186
+ return TeachMoveClassesPage(self.browser)
187
+
188
+ def _click_leave_button(self):
189
+ self.browser.find_element_by_id('leave_organisation_button').click()
190
+
192
191
  def is_dialog_showing(self):
193
192
  return self.browser.find_element_by_xpath("//div[contains(@class,'ui-dialog')]").is_displayed()
194
193
 
@@ -197,5 +196,10 @@ class TeachDashboardPage(TeachBasePage):
197
196
 
198
197
  return self
199
198
 
199
+ def confirm_kick_with_students_dialog(self):
200
+ self._click_confirm()
201
+
202
+ return TeachMoveClassesPage(self.browser)
203
+
200
204
  def _click_confirm(self):
201
205
  self.browser.find_element_by_xpath("//button[contains(text(),'Confirm')]").click()
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Code for Life
3
+ #
4
+ # Copyright (C) 2016, Ocado Innovation Limited
5
+ #
6
+ # This program is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as
8
+ # published by the Free Software Foundation, either version 3 of the
9
+ # License, or (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Affero General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+ #
19
+ # ADDITIONAL TERMS – Section 7 GNU General Public Licence
20
+ #
21
+ # This licence does not grant any right, title or interest in any “Ocado” logos,
22
+ # trade names or the trademark “Ocado” or any other trademarks or domain names
23
+ # owned by Ocado Innovation Limited or the Ocado group of companies or any other
24
+ # distinctive brand features of “Ocado” as may be secured from time to time. You
25
+ # must not distribute any modification of this program using the trademark
26
+ # “Ocado” or claim any affiliation or association with Ocado or its employees.
27
+ #
28
+ # You are not authorised to use the name Ocado (or any of its trade names) or
29
+ # the names of any author or contributor in advertising or for publicity purposes
30
+ # pertaining to the distribution of this program, without the prior written
31
+ # authorisation of Ocado.
32
+ #
33
+ # Any propagation, distribution or conveyance of this program must include this
34
+ # copyright notice and these terms. You must not misrepresent the origins of this
35
+ # program; modified versions of the program must be marked as such and not
36
+ # identified as the original program.
37
+ import dashboard_page_new
38
+ import onboarding_organisation_page
39
+
40
+ from teach_base_page_new import TeachBasePage
41
+
42
+
43
+ class TeachMoveClassesPage(TeachBasePage):
44
+ def __init__(self, browser):
45
+ super(TeachMoveClassesPage, self).__init__(browser)
46
+
47
+ assert self.on_correct_page('move_all_classes_page')
48
+
49
+ def move_and_kick(self):
50
+ self.browser.find_element_by_id('move_classes_button').click()
51
+ return dashboard_page_new.TeachDashboardPage(self.browser)
52
+
53
+ def move_and_leave(self):
54
+ self.browser.find_element_by_id('move_classes_button').click()
55
+ return onboarding_organisation_page.OnboardingOrganisationPage(self.browser)
@@ -213,6 +213,98 @@ class TestOrganisation(BaseTest, BasePage):
213
213
 
214
214
  assert page.is_not_teacher_in_school(new_last_name)
215
215
 
216
+ def test_move_classes_and_kick(self):
217
+ email_1, password_1 = signup_teacher_directly()
218
+ name, postcode = create_organisation_directly(email_1)
219
+ _, class_name_1, access_code_1 = create_class_directly(email_1)
220
+ create_school_student_directly(access_code_1)
221
+
222
+ title, first_name, last_name, email_2, password_2 = generate_details()
223
+
224
+ new_last_name = "New Teacher"
225
+
226
+ selenium.get(self.live_server_url + "/portal/redesign/home")
227
+ page = HomePage(selenium) \
228
+ .go_to_signup_page() \
229
+ .signup(title, first_name, new_last_name, email_2, password_2, password_2)
230
+
231
+ page = email_utils.follow_verify_email_link_to_onboarding(page, mail.outbox[0])
232
+ mail.outbox = []
233
+
234
+ page = page.login_no_school(email_2, password_2).join_organisation(name)
235
+
236
+ page = page \
237
+ .logout() \
238
+ .go_to_login_page() \
239
+ .login(email_1, password_1)
240
+
241
+ page = page.accept_join_request()
242
+
243
+ assert page.is_teacher_in_school(new_last_name)
244
+
245
+ _, class_name_2, access_code_2 = create_class_directly(email_2)
246
+ create_school_student_directly(access_code_2)
247
+
248
+ page = page.click_kick_button().confirm_kick_with_students_dialog()
249
+
250
+ assert page.__class__.__name__ == 'TeachMoveClassesPage'
251
+
252
+ page = page.move_and_kick()
253
+
254
+ assert page.is_not_teacher_in_school(new_last_name)
255
+
256
+ def test_leave_organisation(self):
257
+ email_1, password_1 = signup_teacher_directly()
258
+ name, postcode = create_organisation_directly(email_1)
259
+ _, class_name_1, access_code_1 = create_class_directly(email_1)
260
+ create_school_student_directly(access_code_1)
261
+
262
+ title, first_name, last_name, email_2, password_2 = generate_details()
263
+
264
+ new_last_name = "New Teacher"
265
+
266
+ selenium.get(self.live_server_url + "/portal/redesign/home")
267
+ page = HomePage(selenium) \
268
+ .go_to_signup_page() \
269
+ .signup(title, first_name, new_last_name, email_2, password_2, password_2)
270
+
271
+ page = email_utils.follow_verify_email_link_to_onboarding(page, mail.outbox[0])
272
+ mail.outbox = []
273
+
274
+ page = page.login_no_school(email_2, password_2).join_organisation(name)
275
+
276
+ page = page \
277
+ .logout() \
278
+ .go_to_login_page() \
279
+ .login(email_1, password_1)
280
+
281
+ page = page.accept_join_request()
282
+
283
+ assert page.is_teacher_in_school(new_last_name)
284
+
285
+ _, class_name_2, access_code_2 = create_class_directly(email_2)
286
+ create_school_student_directly(access_code_2)
287
+
288
+ page = page \
289
+ .logout() \
290
+ .go_to_login_page() \
291
+ .login(email_2, password_2)
292
+
293
+ page = page.leave_organisation_with_students()
294
+
295
+ assert page.__class__.__name__ == 'TeachMoveClassesPage'
296
+
297
+ page = page.move_and_leave()
298
+
299
+ assert page.__class__.__name__ == 'OnboardingOrganisationPage'
300
+
301
+ page = page \
302
+ .logout() \
303
+ .go_to_login_page() \
304
+ .login(email_1, password_1)
305
+
306
+ assert page.is_not_teacher_in_school(new_last_name)
307
+
216
308
  def test_toggle_admin(self):
217
309
  email_1, password_1 = signup_teacher_directly()
218
310
  email_2, password_2 = signup_teacher_directly()
@@ -69,7 +69,7 @@ from game.views.level import play_default_level
69
69
  from portal.views.email_new import verify_email as verify_email_new, change_email
70
70
  from portal.views.home_new import login_view, logout_view as logout_view_new, register_view, contact as contact_new
71
71
  from portal.views.organisation_new import organisation_fuzzy_lookup as organisation_fuzzy_lookup_new, \
72
- organisation_manage as organisation_manage_new
72
+ organisation_manage as organisation_manage_new, organisation_leave as organisation_leave_new
73
73
  from portal.views.teacher.teach_new import teacher_classes as teacher_classes_new, teacher_class as teacher_class_new, \
74
74
  teacher_view_class, teacher_edit_class as teacher_edit_class_new, teacher_move_class as teacher_move_class_new, \
75
75
  teacher_edit_student as teacher_edit_student_new, teacher_student_reset as teacher_student_reset_new, \
@@ -245,6 +245,7 @@ urlpatterns = patterns(
245
245
  url(r'^redesign/teach/dashboard/disable_2FA/(?P<pk>[0-9]+)/$', teacher_disable_2FA_new, name='teacher_disable_2FA_new'),
246
246
  url(r'^redesign/teach/dashboard/allow_join/(?P<pk>[0-9]+)/$', organisation_allow_join_new, name='organisation_allow_join_new'),
247
247
  url(r'^redesign/teach/dashboard/deny_join/(?P<pk>[0-9]+)/$', organisation_deny_join_new, name='organisation_deny_join_new'),
248
+ url(r'^redesign/teach/dashboard/school/leave/$', organisation_leave_new, name='organisation_leave_new'),
248
249
  url(r'^redesign/teach/class/(?P<access_code>[A-Z0-9]+)/$', teacher_view_class, name='view_class'),
249
250
  url(r'^redesign/teach/class/delete/(?P<access_code>[A-Z0-9]+)/$', teacher_delete_class_new, name='teacher_delete_class_new'),
250
251
  url(r'^redesign/teach/class/(?P<access_code>[A-Z0-9]+)/students/delete/$', teacher_delete_students_new, name='teacher_delete_students_new'),