codeforlife-portal 8.1.1__py2.py3-none-any.whl → 8.1.3__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.

cfl_common/setup.py CHANGED
@@ -17,7 +17,7 @@ setup(
17
17
  version=version,
18
18
  include_package_data=True,
19
19
  install_requires=[
20
- "django==4.2.17",
20
+ "django==4.2.18",
21
21
  "django-countries==7.6.1",
22
22
  "django-csp==3.8",
23
23
  "django-import-export==4.2.0",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codeforlife-portal
3
- Version: 8.1.1
3
+ Version: 8.1.3
4
4
  Classifier: Programming Language :: Python
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Framework :: Django
@@ -9,7 +9,7 @@ License-File: LICENSE.md
9
9
  Requires-Dist: django-recaptcha==4.0.0
10
10
  Requires-Dist: pyyaml==6.0.2
11
11
  Requires-Dist: importlib-metadata==4.13.0
12
- Requires-Dist: reportlab==3.6.13
12
+ Requires-Dist: reportlab==4.2.5
13
13
  Requires-Dist: django-formtools==2.5.1
14
14
  Requires-Dist: django-otp==1.5.4
15
15
  Requires-Dist: requests==2.32.2
@@ -1,5 +1,5 @@
1
1
  cfl_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- cfl_common/setup.py,sha256=0Bbnt2gvlq6PnI5wMZ3hPuccY-CtdKQIy5RSSmbja4U,978
2
+ cfl_common/setup.py,sha256=T8DMxXoniOYHNZpgks4TvYvAt4lDnZxDHAwVBH-02iM,978
3
3
  cfl_common/common/__init__.py,sha256=XlncBOpKp_gekbKH7Y_i6yu1qy5tJc3Y8sn8cDy-Vgk,48
4
4
  cfl_common/common/app_settings.py,sha256=Bw1DXkZpNIdwUJ-cIOjZnngH5_NbMXC0koW7NgQ0pKY,2495
5
5
  cfl_common/common/apps.py,sha256=49UXZ3bSkFKvIEOL4zM7y1sAhccQJyRtsoOg5XVd_8Y,129
@@ -106,23 +106,23 @@ deploy/static/robots.txt,sha256=5cS4RITuQhbpNzvpk4AyDCXdlIBfmfCoBYRvCHY2VT8,24
106
106
  deploy/templates/deploy/csrf_failure.html,sha256=-pBRPn4Y7nUdYHGpTHCokT9Boi-isuwuivF8V2K1SgM,412
107
107
  example_project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
108
  example_project/manage.py,sha256=EUgybZlZ7xk2Zf2KCwBbK_z7gf7Ifqs0_bl4Kijhdgo,242
109
- example_project/portal_test_settings.py,sha256=7Q7SdosA0Ba85qz-xkAe3EHyMPpSIQ61CSlwYL4uNog,7321
110
- example_project/settings.py,sha256=NjFhtDNLwdY5vhUAtqk9a9m3GRfcuWRVqIqnJ3u0o6E,5658
109
+ example_project/portal_test_settings.py,sha256=_Xrz5gtfZvHLybXOWPJGVaoOvtMT9BATJV6V6Rj0hDo,7256
110
+ example_project/settings.py,sha256=8eEzp2qS3xvHOO0gcZCP7deSa1BW-8sTIA23eKPm3vA,5593
111
111
  example_project/urls.py,sha256=FUTzHPlUS1O5kqMHjL5V4L552N2ln7uTDXcw9wjKUto,422
112
112
  example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
113
- portal/__init__.py,sha256=8YlEPKK1Cm5T4dPa2BQPpPwVVTzjPLnmqAeNcTb5nOw,22
113
+ portal/__init__.py,sha256=gnc1sclqzDLnQB9vbqA0LgSMz4H-bYCuu--_P-HWhAc,22
114
114
  portal/admin.py,sha256=RKJizTF6dPJKmGPZw7nZUM0X8jkiTjgyKhLQxtvHJ0I,6148
115
115
  portal/app_settings.py,sha256=DhWLQOwM0zVOXE3O5TNKbMM9K6agfLuCsHOdr1J7xEI,651
116
116
  portal/backends.py,sha256=2Dss6_WoQwPuDzJUF1yEaTQTNG4eUrD12ujJQ5cp5Tc,812
117
117
  portal/beta.py,sha256=0TCC-9_KZoM1nuzJ9FiuKR5n9JITdMYenHGQtRvn9UU,255
118
- portal/context_processors.py,sha256=Q68UhmArLPRchS2KmfVR4hKrijllXal3sO5cHYWC2Fc,222
118
+ portal/context_processors.py,sha256=1TrUZqnMqGa5f7ERph9EpBqojSMJvOrcpnJzTdeCLDI,133
119
119
  portal/handlers.py,sha256=gF99OfQrGcIGDnUyONhvylZNU8sl6XHYEurwu0fuiss,422
120
120
  portal/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- portal/urls.py,sha256=_EJQ7XNVzeqN6g9pbtKg7DHZHlz31-HgWgft6_kOwXw,18415
121
+ portal/urls.py,sha256=pNOIcaNPxoPqrnIvF2BR_Mz0vdPyvU_vcAveX1AXwbM,18072
122
122
  portal/wsgi.py,sha256=3yRcNxBQG30NhzrVi93bX-DrbXtsIQBc70HiW5wbOyE,401
123
123
  portal/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
124
  portal/forms/admin.py,sha256=Cdl8-wvasAzvMfgUlFYzQjYeuyC7gIsSiy8V_-jMp7w,2080
125
- portal/forms/dotmailer.py,sha256=j-o9qthQc7xmOsHSQGEEoHvaEyOpzlWrj6bOnV0PpsI,1567
125
+ portal/forms/dotmailer.py,sha256=AiHoN8ZRl3A69FYSldkjlhICGx_l4BujP5HjYdSRCok,897
126
126
  portal/forms/error_messages.py,sha256=8d3z_3e2L-5zwj5hFhnUByC5k2CEpIVVuJg2nYkCUQ8,148
127
127
  portal/forms/invite_teacher.py,sha256=jkDNcCfkts4_lXRzhcI3xBam21Zn2yX9wMpMVhDtW1w,880
128
128
  portal/forms/organisation.py,sha256=QcQyd7AiqBmvt4y8uQSQylguUbKOKqo2pjqWIkpWjDg,7433
@@ -268,7 +268,7 @@ portal/static/portal/img/colorboxImages/loading_background.png,sha256=lZ7Mxrcb7-
268
268
  portal/static/portal/img/colorboxImages/overlay.png,sha256=qy73bf_q55z4kktuaTaMhVrxDzVRCIjgmBQ5cbOmLtE,182
269
269
  portal/static/portal/js/bootstrap.min.js,sha256=nuL8_2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL-1ev4,39680
270
270
  portal/static/portal/js/carouselCards.js,sha256=IByMjKk37E-TCc3vx9nfF-IJWl9BOFPNVqf4WuD75GI,778
271
- portal/static/portal/js/common.js,sha256=kVUdm0luaqMLElbDq3Mht1k5DfkYHXAmJtce1Rekogg,7554
271
+ portal/static/portal/js/common.js,sha256=S39e0B75gycBQ2KEULPD-i-yZdM7vP-jvW3gIFTn5GU,6980
272
272
  portal/static/portal/js/independentLogin.js,sha256=wjjJBAF5arJ2iwW30lHTraG_f2FJ9UMGnXGpUSXwXIs,538
273
273
  portal/static/portal/js/independentRegistration.js,sha256=YWhIzwJcl0acU9weAKB7pWK76J1dpAuAQkI7DrUm3uA,2622
274
274
  portal/static/portal/js/join_create_game_toggle.js,sha256=eWxhMfzVKu1oft9iUFV4w8CgqMRv9-unb5P5cGi1h_4,393
@@ -395,19 +395,19 @@ portal/static/portal/sass/modules/_all.scss,sha256=k1U_FAKajqT8B3U53UT9B1Hc4jn5P
395
395
  portal/static/portal/sass/modules/_animation.scss,sha256=s75-4xRmPSmqwHUuyVy0OcnbS5jreRnotMXm-CuTLkE,39
396
396
  portal/static/portal/sass/modules/_breakpoints.scss,sha256=Nc7nrvjzQ0eK844ITuqwYcybIJxpYVFU5s30mz3BGOg,498
397
397
  portal/static/portal/sass/modules/_card_constants.scss,sha256=FUojcT5Fs-IYErt-frahD3HnVb06A515k4SQJrqVUfQ,107
398
- portal/static/portal/sass/modules/_colours.scss,sha256=Wen7UlF98ijyDjIEsLeIzLx0fcgXOLjavAVIh8PfqX0,4350
398
+ portal/static/portal/sass/modules/_colours.scss,sha256=6Wz1ev8T0nDmftQBWzUiCvOcJUrbkqQTCTisfnb-0Go,4250
399
399
  portal/static/portal/sass/modules/_homepage_constants.scss,sha256=GfSppJtWNxufu4hKO6vHX7YBQgmU1oB0KBonh-ltgv0,44
400
400
  portal/static/portal/sass/modules/_levels.scss,sha256=-PrZ21k_-sQAxYZB0uJd7macz46-VVwsQdmtxYyZYnA,106
401
401
  portal/static/portal/sass/modules/_mixins.scss,sha256=8xDWuApUG6B3pjadB4iHpJ87ehXCg0qqpabnVd2cgxU,1987
402
402
  portal/static/portal/sass/modules/_spacing.scss,sha256=WHBcd8ZSl4UHqPAOmW_JLt_MOfww44Hj8W42dWOpTO8,31
403
403
  portal/static/portal/sass/partials/_banners.scss,sha256=Q13Mybarzkq0GWvhStiqIuK_bgKku8wkqC6qCFIruEg,5658
404
404
  portal/static/portal/sass/partials/_base.scss,sha256=cUvskrzNXLA-Xg1EgpL-S0wTWDnRn86AcdMbE2_aLMM,26
405
- portal/static/portal/sass/partials/_buttons.scss,sha256=UR0a6ne8nZQyyWlWzVDD5RG2vfVe8w9rM5yWLBav3qM,9572
405
+ portal/static/portal/sass/partials/_buttons.scss,sha256=IoExpRV7Ng7wQ--jpOgnXC3D9SZqV95hM4bLEwNKNAw,8913
406
406
  portal/static/portal/sass/partials/_carousel.scss,sha256=m8N6jSuHBzeKyMUNGGc48NlNYTmotKlaiy10hwFnyWY,3500
407
407
  portal/static/portal/sass/partials/_footer.scss,sha256=oqt-Qvz7vtUFNnpe4FkQkaZk3J3fojCy9cKCxqGTWoM,2493
408
408
  portal/static/portal/sass/partials/_forms.scss,sha256=cbonSxhtfaHR-4R6i0u65AaIZRG_25C837CgZlLuwCI,7101
409
409
  portal/static/portal/sass/partials/_grids.scss,sha256=pnMQht5lZ65MRB-0_nl8yn655hlKC_oWCwZopillVwc,4968
410
- portal/static/portal/sass/partials/_header.scss,sha256=NmVmNasogxhrygApoqAY1KSmq_37eJROj0lstVr6MEY,7422
410
+ portal/static/portal/sass/partials/_header.scss,sha256=P2Sb3dyJjiPCpzbNE83HYWomBPfak8wHTO-q5S-qyQA,7339
411
411
  portal/static/portal/sass/partials/_images.scss,sha256=Fro4a0VfLo6FyrvGk5yjsjzzGKWVdHeMFJiVC96C7vk,6213
412
412
  portal/static/portal/sass/partials/_popup.scss,sha256=GQ6Vtmj3vdOP4Hvsf8ZxKdEtuL8gqoClYpDgQ19kvnQ,2280
413
413
  portal/static/portal/sass/partials/_progress-bars.scss,sha256=cTyRa9WLeIE0rETmY58Rcyf-8O6JE3iDTa_jw3mk23g,144
@@ -435,9 +435,9 @@ portal/templates/email.txt,sha256=z3bkT2WnkCrVa1RLVbGd-pE81cLEHlZ_QowfbSQAOvg,19
435
435
  portal/templates/django_recaptcha/widget_v2_invisible.html,sha256=3t5JHgyr_so5FQEUtbq501kEjz80KYBOoVz3PuU1JOc,318
436
436
  portal/templates/django_recaptcha/includes/js_v2_invisible.html,sha256=QQnBzZBqdtPeJeYFOIihJM18YoSUWbsGjuoMy-5gxNM,1408
437
437
  portal/templates/portal/about.html,sha256=_iD0GCP6q3-XuZ2LC-9O0KYY-mKL6c9qk3O-NRRqsRM,10321
438
- portal/templates/portal/base.html,sha256=4xLACNgKmRQTdEsdNNGYhLzMozzYzWIIzk31HrLGBf0,12109
438
+ portal/templates/portal/base.html,sha256=7fkLX5l48Puf63zlnhxdrD0utw8FwOAHCuXKvyijtuQ,11690
439
439
  portal/templates/portal/base_no_userprofile.html,sha256=PlRufyYmUUGWBZ6CvbYhJWOMTqKqdcee4xnO5--AogA,447
440
- portal/templates/portal/coding_club.html,sha256=CJS1dEKMQ70AQ9U05wTctmvXYJngs18qxbyzNJmkfHk,5449
440
+ portal/templates/portal/coding_club.html,sha256=DhPSIhxxzo6w0v80jXKVo_fjZ_TKnv7_u5cQq0woW8Q,5324
441
441
  portal/templates/portal/contribute.html,sha256=UIC_N3Lun9wB_6jEra0wvlT9fDiiIeMby7_onXYo6k0,4176
442
442
  portal/templates/portal/dotmailer_consent_form.html,sha256=UDdizPoKYZGybr6z9nzDV4WPhJPa-S3bIKywvVgFrxg,918
443
443
  portal/templates/portal/email_invitation_sent.html,sha256=hAMzQXE3NFGnOsQlCGuo3Aps-vazSJb5BhAN7bWT48M,641
@@ -470,9 +470,8 @@ portal/templates/portal/partials/benefits.html,sha256=TZm4U_XimgivkPMjDXxxkV7PLf
470
470
  portal/templates/portal/partials/card_list.html,sha256=yHcp4oc0WRG9H6Ek871VCHbwYkDRcwQYbZ320gtsFn8,1550
471
471
  portal/templates/portal/partials/character_list.html,sha256=SnNFHzbIkOSaiRPIvSdplEf_B87UYgJ1pOvMltNDxLE,415
472
472
  portal/templates/portal/partials/delete_popup.html,sha256=nEhnwgnmKoFzb6LlCwdX973Em9bVOFh6MON36RPteYs,1275
473
- portal/templates/portal/partials/donate_popup.html,sha256=iPxXqIwZ-9_n4ssdUEiZ_GY3nbpes2AlcEKphL2Plno,2151
474
473
  portal/templates/portal/partials/footer.html,sha256=mJFsBJY1jfDUdujuceh0Y1bIXccIEWzbvEfsmNGl6D4,5036
475
- portal/templates/portal/partials/header.html,sha256=Qba01GARPeb5XAbZkWY__vA7D1LMFJ39085bLlOkaM0,20643
474
+ portal/templates/portal/partials/header.html,sha256=aRFgTy5JSQTqXSGUo7XQWd3a4Ia4auvJl3D3iNgJhm0,20250
476
475
  portal/templates/portal/partials/headline.html,sha256=xKb-WtkT0FyQqT0smyNSKkXFvU7KQ5Czad8ca6YKQg4,89
477
476
  portal/templates/portal/partials/hero_card.html,sha256=UN5hyxrw-McuXFsDzPBIECB9yGrv9VjsFf8SEBowwXc,786
478
477
  portal/templates/portal/partials/info_popup.html,sha256=gzffd5MBVb7p2hGQuZMNDudThrRgs847hCu9ziT9uLE,566
@@ -538,7 +537,7 @@ portal/tests/test_api.py,sha256=Yo5s_nEGOoG35jA39yZ6nuDOUZvuCZ8o8o8XhZos61w,1381
538
537
  portal/tests/test_captcha_forms.py,sha256=Yn_VYO_6jbq6AeKeLcv-YFL1YwXZpU0C3y7SK8fRUm4,1033
539
538
  portal/tests/test_class.py,sha256=MfR8fRsi0XjqS5cbeV19y3Be2RVhOLUHsAy_mjm7P70,17644
540
539
  portal/tests/test_emails.py,sha256=pLr06j3uMBxP1raoZQWzUTBVFvsEDFtUh85J8OnqCwE,9238
541
- portal/tests/test_global_forms.py,sha256=A5JpAe4AYK-wpu0o1qU4THmeNv_wr7lhzaMbjz5czpY,1543
540
+ portal/tests/test_global_forms.py,sha256=GIm_oSN4VsfaO--E2SMRu8CwVraan0UBj-_LE_tu8w0,833
542
541
  portal/tests/test_helper_methods.py,sha256=-SQCDZm2XUtyXGEp0CHIb_SSC9CPD-XOSnpnY8QclHk,890
543
542
  portal/tests/test_independent_student.py,sha256=NrRjTEr6V4WXpCE74N8LYNVocvLSvddkjuo3dYpfAZc,27245
544
543
  portal/tests/test_invite_teacher.py,sha256=gUe1spFp60v3i6kMqGoNgJd0OlBEcwplPPNYLomTJS4,12269
@@ -609,9 +608,9 @@ portal/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
609
608
  portal/views/about.py,sha256=-muXy17UhxCSKkjnMAkSLXiCvT_pBPlf2ykTYr794dI,443
610
609
  portal/views/admin.py,sha256=4Xt3zEyQH7sUwQSrwuRtoCodWidjOzd7gJUwWU96pXY,957
611
610
  portal/views/api.py,sha256=mdWmFkV5mxmR-mvj6ttIe8uwW9tbcx9-5ykk5dpX0LI,7047
612
- portal/views/dotmailer.py,sha256=x49p89TtwA1MLysRLtq5yRRzVtIpzGoU__Xb5hPuHak,3208
611
+ portal/views/dotmailer.py,sha256=OH06IXuqqjhQbEie8g8y2ZY1oZvsCtNHhkQRLa-julg,2467
613
612
  portal/views/email.py,sha256=V3wXRxIjeZ4OJBVqGCQrPn-GQWKZK1PCXbR1f2Zpa_4,2174
614
- portal/views/home.py,sha256=cKCby5xDYImMeJqNnrnfkDbb3tAcQX-lw6IgBS7RmR4,10050
613
+ portal/views/home.py,sha256=8leK4ADxRg-gK-bm7D08CR44bhV3I8lt5pCV59HXMkk,9619
615
614
  portal/views/legal.py,sha256=nUunsTHnhMcXBcDlg1GmUal86k9Vhinne4A2FWfq78M,342
616
615
  portal/views/organisation.py,sha256=sPDbiM7hdtpF8GKyh_4n4VPl2a-WnAgnF4q9aSvQCVI,3341
617
616
  portal/views/play_landing_page.py,sha256=FFmjUFub3ZdlbMqkB8yX3jAImCzqrUqgb8AZcpKywZ4,308
@@ -633,8 +632,8 @@ portal/views/two_factor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
633
632
  portal/views/two_factor/core.py,sha256=Lk32z2SN2Pg0rRkK-N-LXMvXC1kKKsH3l692kiSDQ4E,964
634
633
  portal/views/two_factor/form.py,sha256=lnHNKI-BMlpncTuW3zUzjPaJJNuEra2I_nOam0eOKFY,257
635
634
  portal/views/two_factor/profile.py,sha256=SHSg_xHccE5PtD-OfuOkYhREYz_er4bj5ro1RjJ88Yw,393
636
- codeforlife_portal-8.1.1.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
637
- codeforlife_portal-8.1.1.dist-info/METADATA,sha256=e4FNA5qvh6-VVZ05ztRGRDfdcZARBc_U0XYDh1J3Pws,3078
638
- codeforlife_portal-8.1.1.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
639
- codeforlife_portal-8.1.1.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
640
- codeforlife_portal-8.1.1.dist-info/RECORD,,
635
+ codeforlife_portal-8.1.3.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
636
+ codeforlife_portal-8.1.3.dist-info/METADATA,sha256=WDrFE-Tgdzw0QFNII4sEzxhnay313FCTlhPVMrByFes,3077
637
+ codeforlife_portal-8.1.3.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
638
+ codeforlife_portal-8.1.3.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
639
+ codeforlife_portal-8.1.3.dist-info/RECORD,,
@@ -172,7 +172,6 @@ TEMPLATES = [
172
172
  "common.context_processors.module_name",
173
173
  "common.context_processors.cookie_management_enabled",
174
174
  "portal.context_processors.process_newsletter_form",
175
- "portal.context_processors.process_donate_form",
176
175
  ]
177
176
  },
178
177
  }
