codeforlife-portal 8.4.10__py2.py3-none-any.whl → 8.5.1__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.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: codeforlife-portal
3
- Version: 8.4.10
3
+ Version: 8.5.1
4
4
  Classifier: Programming Language :: Python
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Framework :: Django
@@ -8,7 +8,7 @@ Description-Content-Type: text/markdown
8
8
  License-File: LICENSE.md
9
9
  Requires-Dist: asgiref==3.8.1; python_version >= "3.8"
10
10
  Requires-Dist: certifi==2025.1.31; python_version >= "3.6"
11
- Requires-Dist: cfl-common==8.4.10
11
+ Requires-Dist: cfl-common==8.5.1
12
12
  Requires-Dist: chardet==5.2.0; python_version >= "3.7"
13
13
  Requires-Dist: charset-normalizer==3.4.1; python_version >= "3.7"
14
14
  Requires-Dist: diff-match-patch==20241021; python_version >= "3.7"
@@ -59,7 +59,7 @@ Requires-Dist: asttokens==3.0.0; python_version >= "3.8" and extra == "dev"
59
59
  Requires-Dist: attrs==25.3.0; python_version >= "3.8" and extra == "dev"
60
60
  Requires-Dist: black==25.1.0; python_version >= "3.9" and extra == "dev"
61
61
  Requires-Dist: certifi==2025.1.31; python_version >= "3.6" and extra == "dev"
62
- Requires-Dist: cfl-common==8.4.10; extra == "dev"
62
+ Requires-Dist: cfl-common==8.5.1; extra == "dev"
63
63
  Requires-Dist: charset-normalizer==3.4.1; python_version >= "3.7" and extra == "dev"
64
64
  Requires-Dist: click==8.1.8; python_version >= "3.7" and extra == "dev"
65
65
  Requires-Dist: coverage[toml]==7.7.0; python_version >= "3.9" and extra == "dev"
@@ -147,6 +147,7 @@ Requires-Dist: wsproto==1.2.0; python_full_version >= "3.7.0" and extra == "dev"
147
147
  Dynamic: classifier
148
148
  Dynamic: description
149
149
  Dynamic: description-content-type
150
+ Dynamic: license-file
150
151
  Dynamic: provides-extra
151
152
  Dynamic: requires-dist
152
153
 
@@ -87,6 +87,7 @@ cfl_common/common/tests/utils/organisation.py,sha256=vNgKFtU3VPcWRnZfh82yCS90PLA
87
87
  cfl_common/common/tests/utils/student.py,sha256=PLd980iSlxmMoB8J3C2pVjNC5xHdVxfAkJXzhv_dRhg,3814
88
88
  cfl_common/common/tests/utils/teacher.py,sha256=KQ_NAl4yQqiX_zwcULQjkovc29JPhnkLR5Nk3Ljzbpg,2661
89
89
  cfl_common/common/tests/utils/user.py,sha256=NvLzZLVP4jy5Hn1iztOYF_BTQ9WsbSmuWMEzGzhAsRU,919
90
+ codeforlife_portal-8.5.1.dist-info/licenses/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
90
91
  deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
92
  deploy/captcha.py,sha256=MbOBuGnbT_SOIltSjP1XMOLrfo1DldCilaVAEim0vM4,23
92
93
  deploy/views.py,sha256=7mY2zNPkaBFrlWGByJHp2zFqHIHSMc0YArjE_sFWMMU,131
@@ -110,7 +111,7 @@ example_project/portal_test_settings.py,sha256=fSjkcEWgW1bQW7wTPpiWzytPfKnlzDnI9
110
111
  example_project/settings.py,sha256=b680hIHT1mtrvBjOQSli1AkDo0k3anZYHfsKhFheKlM,5684
111
112
  example_project/urls.py,sha256=FUTzHPlUS1O5kqMHjL5V4L552N2ln7uTDXcw9wjKUto,422
112
113
  example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
113
- portal/__init__.py,sha256=ADVCDGAHYWOm1SyZEEbrqjQJ3Bo_Odr8M58u0nvaWF0,23
114
+ portal/__init__.py,sha256=W_tY7fIhORMEcPmzRIeyvneoTvGLNU_GEC4R4ml8Rl0,22
114
115
  portal/admin.py,sha256=RKJizTF6dPJKmGPZw7nZUM0X8jkiTjgyKhLQxtvHJ0I,6148
115
116
  portal/app_settings.py,sha256=DhWLQOwM0zVOXE3O5TNKbMM9K6agfLuCsHOdr1J7xEI,651
116
117
  portal/backends.py,sha256=2Dss6_WoQwPuDzJUF1yEaTQTNG4eUrD12ujJQ5cp5Tc,812
