codeforlife-portal 8.9.0__py2.py3-none-any.whl → 8.9.2__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of codeforlife-portal might be problematic. Click here for more details.
- {codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/METADATA +48 -4
- {codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/RECORD +11 -11
- deploy/middleware/tmp_basic_auth.py +4 -4
- example_project/settings.py +1 -0
- portal/__init__.py +1 -1
- portal/static/portal/sass/partials/_header.scss +19 -13
- portal/static/portal/sass/partials/_images.scss +1 -1
- portal/templates/portal/partials/header.html +63 -70
- {codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/WHEEL +0 -0
- {codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/licenses/LICENSE.md +0 -0
- {codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codeforlife-portal
|
|
3
|
-
Version: 8.9.
|
|
3
|
+
Version: 8.9.2
|
|
4
4
|
Classifier: Programming Language :: Python
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Framework :: Django
|
|
@@ -14,7 +14,7 @@ Requires-Dist: botocore==1.36.26; python_version >= "3.8"
|
|
|
14
14
|
Requires-Dist: celery[sqs]==5.4.0; python_version >= "3.8"
|
|
15
15
|
Requires-Dist: certifi==2025.8.3; python_version >= "3.7"
|
|
16
16
|
Requires-Dist: cffi==1.17.1; platform_python_implementation != "PyPy"
|
|
17
|
-
Requires-Dist: cfl-common==8.9.
|
|
17
|
+
Requires-Dist: cfl-common==8.9.2
|
|
18
18
|
Requires-Dist: charset-normalizer==3.4.3; python_version >= "3.7"
|
|
19
19
|
Requires-Dist: click==8.2.1; python_version >= "3.10"
|
|
20
20
|
Requires-Dist: click-didyoumean==0.3.1; python_full_version >= "3.6.2"
|
|
@@ -83,31 +83,64 @@ Requires-Dist: whitenoise==6.9.0; python_version >= "3.9"
|
|
|
83
83
|
Requires-Dist: zipp==3.23.0; python_version >= "3.9"
|
|
84
84
|
Provides-Extra: dev
|
|
85
85
|
Requires-Dist: asgiref==3.9.1; python_version >= "3.9" and extra == "dev"
|
|
86
|
+
Requires-Dist: asttokens==3.0.0; python_version >= "3.8" and extra == "dev"
|
|
86
87
|
Requires-Dist: attrs==25.3.0; python_version >= "3.8" and extra == "dev"
|
|
87
88
|
Requires-Dist: black==25.1.0; python_version >= "3.9" and extra == "dev"
|
|
88
89
|
Requires-Dist: certifi==2025.8.3; python_version >= "3.7" and extra == "dev"
|
|
90
|
+
Requires-Dist: cffi==1.17.1; platform_python_implementation != "PyPy" and extra == "dev"
|
|
91
|
+
Requires-Dist: cfl-common==8.9.2; extra == "dev"
|
|
89
92
|
Requires-Dist: charset-normalizer==3.4.3; python_version >= "3.7" and extra == "dev"
|
|
90
93
|
Requires-Dist: click==8.2.1; python_version >= "3.10" and extra == "dev"
|
|
91
94
|
Requires-Dist: coverage[toml]==7.10.3; python_version >= "3.9" and extra == "dev"
|
|
95
|
+
Requires-Dist: cryptography==44.0.1; (python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1") and extra == "dev"
|
|
96
|
+
Requires-Dist: decorator==5.2.1; python_version >= "3.8" and extra == "dev"
|
|
97
|
+
Requires-Dist: diff-match-patch==20241021; python_version >= "3.7" and extra == "dev"
|
|
92
98
|
Requires-Dist: django==5.1.10; python_version >= "3.10" and extra == "dev"
|
|
93
|
-
Requires-Dist: django-
|
|
99
|
+
Requires-Dist: django-countries==7.6.1; extra == "dev"
|
|
100
|
+
Requires-Dist: django-csp==3.8; extra == "dev"
|
|
101
|
+
Requires-Dist: django-formtools==2.5.1; python_version >= "3.8" and extra == "dev"
|
|
102
|
+
Requires-Dist: django-import-export==4.2.0; python_version >= "3.9" and extra == "dev"
|
|
103
|
+
Requires-Dist: django-otp==1.6.1; python_version >= "3.7" and extra == "dev"
|
|
104
|
+
Requires-Dist: django-phonenumber-field==8.1.0; python_version >= "3.9" and extra == "dev"
|
|
105
|
+
Requires-Dist: django-pipeline==4.0.0; python_version >= "3.9" and extra == "dev"
|
|
106
|
+
Requires-Dist: django-reverse-js==0.1.8; python_version >= "3.10" and extra == "dev"
|
|
94
107
|
Requires-Dist: django-selenium-clean==1.0.1; extra == "dev"
|
|
95
108
|
Requires-Dist: django-test-migrations==1.4.0; (python_version >= "3.9" and python_version < "4.0") and extra == "dev"
|
|
109
|
+
Requires-Dist: django-two-factor-auth==1.17.0; python_version >= "3.8" and extra == "dev"
|
|
110
|
+
Requires-Dist: djangorestframework==3.16.0; python_version >= "3.9" and extra == "dev"
|
|
96
111
|
Requires-Dist: execnet==2.1.1; python_version >= "3.8" and extra == "dev"
|
|
112
|
+
Requires-Dist: executing==2.2.0; python_version >= "3.8" and extra == "dev"
|
|
97
113
|
Requires-Dist: fastdiff==0.3.0; extra == "dev"
|
|
98
114
|
Requires-Dist: h11==0.16.0; python_version >= "3.8" and extra == "dev"
|
|
99
115
|
Requires-Dist: idna==3.10; python_version >= "3.6" and extra == "dev"
|
|
100
116
|
Requires-Dist: iniconfig==2.1.0; python_version >= "3.8" and extra == "dev"
|
|
117
|
+
Requires-Dist: ipython==9.4.0; python_version >= "3.11" and extra == "dev"
|
|
118
|
+
Requires-Dist: ipython-pygments-lexers==1.1.1; python_version >= "3.8" and extra == "dev"
|
|
101
119
|
Requires-Dist: isort==6.0.1; python_full_version >= "3.9.0" and extra == "dev"
|
|
120
|
+
Requires-Dist: jedi==0.19.2; python_version >= "3.6" and extra == "dev"
|
|
121
|
+
Requires-Dist: libsass==0.23.0; python_version >= "3.8" and extra == "dev"
|
|
122
|
+
Requires-Dist: matplotlib-inline==0.1.7; python_version >= "3.8" and extra == "dev"
|
|
123
|
+
Requires-Dist: more-itertools==8.7.0; python_version >= "3.5" and extra == "dev"
|
|
102
124
|
Requires-Dist: mypy-extensions==1.1.0; python_version >= "3.8" and extra == "dev"
|
|
125
|
+
Requires-Dist: numpy==2.3.2; python_version >= "3.11" and extra == "dev"
|
|
103
126
|
Requires-Dist: outcome==1.3.0.post0; python_version >= "3.7" and extra == "dev"
|
|
104
127
|
Requires-Dist: packaging==25.0; python_version >= "3.8" and extra == "dev"
|
|
128
|
+
Requires-Dist: pandas==2.3.1; python_version >= "3.9" and extra == "dev"
|
|
129
|
+
Requires-Dist: parso==0.8.4; python_version >= "3.6" and extra == "dev"
|
|
105
130
|
Requires-Dist: pathspec==0.12.1; python_version >= "3.8" and extra == "dev"
|
|
131
|
+
Requires-Dist: pexpect==4.9.0; (sys_platform != "win32" and sys_platform != "emscripten") and extra == "dev"
|
|
132
|
+
Requires-Dist: pgeocode==0.4.0; python_version >= "3.8" and extra == "dev"
|
|
106
133
|
Requires-Dist: platformdirs==4.3.8; python_version >= "3.9" and extra == "dev"
|
|
107
134
|
Requires-Dist: pluggy==1.6.0; python_version >= "3.9" and extra == "dev"
|
|
135
|
+
Requires-Dist: prompt-toolkit==3.0.51; python_version >= "3.8" and extra == "dev"
|
|
136
|
+
Requires-Dist: ptyprocess==0.7.0; extra == "dev"
|
|
137
|
+
Requires-Dist: pure-eval==0.2.3; extra == "dev"
|
|
138
|
+
Requires-Dist: pycparser==2.22; python_version >= "3.8" and extra == "dev"
|
|
108
139
|
Requires-Dist: pygments==2.19.2; python_version >= "3.8" and extra == "dev"
|
|
109
140
|
Requires-Dist: pyhamcrest==2.0.2; python_version >= "3.5" and extra == "dev"
|
|
141
|
+
Requires-Dist: pyjwt==2.6.0; python_version >= "3.7" and extra == "dev"
|
|
110
142
|
Requires-Dist: pypdf==5.1.0; python_version >= "3.8" and extra == "dev"
|
|
143
|
+
Requires-Dist: pypng==0.20220715.0; extra == "dev"
|
|
111
144
|
Requires-Dist: pysocks==1.7.1; extra == "dev"
|
|
112
145
|
Requires-Dist: pytest==8.4.1; python_version >= "3.9" and extra == "dev"
|
|
113
146
|
Requires-Dist: pytest-cov==6.2.1; python_version >= "3.9" and extra == "dev"
|
|
@@ -115,23 +148,34 @@ Requires-Dist: pytest-django==4.8.0; python_version >= "3.8" and extra == "dev"
|
|
|
115
148
|
Requires-Dist: pytest-mock==3.14.1; python_version >= "3.8" and extra == "dev"
|
|
116
149
|
Requires-Dist: pytest-order==1.3.0; python_version >= "3.7" and extra == "dev"
|
|
117
150
|
Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9" and extra == "dev"
|
|
151
|
+
Requires-Dist: python-dateutil==2.9.0.post0; (python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2") and extra == "dev"
|
|
152
|
+
Requires-Dist: pytz==2025.2; extra == "dev"
|
|
118
153
|
Requires-Dist: pyvirtualdisplay==3.0; extra == "dev"
|
|
119
|
-
Requires-Dist:
|
|
154
|
+
Requires-Dist: qrcode==7.4.2; python_version >= "3.7" and extra == "dev"
|
|
155
|
+
Requires-Dist: rapid-router==7.5.21; extra == "dev"
|
|
120
156
|
Requires-Dist: requests==2.32.4; python_version >= "3.8" and extra == "dev"
|
|
121
157
|
Requires-Dist: responses==0.18.0; python_version >= "3.7" and extra == "dev"
|
|
122
158
|
Requires-Dist: selenium==4.29.0; python_version >= "3.9" and extra == "dev"
|
|
159
|
+
Requires-Dist: setuptools==80.9.0; python_version >= "3.9" and extra == "dev"
|
|
160
|
+
Requires-Dist: six==1.17.0; (python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3") and extra == "dev"
|
|
123
161
|
Requires-Dist: snapshottest==1.0.0a1; extra == "dev"
|
|
124
162
|
Requires-Dist: sniffio==1.3.1; python_version >= "3.7" and extra == "dev"
|
|
125
163
|
Requires-Dist: sortedcontainers==2.4.0; extra == "dev"
|
|
126
164
|
Requires-Dist: sqlparse==0.5.3; python_version >= "3.8" and extra == "dev"
|
|
165
|
+
Requires-Dist: stack-data==0.6.3; extra == "dev"
|
|
166
|
+
Requires-Dist: tablib==3.7.0; python_version >= "3.9" and extra == "dev"
|
|
127
167
|
Requires-Dist: termcolor==3.1.0; python_version >= "3.9" and extra == "dev"
|
|
168
|
+
Requires-Dist: traitlets==5.14.3; python_version >= "3.8" and extra == "dev"
|
|
128
169
|
Requires-Dist: trio==0.30.0; python_version >= "3.9" and extra == "dev"
|
|
129
170
|
Requires-Dist: trio-websocket==0.12.2; python_version >= "3.8" and extra == "dev"
|
|
130
171
|
Requires-Dist: typing-extensions==4.14.1; python_version >= "3.9" and extra == "dev"
|
|
172
|
+
Requires-Dist: tzdata==2025.2; python_version >= "2" and extra == "dev"
|
|
131
173
|
Requires-Dist: urllib3==2.5.0; extra == "dev"
|
|
132
174
|
Requires-Dist: wasmer==1.1.0; extra == "dev"
|
|
133
175
|
Requires-Dist: wasmer-compiler-cranelift==1.1.0; extra == "dev"
|
|
176
|
+
Requires-Dist: wcwidth==0.2.13; extra == "dev"
|
|
134
177
|
Requires-Dist: websocket-client==1.8.0; python_version >= "3.8" and extra == "dev"
|
|
178
|
+
Requires-Dist: wheel==0.45.1; python_version >= "3.8" and extra == "dev"
|
|
135
179
|
Requires-Dist: wsproto==1.2.0; python_full_version >= "3.7.0" and extra == "dev"
|
|
136
180
|
Dynamic: classifier
|
|
137
181
|
Dynamic: description
|
|
@@ -88,7 +88,7 @@ cfl_common/common/tests/utils/organisation.py,sha256=vNgKFtU3VPcWRnZfh82yCS90PLA
|
|
|
88
88
|
cfl_common/common/tests/utils/student.py,sha256=PLd980iSlxmMoB8J3C2pVjNC5xHdVxfAkJXzhv_dRhg,3814
|
|
89
89
|
cfl_common/common/tests/utils/teacher.py,sha256=KQ_NAl4yQqiX_zwcULQjkovc29JPhnkLR5Nk3Ljzbpg,2661
|
|
90
90
|
cfl_common/common/tests/utils/user.py,sha256=NvLzZLVP4jy5Hn1iztOYF_BTQ9WsbSmuWMEzGzhAsRU,919
|
|
91
|
-
codeforlife_portal-8.9.
|
|
91
|
+
codeforlife_portal-8.9.2.dist-info/licenses/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
|
|
92
92
|
deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
deploy/captcha.py,sha256=MbOBuGnbT_SOIltSjP1XMOLrfo1DldCilaVAEim0vM4,23
|
|
94
94
|
deploy/views.py,sha256=7mY2zNPkaBFrlWGByJHp2zFqHIHSMc0YArjE_sFWMMU,131
|
|
@@ -100,7 +100,7 @@ deploy/middleware/maintenance.py,sha256=JhlQD7FowzxnRxk1_uGXYRQ2Aas6v3C9BRxYgN1H
|
|
|
100
100
|
deploy/middleware/screentime_warning.py,sha256=-YmaOn9_RQwTU8C6VxDLWct_0G3Y5oHjAv9AvKZSvIw,1152
|
|
101
101
|
deploy/middleware/security.py,sha256=LOZ-OUFo2dVhbRzI_KdSCMh4TItcJhhqzZg5zNAH-6Q,870
|
|
102
102
|
deploy/middleware/session_timeout.py,sha256=Vfl6_9d8KwPsWRvCIcpBm7kWjgvHC8I7exJOejbyI4k,1023
|
|
103
|
-
deploy/middleware/tmp_basic_auth.py,sha256=
|
|
103
|
+
deploy/middleware/tmp_basic_auth.py,sha256=TJm-xRZCAWZ3BWUqxKMFMlhz22bL_niI9RZ_SeP-q4A,1417
|
|
104
104
|
deploy/static/apple-touch-icon-120x120.png,sha256=7GwelKO6CNbvjJJ1nqMvDGkPoQWqYomMKKP5EB5gmfM,24583
|
|
105
105
|
deploy/static/apple-touch-icon-152x152.png,sha256=V57OGP0VeeKHen_iYVa72sHe_rEaMAJzU1FAiHWWBwY,36276
|
|
106
106
|
deploy/static/apple-touch-icon-180x180.png,sha256=OIm3wwx0aL8fh1EIlMCKp2vVNpsuY-NDxV1QR73bf1g,47948
|
|
@@ -110,10 +110,10 @@ deploy/static/robots.txt,sha256=5cS4RITuQhbpNzvpk4AyDCXdlIBfmfCoBYRvCHY2VT8,24
|
|
|
110
110
|
deploy/templates/deploy/csrf_failure.html,sha256=-pBRPn4Y7nUdYHGpTHCokT9Boi-isuwuivF8V2K1SgM,412
|
|
111
111
|
example_project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
112
|
example_project/portal_test_settings.py,sha256=_6EDMwnYH2yCukgiop0sobqShbB8tivO9hcjZUYReec,7909
|
|
113
|
-
example_project/settings.py,sha256=
|
|
113
|
+
example_project/settings.py,sha256=DQkHGjS-NYIPTCOnCD7QBeV7rxTNdIGqdC-qfTuA5qU,6278
|
|
114
114
|
example_project/urls.py,sha256=FUTzHPlUS1O5kqMHjL5V4L552N2ln7uTDXcw9wjKUto,422
|
|
115
115
|
example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
|
|
116
|
-
portal/__init__.py,sha256=
|
|
116
|
+
portal/__init__.py,sha256=Rq9p7o79TIqi2cXgqOt5XpbOnfnnhHF-gOCVAB_dods,22
|
|
117
117
|
portal/admin.py,sha256=RKJizTF6dPJKmGPZw7nZUM0X8jkiTjgyKhLQxtvHJ0I,6148
|
|
118
118
|
portal/app_settings.py,sha256=8P3r0ArkOzL_iVjoaLIHsNWG4uP1tT2z1kCUHPhAZ9s,714
|
|
119
119
|
portal/backends.py,sha256=2Dss6_WoQwPuDzJUF1yEaTQTNG4eUrD12ujJQ5cp5Tc,812
|
|
@@ -409,8 +409,8 @@ portal/static/portal/sass/partials/_carousel.scss,sha256=m8N6jSuHBzeKyMUNGGc48Nl
|
|
|
409
409
|
portal/static/portal/sass/partials/_footer.scss,sha256=oqt-Qvz7vtUFNnpe4FkQkaZk3J3fojCy9cKCxqGTWoM,2493
|
|
410
410
|
portal/static/portal/sass/partials/_forms.scss,sha256=cbonSxhtfaHR-4R6i0u65AaIZRG_25C837CgZlLuwCI,7101
|
|
411
411
|
portal/static/portal/sass/partials/_grids.scss,sha256=pnMQht5lZ65MRB-0_nl8yn655hlKC_oWCwZopillVwc,4968
|
|
412
|
-
portal/static/portal/sass/partials/_header.scss,sha256=
|
|
413
|
-
portal/static/portal/sass/partials/_images.scss,sha256=
|
|
412
|
+
portal/static/portal/sass/partials/_header.scss,sha256=_54ppHxjp8Y6PB_UbYlxvH3MKke9tjsaq5yzDsDt-jU,7493
|
|
413
|
+
portal/static/portal/sass/partials/_images.scss,sha256=uHUZ1rRZntijcTnv3Ws2EjGR7eJ7aunDHwUj6-lRNMk,5592
|
|
414
414
|
portal/static/portal/sass/partials/_popup.scss,sha256=GQ6Vtmj3vdOP4Hvsf8ZxKdEtuL8gqoClYpDgQ19kvnQ,2280
|
|
415
415
|
portal/static/portal/sass/partials/_progress-bars.scss,sha256=cTyRa9WLeIE0rETmY58Rcyf-8O6JE3iDTa_jw3mk23g,144
|
|
416
416
|
portal/static/portal/sass/partials/_subnavs.scss,sha256=6FJV1wBmHchnGBL9Yx56Ua4RR1b5P6ABTextZPTqXSs,5052
|
|
@@ -474,7 +474,7 @@ portal/templates/portal/partials/character_list.html,sha256=SnNFHzbIkOSaiRPIvSdp
|
|
|
474
474
|
portal/templates/portal/partials/cookie_list.html,sha256=j815wyA9nAe74tzuKtp7Rxnm9oclORmipImfbI33BRI,6538
|
|
475
475
|
portal/templates/portal/partials/delete_popup.html,sha256=nEhnwgnmKoFzb6LlCwdX973Em9bVOFh6MON36RPteYs,1275
|
|
476
476
|
portal/templates/portal/partials/footer.html,sha256=dC3eKqZ2e2gCnRsZwsFNWVEOwgwQtXrO7yfwBuW63hk,5628
|
|
477
|
-
portal/templates/portal/partials/header.html,sha256=
|
|
477
|
+
portal/templates/portal/partials/header.html,sha256=Fqly39-c8MIMLIIeq_sbT3CeGJMhvEOIqIqGWrKREfw,20744
|
|
478
478
|
portal/templates/portal/partials/headline.html,sha256=xKb-WtkT0FyQqT0smyNSKkXFvU7KQ5Czad8ca6YKQg4,89
|
|
479
479
|
portal/templates/portal/partials/hero_card.html,sha256=UN5hyxrw-McuXFsDzPBIECB9yGrv9VjsFf8SEBowwXc,786
|
|
480
480
|
portal/templates/portal/partials/info_popup.html,sha256=gzffd5MBVb7p2hGQuZMNDudThrRgs847hCu9ziT9uLE,566
|
|
@@ -636,7 +636,7 @@ portal/views/two_factor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
636
636
|
portal/views/two_factor/core.py,sha256=Lk32z2SN2Pg0rRkK-N-LXMvXC1kKKsH3l692kiSDQ4E,964
|
|
637
637
|
portal/views/two_factor/form.py,sha256=lnHNKI-BMlpncTuW3zUzjPaJJNuEra2I_nOam0eOKFY,257
|
|
638
638
|
portal/views/two_factor/profile.py,sha256=SHSg_xHccE5PtD-OfuOkYhREYz_er4bj5ro1RjJ88Yw,393
|
|
639
|
-
codeforlife_portal-8.9.
|
|
640
|
-
codeforlife_portal-8.9.
|
|
641
|
-
codeforlife_portal-8.9.
|
|
642
|
-
codeforlife_portal-8.9.
|
|
639
|
+
codeforlife_portal-8.9.2.dist-info/METADATA,sha256=3XVRBuG4ukzgJZComcqEdwlmzu3ByObQThzyBqJKjls,14175
|
|
640
|
+
codeforlife_portal-8.9.2.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
|
641
|
+
codeforlife_portal-8.9.2.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
|
|
642
|
+
codeforlife_portal-8.9.2.dist-info/RECORD,,
|
|
@@ -17,17 +17,17 @@ class TempBasicAuthMiddleware:
|
|
|
17
17
|
def __call__(self, request):
|
|
18
18
|
# Code to be executed on each request.
|
|
19
19
|
url = request.build_absolute_uri()
|
|
20
|
-
|
|
20
|
+
token_in_url = f"/{TMP_AUTH_TOKEN}"
|
|
21
21
|
|
|
22
22
|
# If the user inputs the token in the URL correctly, set a cookie to the token's value
|
|
23
|
-
if url
|
|
24
|
-
response = redirect(
|
|
23
|
+
if url.endswith(token_in_url):
|
|
24
|
+
response = redirect(url.replace(token_in_url, ""))
|
|
25
25
|
response.set_cookie(
|
|
26
26
|
key="TMP_AUTH_TOKEN",
|
|
27
27
|
value=TMP_AUTH_TOKEN,
|
|
28
28
|
)
|
|
29
29
|
return response
|
|
30
|
-
# For any other request in the
|
|
30
|
+
# For any other request in the domain, check that a cookie with the token's value exists.
|
|
31
31
|
# Redirect to the main site if it doesn't.
|
|
32
32
|
else:
|
|
33
33
|
value = request.COOKIES.get("TMP_AUTH_TOKEN")
|
example_project/settings.py
CHANGED
|
@@ -120,6 +120,7 @@ MIDDLEWARE = [
|
|
|
120
120
|
"django.middleware.locale.LocaleMiddleware",
|
|
121
121
|
"django.middleware.common.CommonMiddleware",
|
|
122
122
|
"django.middleware.csrf.CsrfViewMiddleware",
|
|
123
|
+
"deploy.middleware.tmp_basic_auth.TempBasicAuthMiddleware",
|
|
123
124
|
"deploy.middleware.security.CustomSecurityMiddleware",
|
|
124
125
|
"django.contrib.messages.middleware.MessageMiddleware",
|
|
125
126
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
portal/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "8.9.
|
|
1
|
+
__version__ = "8.9.2"
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.dropdown-menu {
|
|
30
|
-
@include _border-radius(0px, 0px, 0px, 0px);
|
|
31
30
|
border: 2px solid $color-secondary-600;
|
|
31
|
+
border-radius: 0;
|
|
32
32
|
border-top: 0;
|
|
33
33
|
font-weight: 300;
|
|
34
34
|
margin: 0;
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
|
|
182
182
|
.menu--title {
|
|
183
183
|
@include _font-size(27px);
|
|
184
|
-
@include _margin(0px,
|
|
184
|
+
@include _margin(0px, $spacing * 8, 0px, $spacing * 2);
|
|
185
185
|
color: $color-text-tertiary;
|
|
186
186
|
font-family: "Space Grotesk", sans-serif;
|
|
187
187
|
}
|
|
@@ -209,9 +209,15 @@
|
|
|
209
209
|
|
|
210
210
|
@media (min-width: $tablet-small-min-width) {
|
|
211
211
|
.menu__right-side {
|
|
212
|
+
@include _margin-right($spacing * 3);
|
|
212
213
|
align-items: center;
|
|
213
|
-
justify-content: flex-end;
|
|
214
214
|
display: flex;
|
|
215
|
+
justify-content: flex-end;
|
|
216
|
+
width: 33%;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.logo {
|
|
220
|
+
height: 100px;
|
|
215
221
|
}
|
|
216
222
|
}
|
|
217
223
|
|
|
@@ -219,10 +225,6 @@
|
|
|
219
225
|
.menu {
|
|
220
226
|
height: $menu-height;
|
|
221
227
|
|
|
222
|
-
.logo {
|
|
223
|
-
height: 100px;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
228
|
.menu__brand {
|
|
227
229
|
@include _margin(0px, $spacing * 7, 0px, 0px);
|
|
228
230
|
}
|
|
@@ -240,7 +242,7 @@
|
|
|
240
242
|
height: $menu-height-xs;
|
|
241
243
|
|
|
242
244
|
.logo {
|
|
243
|
-
@include _padding($spacing * 3, $spacing *
|
|
245
|
+
@include _padding($spacing * 3, $spacing * 3, $spacing * 3, $spacing * 3);
|
|
244
246
|
}
|
|
245
247
|
|
|
246
248
|
.menu__brand--ocado {
|
|
@@ -255,6 +257,7 @@
|
|
|
255
257
|
.menu {
|
|
256
258
|
background-color: $color-background-secondary;
|
|
257
259
|
display: flex;
|
|
260
|
+
justify-content: space-between;
|
|
258
261
|
position: fixed;
|
|
259
262
|
top: 0;
|
|
260
263
|
width: 100%;
|
|
@@ -284,20 +287,23 @@
|
|
|
284
287
|
|
|
285
288
|
.button--register,
|
|
286
289
|
.button--header--login {
|
|
287
|
-
@include _padding(
|
|
290
|
+
@include _padding($spacing * 2, $spacing * 3, $spacing * 2, $spacing * 3);
|
|
288
291
|
width: 155px;
|
|
289
292
|
height: 45px;
|
|
290
293
|
}
|
|
291
294
|
}
|
|
292
295
|
|
|
293
296
|
.menu__brand {
|
|
294
|
-
align-items: center;
|
|
295
297
|
display: flex;
|
|
296
|
-
|
|
298
|
+
width: 66%;
|
|
297
299
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
+
.menu__brand--ocado {
|
|
301
|
+
@include _margin-right($spacing * 7);
|
|
300
302
|
}
|
|
303
|
+
|
|
304
|
+
//img {
|
|
305
|
+
// max-width: none;
|
|
306
|
+
//}
|
|
301
307
|
}
|
|
302
308
|
|
|
303
309
|
.menu__left-side {
|
|
@@ -24,89 +24,82 @@
|
|
|
24
24
|
<span class="material-icons-outlined visible-sm visible-xs" data-toggle="collapse" data-target="#menu-items">
|
|
25
25
|
menu
|
|
26
26
|
</span>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class="
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<a href="{% url 'python_levels' %}"><small>Python Den</small></a>
|
|
27
|
+
<div class="menu__left-side hidden-sm hidden-xs">
|
|
28
|
+
{% if user|is_logged_in %}
|
|
29
|
+
{% if user|is_logged_in_as_teacher %}
|
|
30
|
+
{% if user|has_teacher_finished_onboarding %}
|
|
31
|
+
<a href="{% url 'dashboard' %}" class="button--menu button--menu--secondary button--menu--enabled">Dashboard</a>
|
|
32
|
+
<div class="dropdown">
|
|
33
|
+
<a id="games_button"
|
|
34
|
+
class="button--menu button--menu--secondary button--menu--enabled">
|
|
35
|
+
Games <span class="material-icons-outlined md-32">arrow_drop_down</span></a>
|
|
36
|
+
<div class="dropdown-content">
|
|
37
|
+
<a href="{% url 'levels' %}"><small>Rapid Router</small></a>
|
|
38
|
+
<a href="{% url 'python_levels' %}"><small>Python Den</small></a>
|
|
39
|
+
</div>
|
|
41
40
|
</div>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
<small>
|
|
52
|
-
|
|
41
|
+
<div class="dropdown">
|
|
42
|
+
<a id="teaching_resources_button"
|
|
43
|
+
class="button--menu button--menu--secondary button--menu--enabled">
|
|
44
|
+
Resources <span class="material-icons-outlined md-32">arrow_drop_down</span></a>
|
|
45
|
+
<div class="dropdown-content">
|
|
46
|
+
<a id="rapid_router_resources_button" href="https://code-for-life.gitbook.io/teaching-resources/" target="_blank">
|
|
47
|
+
<small>Rapid Router</small> <span class="iconify" data-icon="mdi:open-in-new"></span></a>
|
|
48
|
+
<a href="https://code-for-life.gitbook.io/python-lessons-with-raspberry-pi-ide/DGiFT28ihVJK7ghZQHqu" target="_blank">
|
|
49
|
+
<small>Python Den</small> <span class="iconify" data-icon="mdi:open-in-new"></span></a>
|
|
50
|
+
<a href="{% url 'codingClub' %}"><small>Coding Clubs</small></a>
|
|
51
|
+
</div>
|
|
53
52
|
</div>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
{% endif %}
|
|
60
|
-
{% else %}
|
|
61
|
-
{% if user|is_independent_student %}
|
|
62
|
-
<div class="menu--title">Independent</div>
|
|
53
|
+
{% else %}
|
|
54
|
+
<a href="{% url 'onboarding-organisation' %}" class="button--menu button--menu--secondary button--menu--enabled">Dashboard</a>
|
|
55
|
+
<a class="button--menu button--menu--secondary button--menu--disabled">Games</a>
|
|
56
|
+
<a class="button--menu button--menu--secondary button--menu--disabled">Resources</a>
|
|
57
|
+
{% endif %}
|
|
63
58
|
{% else %}
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
<a
|
|
67
|
-
{% if user|is_independent_student %}
|
|
59
|
+
<a
|
|
60
|
+
{% if user|is_independent_student %}
|
|
68
61
|
href="{% url 'independent_student_details' %}"
|
|
69
|
-
|
|
62
|
+
{% else %}
|
|
70
63
|
href="{% url 'student_details' %}"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
<div class="dropdown">
|
|
75
|
-
<a class="button--menu button--menu--secondary button--menu--enabled">
|
|
76
|
-
Games
|
|
77
|
-
<span class="material-icons-outlined md-32">arrow_drop_down</span>
|
|
78
|
-
</a>
|
|
79
|
-
<div class="dropdown-content">
|
|
80
|
-
<a href="{% url 'levels' %}"><small>Rapid Router</small></a>
|
|
81
|
-
<a href="{% url 'python_levels' %}"><small>Python Den</small></a>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
{% if user|is_logged_in_as_school_user %}
|
|
85
|
-
<a href="{% url 'scoreboard' %}" id="student_scoreboards_button"
|
|
86
|
-
class="button--menu button--menu--secondary button--menu--enabled">Scoreboard</a>
|
|
87
|
-
{% endif %}
|
|
88
|
-
<!-- independent student -->
|
|
89
|
-
{% if not user.new_student.class_field %}
|
|
64
|
+
{% endif %}
|
|
65
|
+
id="student_dashboard_button"
|
|
66
|
+
class="button--menu button--menu--secondary button--menu--enabled">Dashboard</a>
|
|
90
67
|
<div class="dropdown">
|
|
91
|
-
<a
|
|
92
|
-
|
|
93
|
-
|
|
68
|
+
<a class="button--menu button--menu--secondary button--menu--enabled">
|
|
69
|
+
Games
|
|
70
|
+
<span class="material-icons-outlined md-32">arrow_drop_down</span>
|
|
71
|
+
</a>
|
|
94
72
|
<div class="dropdown-content">
|
|
95
|
-
<a href="
|
|
96
|
-
|
|
97
|
-
<a href="{% url 'codingClub' %}"><small>Coding Clubs</small></a>
|
|
73
|
+
<a href="{% url 'levels' %}"><small>Rapid Router</small></a>
|
|
74
|
+
<a href="{% url 'python_levels' %}"><small>Python Den</small></a>
|
|
98
75
|
</div>
|
|
99
76
|
</div>
|
|
77
|
+
{% if user|is_logged_in_as_school_user %}
|
|
78
|
+
<a href="{% url 'scoreboard' %}" id="student_scoreboards_button"
|
|
79
|
+
class="button--menu button--menu--secondary button--menu--enabled">Scoreboard</a>
|
|
80
|
+
{% endif %}
|
|
81
|
+
<!-- independent student -->
|
|
82
|
+
{% if not user.new_student.class_field %}
|
|
83
|
+
<div class="dropdown">
|
|
84
|
+
<a id="teaching_resources_button"
|
|
85
|
+
class="button--menu button--menu--secondary button--menu--enabled">
|
|
86
|
+
Resources <span class="material-icons-outlined md-32">arrow_drop_down</span></a>
|
|
87
|
+
<div class="dropdown-content">
|
|
88
|
+
<a href="https://code-for-life.gitbook.io/independent-student-resources/" target="_blank">
|
|
89
|
+
<small>Rapid Router</small><span class="iconify" data-icon="mdi:open-in-new"></span></a>
|
|
90
|
+
<a href="{% url 'codingClub' %}"><small>Coding Clubs</small></a>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
{% endif %}
|
|
100
94
|
{% endif %}
|
|
101
|
-
{%
|
|
102
|
-
{% else %}
|
|
103
|
-
<div class="menu__left-side col-md-5">
|
|
95
|
+
{% else %}
|
|
104
96
|
<a href="{% url 'teach' %}" class="button--menu button--menu--primary button--menu--enabled">Teachers</a>
|
|
105
97
|
<a href="{% url 'play' %}" class="button--menu button--menu--primary button--menu--enabled">Students</a>
|
|
106
|
-
|
|
98
|
+
{% endif %}
|
|
99
|
+
</div>
|
|
107
100
|
</div>
|
|
108
101
|
{% if user|is_logged_in %}
|
|
109
|
-
<div class="menu__right-side
|
|
102
|
+
<div class="menu__right-side">
|
|
110
103
|
<div class="dropdown header__account-details-dropdown">
|
|
111
104
|
<button id="logout_menu" class="button--regular button--secondary button--dropdown header__account-details-dropdown"
|
|
112
105
|
data-toggle="dropdown">
|
|
@@ -146,7 +139,7 @@
|
|
|
146
139
|
</ul>
|
|
147
140
|
</div>
|
|
148
141
|
{% else %}
|
|
149
|
-
<div class="menu__right-side
|
|
142
|
+
<div class="menu__right-side">
|
|
150
143
|
<a href="{% url 'register' %}" id="signup_button" class="button button--primary button--register register">Register for FREE</a>
|
|
151
144
|
<div class="dropdown">
|
|
152
145
|
<button id="login_dropdown" class="button--regular button--secondary button--header--login button--dropdown"
|
|
File without changes
|
{codeforlife_portal-8.9.0.dist-info → codeforlife_portal-8.9.2.dist-info}/licenses/LICENSE.md
RENAMED
|
File without changes
|
|
File without changes
|