@@ -130,7 +130,6 @@ TEMPLATES = [
130
130
  "common.context_processors.module_name",
131
131
  "common.context_processors.cookie_management_enabled",
132
132
  "portal.context_processors.process_newsletter_form",
133
- "portal.context_processors.process_donate_form",
134
133
  ]
135
134
  }
136
135
  }
portal/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "8.1.1"
1
+ __version__ = "8.1.3"
@@ -1,9 +1,5 @@
1
- from portal.forms.dotmailer import DonateForm, NewsletterForm
1
+ from portal.forms.dotmailer import NewsletterForm
2
2
 
3
3
 
4
4
  def process_newsletter_form(request):
5
5
  return {"news_form": NewsletterForm()}
6
-
7
-
8
- def process_donate_form(request):
9
- return {"donate_form": DonateForm()}
portal/forms/dotmailer.py CHANGED
@@ -19,28 +19,6 @@ class NewsletterForm(forms.Form):
19
19
  )
20
20
 
21
21
 
22
- class DonateForm(forms.Form):
23
- email = forms.EmailField(
24
- label="This data will only be used for this purpose and you will be "
25
- "able to opt out anytime. Please read our privacy notice for "
26
- "further details.",
27
- label_suffix="",
28
- widget=forms.EmailInput(
29
- attrs={
30
- "placeholder": "Enter your email address",
31
- "id": "donate_email_field",
32
- }
33
- ),
34
- help_text="Enter your email address",
35
- )
36
-
37
- age_verification = forms.BooleanField(
38
- widget=forms.CheckboxInput(attrs={"id": "donate_age_verification"}),
39
- initial=False,
40
- required=True,
41
- )
42
-
43
-
44
22
  class ConsentForm(forms.Form):