@@ -452,7 +453,7 @@ portal/templates/portal/home_learning.html,sha256=U1_AYrTNLqCjla7-vdVkC6SOigGBAm
452
453
  portal/templates/portal/locked_out.html,sha256=JeiFHFyueFX03D54k82swjxvKY78cFG8Vre-bKKv_7Y,894
453
454
  portal/templates/portal/locked_out_school_student.html,sha256=bcpLtu4mkHR-zILLuArtHH2OfUSjHiqntcdbTMlx5Kg,684
454
455
  portal/templates/portal/play.html,sha256=35dsR5jMavX5YvHZCwsoGdbCjEWJG-vPyqIeUAkgbLI,5724
455
- portal/templates/portal/privacy_notice.html,sha256=qKInJE4fS82EIfpJEmHMsa_raA7YxYP4hyXWMekkCCk,53600
456
+ portal/templates/portal/privacy_notice.html,sha256=JexPB9Xgvlymv-TCzpWoViuZ2R-xalScCsueMW66-fA,49247
456
457
  portal/templates/portal/register.html,sha256=4RqUxRiQOvd-oHAM5x6U01zdlYRfy-h8NUGl8UIiBC0,12531
457
458
  portal/templates/portal/reset_password.html,sha256=YzsREz5D2OwhicMLahVOVDXiNDxoHlPqU5iu96i36W0,1373
458
459
  portal/templates/portal/reset_password_confirm.html,sha256=jPHSDatezRXzCG4zH_5BQPWAxLblidqro0hzvsH54ho,3499
@@ -469,6 +470,7 @@ portal/templates/portal/partials/banner.html,sha256=5MzRKCZWFPDzcRzHPqG5MeED_Ksm
469
470
  portal/templates/portal/partials/benefits.html,sha256=TZm4U_XimgivkPMjDXxxkV7PLfRyi2PAwkH8Y4sFDps,2363
470
471
  portal/templates/portal/partials/card_list.html,sha256=yHcp4oc0WRG9H6Ek871VCHbwYkDRcwQYbZ320gtsFn8,1550
471
472
  portal/templates/portal/partials/character_list.html,sha256=SnNFHzbIkOSaiRPIvSdplEf_B87UYgJ1pOvMltNDxLE,415
473
+ portal/templates/portal/partials/cookie_list.html,sha256=MrQ6lqae_X-LSxQjlLhZzKESt_cqJ2HJYsjKqTQ9W0A,6303
472
474
  portal/templates/portal/partials/delete_popup.html,sha256=nEhnwgnmKoFzb6LlCwdX973Em9bVOFh6MON36RPteYs,1275
473
475
  portal/templates/portal/partials/footer.html,sha256=IKEUmghaiiuQs5g9JfE97oNzjRTzBTu3SoFgJhRMyi8,5533
474
476
  portal/templates/portal/partials/header.html,sha256=xorEsPYzbmZGXHBOKm_6SHXQJxkCFKEWfMJbADG3k3I,20816
@@ -612,7 +614,7 @@ portal/views/dotmailer.py,sha256=OH06IXuqqjhQbEie8g8y2ZY1oZvsCtNHhkQRLa-julg,246
612
614
  portal/views/email.py,sha256=V3wXRxIjeZ4OJBVqGCQrPn-GQWKZK1PCXbR1f2Zpa_4,2174
613
615
  portal/views/google_analytics.py,sha256=cbNq9apCVpjoXCdovjrwo2jshWu5tUOItB-fTr-losw,769
614
616
  portal/views/home.py,sha256=8leK4ADxRg-gK-bm7D08CR44bhV3I8lt5pCV59HXMkk,9619
615
- portal/views/legal.py,sha256=cSvnW_HtyEWlklg-BiF3iKl_xKhx-IHp-J2CcyJwI_w,348
617
+ portal/views/legal.py,sha256=USOEJy0Ry73cKReglKfMxgM3qWoKORUfVl_RkwPewQ4,342
616
618
  portal/views/organisation.py,sha256=sPDbiM7hdtpF8GKyh_4n4VPl2a-WnAgnF4q9aSvQCVI,3341
617
619
  portal/views/play_landing_page.py,sha256=FFmjUFub3ZdlbMqkB8yX3jAImCzqrUqgb8AZcpKywZ4,308
618
620
  portal/views/registration.py,sha256=9cDKFVXVyJcMJBVZLwHoucMI4UwsOhbUxMdcxIEOixs,10889
@@ -633,8 +635,7 @@ portal/views/two_factor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
633
635
  portal/views/two_factor/core.py,sha256=Lk32z2SN2Pg0rRkK-N-LXMvXC1kKKsH3l692kiSDQ4E,964
634
636
  portal/views/two_factor/form.py,sha256=lnHNKI-BMlpncTuW3zUzjPaJJNuEra2I_nOam0eOKFY,257
635
637
  portal/views/two_factor/profile.py,sha256=SHSg_xHccE5PtD-OfuOkYhREYz_er4bj5ro1RjJ88Yw,393
636
- codeforlife_portal-8.4.10.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
637
- codeforlife_portal-8.4.10.dist-info/METADATA,sha256=vfJE3zB6o0JP4h-IlK2gIYcioan5UdjT2pUOzSef_LI,12068
638
- codeforlife_portal-8.4.10.dist-info/WHEEL,sha256=Kol19cahXavY536r5Aj6aAgK_6CmctrOu3bgNJMSNJA,109
639
- codeforlife_portal-8.4.10.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
640
- codeforlife_portal-8.4.10.dist-info/RECORD,,
638
+ codeforlife_portal-8.5.1.dist-info/METADATA,sha256=UUHIcvu3_PbQL_w3ppuU2BAC3jzDI-TBYn7uSSY07tk,12087
639
+ codeforlife_portal-8.5.1.dist-info/WHEEL,sha256=MAQBAzGbXNI3bUmkDsiV_duv8i-gcdnLzw7cfUFwqhU,109
640
+ codeforlife_portal-8.5.1.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
641
+ codeforlife_portal-8.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.1.0)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
portal/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "8.4.10"
1
+ __version__ = "8.5.1"
@@ -0,0 +1,154 @@
1
+ <h6>Strictly Necessary Cookies</h6>
2
+
3
+ <table class="table table-bordered header-primary">
4
+ <colgroup>
5
+ <col span="1" style="width: 23%;">
6
+ <col span="1" style="width: 17%;">
7
+ <col span="1" style="width: 50%;">
8
+ <col span="1" style="width: 10%;">
9
+ </colgroup>
10
+ <tr>
11
+ <th><strong>Cookie name</strong></th>
12
+ <th><strong>Host</strong></th>
13
+ <th><strong>Description</strong></th>
14
+ <th><strong>Expiry</strong></th>
15
+ </tr>
16
+ <tr>
17
+ <td><p>OptanonAlertBoxClosed</p></td>
18
+ <td><p>codeforlife.education</p></td>
19
+ <td><p>This cookie is set by the cookie compliance solution from OneTrust. It is set after visitors have
20
+ seen a cookie information notice and in some cases only when they actively close the notice down. It
21
+ enables the website not to show the message more than once to a user. It contains no personal
22
+ information.</p>
23
+ </td>
24
+ <td><p>1 year</p></td>
25
+ </tr>
26
+ <tr>
27
+ <td><p>OptanonConsent</p></td>
28
+ <td><p>codeforlife.education</p></td>
29
+ <td><p>This cookie is set by the cookie compliance solution from OneTrust. It stores information about
30
+ the categories of cookies the site uses and whether visitors have given or withdrawn consent for the
31
+ use of each category. This enables site owners to prevent cookies in each category from being set in
32
+ the users browser, when consent is not given. It contains no information that can identify the site
33
+ visitor.</p>
34
+ </td>
35
+ <td><p>1 year</p></td>
36
+ </tr>
37
+ <tr>
38
+ <td><p>csrftoken</p></td>
39
+ <td><p>codeforlife.education</p></td>
40
+ <td><p>This cookie is associated with the Django web development platform for Python. It is designed to
41
+ help protect a site against a particular type of software attack on web forms.</p>
42
+ </td>
43
+ <td><p>1 year</p></td>
44
+ </tr>
45
+ <tr>
46
+ <td><p>sessionid</p></td>
47
+ <td><p>codeforlife.education</p></td>
48
+ <td><p>This cookie is associated with the Django web development platform for Python. It contains a
49
+ special session id to identify each browser and its associated session with the site.</p>
50
+ </td>
51
+ <td><p>Session</p></td>
52
+ </tr>
53
+ <tr>
54
+ <td><p>_GRECAPTCHA</p></td>
55
+ <td><p>www.google.com</p></td>
56
+ <td><p>Cookie used by Google Recaptcha. It is used for risk analysis in spam protection and may store
57
+ browsing device information.</p>
58
+ </td>
59
+ <td><p>5 months</p></td>
60
+ </tr>
61
+ </table>
62
+
63
+ <h6>Analytics / Performance Cookies</h6>
64
+
65
+ <table class="table table-bordered header-primary">
66
+ <colgroup>
67
+ <col span="1" style="width: 23%;">
68
+ <col span="1" style="width: 17%;">
69
+ <col span="1" style="width: 50%;">
70
+ <col span="1" style="width: 10%;">
71
+ </colgroup>
72
+ <tr>
73
+ <th><strong>Cookie name</strong></th>
74
+ <th><strong>Host</strong></th>
75
+ <th><strong>Description</strong></th>
76
+ <th><strong>Expiry</strong></th>
77
+ </tr>
78
+ <tr>
79
+ <td><p>_ga</p></td>
80
+ <td><p>codeforlife.education</p></td>
81
+ <td><p>This cookie is associated with Google Universal Analytics - which is a significant update to
82
+ Google's more commonly used analytics service. This cookie is used to distinguish unique users by
83
+ assigning a randomly generated number as a client identifier. It is included in each page request in
84
+ a site and used to calculate visitor, session and campaign data for the sites analytics reports.</p>
85
+ </td>
86
+ <td><p>1 year</p></td>
87
+ </tr>
88
+ <tr>
89
+ <td><p>_gid</p></td>
90
+ <td><p>codeforlife.education</p></td>
91
+ <td><p>This cookie is associated with Google Universal Analytics. It is used to store and count page
92
+ views.</p>
93
+ </td>
94
+ <td><p>A few seconds</p></td>
95
+ </tr>
96
+ <tr>
97
+ <td><p>_ga_xxxxxxxxxx</p></td>
98
+ <td><p>codeforlife.education</p></td>
99
+ <td><p>This cookie is associated with Google Universal Analytics. Used to distinguish unique users by
100
+ assigning a randomly generated number as a client identifier. Its primary purpose is to help website
101
+ owners measure visitor interactions, track site usage, and provide personalised experiences to
102
+ enhance user engagement.</p>
103
+ </td>
104
+ <td><p>1 year</p></td>
105
+ </tr>
106
+ <tr>
107
+ <td><p>_gat_UA-xxxxxxxx-x</p></td>
108
+ <td><p>codeforlife.education</p></td>
109
+ <td><p>This cookie is associated with Google Tag Manager. It is used to store to provide technical
110
+ monitoring and limit the amount of data recorded by Google on high-traffic sites.</p>
111
+ </td>
112
+ <td><p>1 minute</p></td>
113
+ </tr>
114
+ <tr>
115
+ <td><p>_gat_gtag_UA_xxxxxxxx_x</p></td>
116
+ <td><p>codeforlife.education</p></td>
117
+ <td><p>This cookie is associated with Google Tag Manager. It is used to store a unique user ID.</p>
118
+ </td>
119
+ <td><p>1 minute</p></td>
120
+ </tr>
121
+ </table>
122
+
123
+ <h6>Functional Cookies</h6>
124
+
125
+ <table class="table table-bordered header-primary">
126
+ <colgroup>
127
+ <col span="1" style="width: 23%;">
128
+ <col span="1" style="width: 17%;">
129
+ <col span="1" style="width: 50%;">
130
+ <col span="1" style="width: 10%;">
131
+ </colgroup>
132
+ <tr>
133
+ <th><strong>Cookie name</strong></th>
134
+ <th><strong>Host</strong></th>
135
+ <th><strong>Description</strong></th>
136
+ <th><strong>Expiry</strong></th>
137
+ </tr>
138
+ <tr>
139
+ <td><p>preferredLanguage</p></td>
140
+ <td><p>codeforlife.education</p></td>
141
+ <td><p>This cookie is used to remember your selected language preference in Rapid Router and Python Den,
142
+ so you don't have to keep selecting it every time you load a new level.</p>
143
+ </td>
144
+ <td><p>Session</p></td>
145
+ </tr>
146
+ <tr>
147
+ <td><p>muted</p></td>
148
+ <td><p>codeforlife.education</p></td>
149
+ <td><p>This cookie is used to remember your muted setting in Rapid Router and Python Den, so you don't
150
+ have to keep setting it every time you load a new level.</p>
151
+ </td>
152
+ <td><p>Session</p></td>
153
+ </tr>
154
+ </table>
@@ -272,44 +272,10 @@
272
272
  allow us to monitor and improve our website. When we talk about cookies in this notice, we also refer to these