45
23
  email = forms.EmailField(
46
24
  label="Email",
@@ -38,24 +38,6 @@ function hidePopupConfirmation() {
38
38
  $("#popup").find(".popup-text").remove();
39
39
  }
40
40
 
41
- function showDonatePopup(title, text) {
42
- let popup = $("#donate-popup");
43
- popup.find(".popup-box__title").text(title);
44
- popup.find(".popup-box__msg").append(text);
45
-
46
- popup.addClass("popup--fade");
47
- }
48
-
49
- function hideDonatePopup() {
50
- $("#donate-popup").removeClass("popup--fade");
51
- $("#donate-popup").find(".popup-text").remove();
52
- $("#donate_email_field").val("");
53
- $('#donate_age_verification').prop("checked", false);
54
- const donateSubmitButton = $('#confirm_donate_button');
55
- donateSubmitButton.addClass("disabled");
56
- donateSubmitButton.prop("disabled", true);
57
- }
58
-
59
41
  function showDonateConfirmation(path) {
60
42
  let title = "We would love to have you support our non-profit mission! ❤️";
61
43
  let text =
@@ -63,9 +63,6 @@ $color-button-contained-disabled: $color-secondary-100;
63
63
  $color-button-outlined-border: $color-secondary-600;
64
64
  $color-button-outlined-border-active: $color-secondary-600;
65
65
  $color-button-subnav-border: white;
66
- $color-button-pill: #86ae18;
67
- $color-button-pill-hover: #82a210;
68
- $color-button-pill-active: #82a210;
69
66
  // Old buttons
70
67
  $color-button-primary-action-navigation: $color-secondary;
71
68
  $color-button-primary-action-navigation-hover: $color-secondary;
@@ -138,30 +138,6 @@ table {
138
138
  }
139
139
  }
140
140
 
141
- /* Green button */
142
- .button--tertiary {
143
- @include _padding(10px, 15px, 10px, 15px);
144
- background: $color-button-pill;
145
- color: $color-text-secondary;
146
-
147
- &:hover:not(.disabled){
148
- @include material-shadow();
149
- background: $color-button-pill-hover;
150
- color: $color-text-secondary;
151
- text-decoration: none;
152
- }
153
-
154
- &:active:not(.disabled) {
155
- background: $color-button-pill-active;
156
- color: $color-text-secondary;
157
- box-shadow: none;
158
- }
159
- }
160
-
161
- .button--pill {
162
- @include _border-radius-all(20px);
163
- }
164
-
165
141
  .button-right-arrow {
166
142
  &:after {
167
143
  content: "\e5e1";
@@ -437,13 +413,6 @@ td .button--primary {
437
413
  justify-content: center;
438
414
  }
439
415
 
440
- &.button--donate {
441
- background: $color-button-pill;
442
- border: 0;
443
- color: $color-text-secondary;
444
- justify-content: center;
445
- }
446
-
447
416
  &.button--header--login {
448
417
  border: 2px solid $color-secondary-600;
449
418
  margin: 0;
@@ -265,11 +265,6 @@
265
265
  font-weight: normal;
266
266
  }
267
267
 
268
- .button--pill:hover,
269
- .button--pill:focus, {
270
- font-weight: 600;
271
- }
272
-
273
268
  .button--menu--secondary {
274
269
  @include _padding($spacing * 3, 0px, $spacing * 3, 0px);
275
270
  }
@@ -81,7 +81,6 @@
81
81
  {% include "portal/tag_manager/tag_manager_body.html" %}
82
82
  {% render_block "js" %}
83
83
  {% include 'portal/mouseflow.html' %}
84
- {% include "portal/partials/donate_popup.html" %}
85
84
  <div class="content-footer-wrapper">
86
85
  {% block contentWrapper %}
87
86
  <div {% block pageID %}id="contentWrapper"{% endblock %}>
@@ -240,25 +239,16 @@
240
239
  });
241
240
  </script>
242
241
  <script>
243
- // disable newsletter signup and donate buttons by default
242
+ // disable newsletter signup button by default
244
243
  const newsletterSubmitButton = $('#submit_newsletter');
245
244
  newsletterSubmitButton.addClass("disabled");
246
245
  newsletterSubmitButton.prop("disabled", true);
247
246
 
248
- const donateSubmitButton = $('#confirm_donate_button');
249
- donateSubmitButton.addClass("disabled");
250
- donateSubmitButton.prop("disabled", true);
251
-
252
- // enable them or disable them depending on age verification checkbox
247
+ // enable them or disable it depending on age verification checkbox
253
248
  $('#id_age_verification').on("click", function() {
254
249
  newsletterSubmitButton.prop("disabled", !this.checked);
255
250
  newsletterSubmitButton.toggleClass("disabled", !this.checked);
256
251
  });
257
-
258
- $('#donate_age_verification').on("click", function() {
259
- donateSubmitButton.prop("disabled", !this.checked);
260
- donateSubmitButton.toggleClass("disabled", !this.checked);
261
- })
262
252
  </script>
263
253
  {% endblock scripts %}
264
254
  </body>
@@ -46,12 +46,9 @@
46
46
  </p>
47
47
  </div>
48
48
  <div>
49
- <form method="post", action="{% url 'download_student_pack' 3 %}" class="non-styled--form">
50
- {% csrf_token %}
51
- <button id="primary_pack" href="" type="submit" class="button button--primary button--icon">
52
- Download the Primary coding club pack<span class="iconify" data-icon="mdi:tray-arrow-down"></span>
53
- </button>
54
- </form>
49
+ <a id="primary_pack" download type="submit" class="button button--primary button--icon" href="https://code-for-life.gitbook.io/code-for-life-primary-club-resources">
50
+ Download the Primary coding club pack<span class="iconify" data-icon="mdi:tray-arrow-down"></span>
51
+ </a>
55
52
  </div>
56
53
  </div>
57
54
  <div class="col-sm-6 d-flex flex-column">
@@ -77,7 +74,7 @@
77
74
  <h4 class="mt-0">Python coding club</h4>
78
75
  <p>
79
76
  Download your FREE coding club pack for students aged 12 and above.
80
- This pack is a fast paced introduction to Python. It is aimed at students already interested
77
+ This pack is a fast-paced introduction to Python. It is aimed at students already interested
81
78
  in learning coding, individuals looking to learn and run their own club, or adults wanting to
82
79
  try coding out. It is designed to be used in face-to-face or online clubs.
83
80
  </p>
@@ -57,7 +57,6 @@
57
57
  <a class="button--menu button--menu--secondary button--menu--disabled">Games</a>
58
58
  <a class="button--menu button--menu--secondary button--menu--disabled">Teaching Resources</a>
59
59
  {% endif %}
60
- <button onclick="showDonateConfirmation()" class="button--menu button--pill button--tertiary">Donate</button>
61
60
  {% else %}
62
61
  {% if user|is_independent_student %}
63
62
  <div class="menu--title">Independent</div>
@@ -104,7 +103,6 @@
104
103
  <div class="menu__left-side col-md-5">
105
104
  <a href="{% url 'teach' %}" class="button--menu button--menu--primary button--menu--enabled">Teachers</a>
106
105
  <a href="{% url 'play' %}" class="button--menu button--menu--primary button--menu--enabled">Students</a>
107
- <button id="donate" onclick="showDonateConfirmation()" class="button--menu button--pill button--tertiary">Donate</button>
108
106
  {% endif %}
109
107
  </div>
110
108
  {% if user|is_logged_in %}
@@ -241,8 +239,6 @@
241
239
  {% else %}
242
240
  <a class="button button--menu__item button--register"
243
241
  href="{% url 'register' %}">Register now</a>
244
- <button onclick="showDonateConfirmation()"
245
- class="button--menu__item button--donate">Donate</button>
246
242
  <button class="button--menu__item button--menu__item--sub-header login"
247
243
  data-toggle="collapse" data-target="#login-tabs">Log in</button>
248
244
  <div id="login-tabs" class="collapse">
@@ -18,19 +18,3 @@ class TestGlobalForms(TestCase):
18
18
  response = client.post(url, data)
19
19
  messages = list(response.wsgi_request._messages)
20
20
  assert len([m for m in messages if "error" in m.tags]) == 1
21
-
22
- def test_donate_signup_successful(self):
23
- url = reverse("process_donate_form")
24
- client = Client()
25
- data = {"email": "valid_email@example.com", "age_verification": "on"}
26
- response = client.post(url, data)
27
- messages = list(response.wsgi_request._messages)
28
- assert len([m for m in messages if m.tags == "success"]) == 1
29
-
30
- def test_donate_signup_fail(self):
31
- url = reverse("process_donate_form")
32
- client = Client()
33
- data = {"email": "invalid_email", "age_verification": "on"}
34
- response = client.post(url, data)
35
- messages = list(response.wsgi_request._messages)
36
- assert len([m for m in messages if "error" in m.tags]) == 1
portal/urls.py CHANGED
@@ -5,7 +5,6 @@ from django.views.generic import RedirectView
5
5
  from django.views.generic.base import TemplateView
6
6
  from django.views.i18n import JavaScriptCatalog
7
7
  from game.views.level import play_default_level
8
- from two_factor.urls import urlpatterns as tf_urls
9
8
  from two_factor.views import (
10
9
  BackupTokensView,
11
10
  ProfileView,
@@ -38,13 +37,11 @@ from portal.views.api import (
38
37
  )
39
38
  from portal.views.dotmailer import (
40
39
  dotmailer_consent_form,
41
- process_donate_form,
42
40
  process_newsletter_form,
43
41
  )
44
42
  from portal.views.email import verify_email
45
43
  from portal.views.home import (
46
44
  coding_club,
47
- download_student_pack,
48
45
  home,
49
46
  home_learning,
50
47
  logout_view,
@@ -281,9 +278,6 @@ urlpatterns = [
281
278
  process_newsletter_form,
282
279
  name="process_newsletter_form",
283
280
  ),
284
- re_path(
285
- r"^donate_signup/$", process_donate_form, name="process_donate_form"
286
- ),
287
281
  re_path(r"^consent_form/$", dotmailer_consent_form, name="consent_form"),
288
282
  re_path(
289
283
  r"^verify_email/$",
@@ -527,11 +521,6 @@ urlpatterns = [
527
521
  ),
528
522
  ),
529
523
  re_path(r"^codingClub/$", coding_club, name="codingClub"),
530
- re_path(
531
- r"^codingClub/(?P<student_pack_type>[3-4])/",
532
- download_student_pack,
533
- name="download_student_pack",
534
- ),
535
524
  re_path(
536
525
  r"^removeFakeAccounts/",
537
526
  RemoveFakeAccounts.as_view(),
portal/views/dotmailer.py CHANGED
@@ -12,7 +12,7 @@ from django.shortcuts import render
12
12
  from django.urls import reverse_lazy
13
13
  from django.views.decorators.csrf import csrf_exempt
14
14
 
15
- from portal.forms.dotmailer import NewsletterForm, DonateForm, ConsentForm
15
+ from portal.forms.dotmailer import NewsletterForm, ConsentForm
16
16
 
17
17
 
18
18
  @csrf_exempt
@@ -40,27 +40,6 @@ def process_newsletter_form(request):
40
40
  return HttpResponse(status=405)
41
41
 
42
42
 
43
- @csrf_exempt
44
- def process_donate_form(request):
45
- if request.method == "POST":
46
- donate_form = DonateForm(data=request.POST)
47
- if donate_form.is_valid():
48
- user_email = request.POST.get("email", "")
49
- add_to_dotmailer("", "", user_email, address_book_ids["donors"])
50
- messages.success(
51
- request, "Thank you for registering your interest! 🎉"
52
- )
53
- return HttpResponseRedirect(reverse_lazy("home"))
54
- messages.error(
55
- request,
56
- "Invalid email address. Please try again.",
57
- extra_tags="sub-nav--warning",
58
- )
59
- return HttpResponseRedirect(reverse_lazy("home"))
60
-
61
- return HttpResponse(status=405)
62
-
63
-
64
43
  def dotmailer_consent_form(request):
65
44
  if request.method == "POST":
66
45
  consent_form = ConsentForm(data=request.POST)
portal/views/home.py CHANGED
@@ -2,8 +2,6 @@ import logging
2
2
  import math
3
3
 
4
4
  from common.helpers.emails import (
5
- NOTIFICATION_EMAIL,
6
- send_email,
7
5
  send_verification_email,
8
6
  )
9
7
  from common.mail import campaign_ids, send_dotdigital_email
@@ -16,7 +14,7 @@ from django.contrib.auth.models import User
16
14
  from django.core.exceptions import ObjectDoesNotExist
17
15
  from django.db.models import F
18
16
  from django.http import HttpResponse, HttpResponseRedirect
19
- from django.shortcuts import redirect, render
17
+ from django.shortcuts import render
20
18
  from django.urls import reverse, reverse_lazy
21
19
  from django.utils import timezone
22
20
  from django.utils.html import format_html
@@ -37,8 +35,6 @@ from portal.strings.ten_year_map import (
37
35
  TEN_YEAR_MAP_BANNER,
38
36
  TEN_YEAR_MAP_HEADLINE,
39
37
  )
40
- from portal.templatetags.app_tags import cloud_storage
41
- from portal.views.teacher.teach import count_student_pack_downloads_click
42
38
 
43
39
  LOGGER = logging.getLogger(__name__)
44
40
 
@@ -281,13 +277,6 @@ def coding_club(request):
281
277
  )
282
278
 
283
279
 
284
- def download_student_pack(request, student_pack_type):
285
- if request.method == "POST":
286
- count_student_pack_downloads_click(int(student_pack_type))
287
- link = cloud_storage("club_packs/PrimaryCodingClub.zip")
288
- return redirect(link)
289
-
290
-
291
280
  def home_learning(request):
292
281
  return render(
293
282
  request,
@@ -1,46 +0,0 @@
1
- {% load static %}
2
- {% load app_tags %}
3
- {# A popup with a form input for email addresses. #}
4
- <section id="donate-popup" class="popup-wrapper">
5
- <div class="popup-box">
6
- <div>
7
- <button type="button" onclick="hideDonatePopup()" class="close popup-box__close" aria-label="Close">
8
- <span class="iconify" data-icon="mdi:close"></span>
9
- </button>
10
- </div>
11
- <div class="popup-box__title"></div>
12
- <div class="popup-box__msg"></div>
13
- <form id="donate_form" action="{% url 'process_donate_form' %}"
14
- method="post">
15
- <div class="col-sm-12">
16
- {{ donate_form.non_field_errors }}
17
- <div class="form--row">
18
- <div class="form--row__input">
19
- <label><small>{{ donate_form.email.label }}</small></label>
20
- <div class="input--icon">
21
- {{ donate_form.email }}
22
- <span class="iconify" data-icon="mdi:email-outline"></span>
23
- </div>
24
- {{ donate_form.email.errors }}
25
- <small>{{ donate_form.email.help_text }}</small>
26
- </div>
27
- </div>
28
- <div class="form--row justify-content-between">
29
- <div class="form__checkbox">
30
- <div class="form__checkbox-input">
31
- {{ donate_form.age_verification }}
32
- </div>
33
- <p class="p-0">Please confirm that you are over 18.</p>
34
- </div>
35
- </div>
36
- </div>
37
- <div class="popup-box__buttons">
38
- <a class="button button--small button--secondary button--secondary--dark"
39
- onclick="hideDonatePopup()" aria-labelledby="cancel_button">Cancel</a>
40
- <button type="submit" id="confirm_donate_button"
41
- class='button button--small button--primary'
42
- aria-labelledby="confirm_button">Confirm</button>
43
- </div>
44
- </form>
45
- </div>
46
- </section>