273
273
  technologies.</p>
274
274
 
275
- <h6>6.2 Types of cookies used</h6>
276
- <p>We use the following types of cookies on our portal for the following purposes:</p>
275
+ <h6>6.2 Cookie list</h6>
276
+ <p>We have the following cookies on our portal for the following purposes:</p>
277
277
 
278
- <table class="table table-bordered header-primary">
279
- <tr>
280
- <th><strong>Types of cookies</strong></th>
281
- <th><strong>Purpose</strong></th>
282
- <th><strong>For how many months does the cookie stay on your browser?</strong></th>
283
- </tr>
284
- <tr>
285
- <td><p><u>Strictly necessary cookies</u></p></td>
286
- <td><p>These cookies do what you have asked for: for example, they allow the website to load on your
287
- browser, they keep you logged in when you use our portal, and keep our portal safe. If you turn off
288
- these cookies via your browser settings certain parts of the website will not function for you.</p>
289
- </td>
290
- <td><p>12</p></td>
291
- </tr>
292
- <tr>
293
- <td><p><u>Functional cookies</u></p></td>
294
- <td><p>These cookies enable the website to provide enhanced functionality and personalisation. If you do not
295
- allow these cookies then some services may not function very smoothly. These kinds of cookies remember
296
- things like your sound settings.</p>
297
- </td>
298
- <td><p>Session</p></td>
299
- </tr>
300
- <tr>
301
- <td><p><u>Analytics/Performance cookies</u></p></td>
302
- <td><p>These cookies help us understand how you use our portal and improve or optimise the experience we
303
- provide. This can be anything like which pages you go to most often, and if you get error messages from
304
- web pages. They allow us to measure how visitors interact with the portal (for example which parts of
305
- the website are clicked on).</p>
306
- <p>We use third-party web analytics software on our portal
307
- (<a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage" target="_blank">Google Analytics</a>).
308
- We provide further information about these partners below.</p>
309
- </td>
310
- <td><p>24</p></td>
311
- </tr>
312
- </table>
278
+ {% include "portal/partials/cookie_list.html" %}
313
279
 
314
280
  <h6 id="third-party-cookies">6.3 Third party cookies</h6>
315
281
  <p>We do not allow third party advertising, or affiliation on our portal.</p>
@@ -598,45 +564,10 @@
598
564
  keep an eye on how well our website is working and look for ways to improve it. To keep things simple, when
599
565
  we talk about cookies in this Privacy Notice, we also mean web beacons and pixels.</p>
600
566
 
601
- <h6>Types of cookies used</h6>
602
-
567
+ <h6>Cookie list</h6>
603
568
  <p>You can see all the different cookies we use and what we use them for below.</p>
604
569
 
605
- <table class="table table-bordered header-primary">
606
- <tr>
607
- <th><strong>Types of cookies</strong></th>
608
- <th><strong>Purpose</strong></th>
609
- <th><strong>How long does it stay on the browser?</strong></th>
610
- </tr>
611
- <tr>
612
- <td><p><u>Strictly necessary cookies</u></p></td>
613
- <td><p>These cookies do what you have asked for: for example, they allow the website to load on your
614
- device, they keep you logged in when you use our site and help keep our site safe. If you turn off
615
- these cookies using your browser settings, then it could stop some parts of the site from working.</p>
616
- </td>
617
- <td><p>12 months</p></td>
618
- </tr>
619
- <tr>
620
- <td><p><u>Functional cookies</u></p></td>
621
- <td><p>These cookies allow the website to remember your settings each time you revisit the site (for
622
- example how you have your sound set up). If you do not allow these cookies, then some services may
623
- not work as smoothly.</p>
624
- </td>
625
- <td><p>For as long as you are on the site</p></td>
626
- </tr>
627
- <tr>
628
- <td><p><u>Analytics/Performance cookies</u></p></td>
629
- <td><p>These cookies help us understand how you use our site, so we can improve the service we provide.
630
- This can be anything like which pages you go to most often and if you get error messages from web
631
- pages. They allow us to measure how visitors use the portal (for example which parts of the website
632
- are clicked on and the length of time between clicks).</p>
633
- <p>We use other companies called
634
- (<a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage" target="_blank">Google Analytics</a>)
635
- to help us collect information from these cookies (see the “Third-party cookies” section below).</p>
636
- </td>
637
- <td><p>24 months</p></td>
638
- </tr>
639
- </table>
570
+ {% include "portal/partials/cookie_list.html" %}
640
571
 
641
572
  <h6>Third party cookies</h6>
642
573
 
portal/views/legal.py CHANGED
@@ -5,7 +5,7 @@ def privacy_notice(request):
5
5
  return render(
6
6
  request,
7
7
  "portal/privacy_notice.html",
8
- {"last_updated": "28th February 2025", "last_updated_children": "28th February 2025"},
8
+ {"last_updated": "19th March 2025", "last_updated_children": "19th March 2025"},
9
9
  )
10
10
 
11
11