codeforlife-portal 6.45.6__py2.py3-none-any.whl → 6.46.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.

Potentially problematic release.


This version of codeforlife-portal might be problematic. Click here for more details.

@@ -0,0 +1,24 @@
1
+ from datetime import date
2
+
3
+ from django.apps.registry import Apps
4
+ from django.db import migrations, models
5
+
6
+ def clean_early_class_data(apps: Apps, *args):
7
+ Class = apps.get_model("common", "Class")
8
+
9
+ Class.objects.filter(
10
+ creation_time__date__lt = date(2021, 10, 15)
11
+ ).update(creation_time = None)
12
+
13
+ class Migration(migrations.Migration):
14
+
15
+ dependencies = [
16
+ ("common", "0052_add_cse_fields")
17
+ ]
18
+
19
+ operations = [
20
+ migrations.RunPython(
21
+ code=clean_early_class_data,
22
+ reverse_code=migrations.RunPython.noop,
23
+ ),
24
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codeforlife-portal
3
- Version: 6.45.6
3
+ Version: 6.46.1
4
4
  Classifier: Programming Language :: Python
5
5
  Classifier: Programming Language :: Python :: 3.8
6
6
  Classifier: Framework :: Django
@@ -25,7 +25,7 @@ Requires-Dist: django-classy-tags ==2.0.0
25
25
  Requires-Dist: libsass ==0.23.0
26
26
  Requires-Dist: phonenumbers ==8.12.12
27
27
  Requires-Dist: more-itertools ==8.7.0
28
- Requires-Dist: cfl-common ==6.45.6
28
+ Requires-Dist: cfl-common ==6.46.1
29
29
  Requires-Dist: django-ratelimit ==3.0.1
30
30
  Requires-Dist: django-preventconcurrentlogins ==0.8.2
31
31
  Requires-Dist: django-csp ==3.7
@@ -66,6 +66,7 @@ cfl_common/common/migrations/0049_anonymise_orphan_users.py,sha256=tw9xMrDMRPDCO
66
66
  cfl_common/common/migrations/0050_anonymise_orphan_schools.py,sha256=_KCkSkoObTpLplX6gXvlV3JXpddn7neyJEa8YKFWeW0,869
67
67
  cfl_common/common/migrations/0051_verify_returning_users.py,sha256=WMpoTA24WgimLEVmKXuPqZ3aZdClRhY5vuGtYseeJp0,758
68
68
  cfl_common/common/migrations/0052_add_cse_fields.py,sha256=NhUkkcu2EBzJFhewCTccQ63AoANkGq1CXbFWIGJG9jk,2232
69
+ cfl_common/common/migrations/0053_clean_class_data.py,sha256=lBKlDa49YwT660o-Ot6IYe4I1KfervTn4uAijda0nyw,584
69
70
  cfl_common/common/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
71
  cfl_common/common/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
72
  cfl_common/common/tests/test_migration_aimmo_characters.py,sha256=pdCCsns90Qz05QqmaBUYK18jKe9aP-symtZjkKG4rag,1079
@@ -106,7 +107,7 @@ example_project/portal_test_settings.py,sha256=frp_XMpd-z1g3VFCRxB2w7AaFW2ivRVKn
106
107
  example_project/settings.py,sha256=XRZZvASoIl5a9xe3masTq_CUBleuJq9ByHx8f_e2UFc,5613
107
108
  example_project/urls.py,sha256=OVeRQ-TCpzHISBRuzqD0yd3ewF7H5U3c-f2p2alfUD0,430
108
109
  example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
109
- portal/__init__.py,sha256=C8Jm9d-O8aLg9RdRqyEzkPlSgYpG8IrOwrqHXEU0EHw,23
110
+ portal/__init__.py,sha256=C-WkT_jxkIWg_1sKDn5_MsGHx3yCDs4ACDedjxKYDMU,23
110
111
  portal/admin.py,sha256=on1-zNRnZvf2cwBN6GVRVYRhkaksrCgfzX8XPWtkvz8,6062
111
112
  portal/app_settings.py,sha256=DhWLQOwM0zVOXE3O5TNKbMM9K6agfLuCsHOdr1J7xEI,651
112
113
  portal/backends.py,sha256=2Dss6_WoQwPuDzJUF1yEaTQTNG4eUrD12ujJQ5cp5Tc,812
@@ -114,7 +115,7 @@ portal/beta.py,sha256=0TCC-9_KZoM1nuzJ9FiuKR5n9JITdMYenHGQtRvn9UU,255
114
115
  portal/context_processors.py,sha256=1TrUZqnMqGa5f7ERph9EpBqojSMJvOrcpnJzTdeCLDI,133
115
116
  portal/handlers.py,sha256=gF99OfQrGcIGDnUyONhvylZNU8sl6XHYEurwu0fuiss,422
116
117
  portal/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- portal/urls.py,sha256=ROGvyAo1pw1hHRLupxcbIVGjaGhZXY7AeyafxXYoa7Q,17464
118
+ portal/urls.py,sha256=0u6pmeG3Emu38Af1HiROyHJJnkoEhSEpnEsSpO1Ztsk,17392
118
119
  portal/wsgi.py,sha256=3yRcNxBQG30NhzrVi93bX-DrbXtsIQBc70HiW5wbOyE,401
119
120
  portal/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
121
  portal/forms/add_game.py,sha256=Z9pjNiAU3W2HthSsbz_OWzl2RuLpZ0GtA6Xe1tg7H5I,1008
@@ -199,6 +200,9 @@ portal/static/portal/img/home_learning_hero.jpg,sha256=6TCMgY4ssAdW7H8WxtjPq-M3z
199
200
  portal/static/portal/img/home_play.png,sha256=TXsU62wcEcuUHF4948V_IxDh3nynAvlCzS7vCS44M5k,191553
200
201
  portal/static/portal/img/home_play_hero.jpg,sha256=VhuB4t98Q3EpT9US-nVdB44xOwA5RSYwSQKAtdQBVcQ,110397
201
202
  portal/static/portal/img/hope_logo.png,sha256=81UakmmI4BUH05MljuRIyCGnP51wY2myE9dLRuPbA5o,7967
203
+ portal/static/portal/img/howe_dell_1.png,sha256=oEst1ys1e8WxmDTV1buj6RrdzH7Ozf9B6wUk48ld1pI,162192
204
+ portal/static/portal/img/howe_dell_2.png,sha256=7Yd1biwFjd6lQ-2JR7k90CrAvgBhPWdsL2XfoTyOLdI,154063
205
+ portal/static/portal/img/howe_dell_3.png,sha256=Pw_wpN8raUjYvnKWui1UFpQ2upVCWb2M-XsGGLsBXlc,321514
202
206
  portal/static/portal/img/icl_logo.png,sha256=nB7HDAibkAWEDA3P_Edy1AHTUgUgDALYR-sae9BGLdc,3260
203
207
  portal/static/portal/img/icon_controller.png,sha256=Zygh2vTM1xuKPgKTfYiO7DhcPDaehAMhljrYpOHsKUw,5948
204
208
  portal/static/portal/img/icon_free.png,sha256=de2vYAkpj3vUzI6bAgfH5_zfp_J7qP9Awxy4qzY6XQg,19299
@@ -223,6 +227,7 @@ portal/static/portal/img/logo_ocado.png,sha256=_DtumBwHzTHvwRz38ilECL-zOmNdZh9l8
223
227
  portal/static/portal/img/logo_ocado_group.png,sha256=ZnwSMrUlqXaawdAAbENwTDPdEswhA3EbFirP5fAZ59w,2543
224
228
  portal/static/portal/img/logo_ocado_group.svg,sha256=FzYobwl35hZkyyoR18uNWJIx-FvOMUr5zEXKQWuGxsU,5451
225
229
  portal/static/portal/img/logo_ocado_group_white.svg,sha256=cPxusvooLqfmEBLKOH2XzFYhDck_No2SwPM5VvHU-d8,10993
230
+ portal/static/portal/img/long_europe_map.png,sha256=2sEIi7lSkYZUcWtItiNdtic8OqDSBAYuD_4dXnun4Ug,42306
226
231
  portal/static/portal/img/mc_saatchi_logo.png,sha256=piY91zTp0LYT6Nbo-rbNgkvVJYXebvOrIm58f3qurp4,3095
227
232
  portal/static/portal/img/nigel.png,sha256=5ErEl5e56AsQnhsLjGs965wn5D8oGac7Wl6-wBGvN5w,49149
228
233
  portal/static/portal/img/ocado-swirl.svg,sha256=JNQzjgHENKhHVu0oNdqtGCz8iVWzMU56d0Cs-IDCuek,2447
@@ -249,6 +254,7 @@ portal/static/portal/img/sadface.png,sha256=FU9d3XPCfe6sknfAymz8XPl_0nICp0geiqTQ
249
254
  portal/static/portal/img/sharon_harrison.jpg,sha256=VBPA3nuzP8k8R8MW3-kHK_TFjax8vMktLjU84emR9Js,6949
250
255
  portal/static/portal/img/sian.png,sha256=9-j5qxJPHXPto8a06E6iYU-kbUCbAIY3UhJU0Egw6ho,116116
251
256
  portal/static/portal/img/teaching_resources_hero.jpg,sha256=tDJpcTnQ_om0aVIJBXHtdjRSuGkuIcl1N__lWYVvNbo,60671
257
+ portal/static/portal/img/ten_year_map_pin.svg,sha256=7hOOyo7Qb1SIBJ_QmpxP-2cS6qr0OleohWhAisAXzv4,348
252
258
  portal/static/portal/img/thumbnail_educate_kurono.png,sha256=wnakgkgLkE4DYEha6Rpi1JPz4wdA3uiIEU8kBe1makk,68282
253
259
  portal/static/portal/img/thumbnail_educate_rapid_router.png,sha256=7_iqzffvVJZGPfwXmwPurLCWpiXYP9RochU9g5munok,67570
254
260
  portal/static/portal/img/thumbnail_educate_resources.png,sha256=kWmhGxkGiJBFB75ytdTHCg7Y7M_GBjhe7UgA9kIG0AE,37070
@@ -286,6 +292,7 @@ portal/static/portal/js/teach_browser.js,sha256=r5duQU7HNwVM9tSGamaxmY3gWzRRgRfO
286
292
  portal/static/portal/js/teach_class.js,sha256=cHn8cw02V8sCcLL7WCj0Uy2YI8kFjkk0U24pFHTPn_4,4947
287
293
  portal/static/portal/js/teacherEditStudent.js,sha256=Jq-WPPDDHMZ8_8_zFMUeaXSqLq0babGdWADUn7vnjoA,730
288
294
  portal/static/portal/js/teacherLogin.js,sha256=4r3z4oGVuiMymE8APvzQ0F3QAmNWxDN_Jb-eLC4WAQI,531
295
+ portal/static/portal/js/tenYearMap.js,sha256=4kfgL--Im0UOcO7gQbqhVJeqIJYwFY853EwRgoDbrgE,348
289
296
  portal/static/portal/js/lib/jquery-video-lightning.js,sha256=nLfbod3Fh-HCELdu1_t0qcqr1C0ensnbKePvw_hvQIk,19519
290
297
  portal/static/portal/js/lib/jquery.colorbox.js,sha256=4-ZawxafV_4sijUG-zDB5Dpb1sSXJyTpS6djiQLI6P4,29200
291
298
  portal/static/portal/js/lib/jquery.easy-ticker.js,sha256=Gj4dexfJvqsIds9qNMsAnomtSgN_VYOsdgOzKMoR77U,4278
@@ -402,12 +409,12 @@ portal/static/portal/sass/modules/_spacing.scss,sha256=WHBcd8ZSl4UHqPAOmW_JLt_MO
402
409
  portal/static/portal/sass/partials/_banners.scss,sha256=lmL29GMTtxF1RXpmC11TR0zxQaFU8uNmdGsuMCujRBE,8877
403
410
  portal/static/portal/sass/partials/_base.scss,sha256=cUvskrzNXLA-Xg1EgpL-S0wTWDnRn86AcdMbE2_aLMM,26
404
411
  portal/static/portal/sass/partials/_buttons.scss,sha256=dserW-L6262tgkygb5yA4aRJhIWpt4TVFSFAJUdYn9c,9195
405
- portal/static/portal/sass/partials/_carousel.scss,sha256=H1-MUYWvv0VNZxJW9EcQXv9ktv2uvGvDMn2zHDKDeAs,3238
412
+ portal/static/portal/sass/partials/_carousel.scss,sha256=m8N6jSuHBzeKyMUNGGc48NlNYTmotKlaiy10hwFnyWY,3500
406
413
  portal/static/portal/sass/partials/_footer.scss,sha256=oqt-Qvz7vtUFNnpe4FkQkaZk3J3fojCy9cKCxqGTWoM,2493
407
414
  portal/static/portal/sass/partials/_forms.scss,sha256=cbonSxhtfaHR-4R6i0u65AaIZRG_25C837CgZlLuwCI,7101
408
415
  portal/static/portal/sass/partials/_grids.scss,sha256=-2kmJMjothSPWUoqDf07-GqmEBk4uT6SVasRyfKi5Cs,5902
409
416
  portal/static/portal/sass/partials/_header.scss,sha256=OYcN1R7LB04BlGkhvfBf4E0CgMjCgBIwop6VZY7s7qw,7372
410
- portal/static/portal/sass/partials/_images.scss,sha256=1QuDit2-IO7f0WpanTLnOLcHxoEE93EC056biHHhHjs,3087
417
+ portal/static/portal/sass/partials/_images.scss,sha256=Fro4a0VfLo6FyrvGk5yjsjzzGKWVdHeMFJiVC96C7vk,6213
411
418
  portal/static/portal/sass/partials/_popup.scss,sha256=OhBdNto7GEGbGFLzT0ybUKgDmuhSs365fSWy7D8qO1w,2205
412
419
  portal/static/portal/sass/partials/_progress-bars.scss,sha256=cTyRa9WLeIE0rETmY58Rcyf-8O6JE3iDTa_jw3mk23g,144
413
420
  portal/static/portal/sass/partials/_subnavs.scss,sha256=6FJV1wBmHchnGBL9Yx56Ua4RR1b5P6ABTextZPTqXSs,5052
@@ -428,6 +435,7 @@ portal/strings/play.py,sha256=875QyaTK_w6J3BK4Che3vzCWkbrxwOYy_9FV9ZocMeM,804
428
435
  portal/strings/student_aimmo_dashboard.py,sha256=heEQ8KN7Vt19fg0MAYPcg9-mLOlCpOWlxVb8QMMldjE,235
429
436
  portal/strings/teach.py,sha256=fhzX55gs9eKEYUfCoTGcJYWuVJA2bx7mXvQMtXfp9-Q,257
430
437
  portal/strings/teacher_resources.py,sha256=0KzaW3ieXxXm-7SMrYhydP3fnaDaWiuayoOJUk4a-Qc,760
438
+ portal/strings/ten_year_map.py,sha256=iodL7p1MZwo1pd3az6kPvr6OvoSgZa91H2gjeMw4OkY,517
431
439
  portal/templates/403.html,sha256=gsV6LxsM-n7WuIV5DzaQNKEEBGVbuzJU9lJq9O8jqQ4,1169
432
440
  portal/templates/404.html,sha256=Tk6HmuzDdIT4ojoIHvH2MibU_0OekU5gmuJmk5M4K_Q,563
433
441
  portal/templates/500.html,sha256=aqJfDXPzaEw9K6LToPpE4rARuunLSxiIrJ_GnuJr8pI,1703
@@ -460,6 +468,7 @@ portal/templates/portal/reset_password_confirm.html,sha256=jPHSDatezRXzCG4zH_5BQ
460
468
  portal/templates/portal/reset_password_done.html,sha256=rpzN3svZne5H2FS3TJaGnHypRj2KX-SRS6DbFQkgLf0,667
461
469
  portal/templates/portal/reset_password_email_sent.html,sha256=kwNvoH_M-Qd5s-g0HiULwfQt_SD12WEMgPRSnLmldTQ,914
462
470
  portal/templates/portal/teach.html,sha256=5Ua6l2H6dBIXjKjMTUGkM92SnBnAXTBRpM6sKlwnrUk,8724
471
+ portal/templates/portal/ten_year_map.html,sha256=ssARat4irhtW7hzqz-5rsaKhDgHz6Iw4b9Rt8DI8np0,8418
463
472
  portal/templates/portal/terms.html,sha256=SO8ruLF2kdYpOinxlVx1CHfPNgphemX4wvWJ9-W6Nj4,29155
464
473
  portal/templates/portal/login/independent_student.html,sha256=G4u82m0lko4yQvqRDMger5p63A6KtFI_bsEOsQWlyJw,1777
465
474
  portal/templates/portal/login/student.html,sha256=s5rUyT-u7gei2xWQ-Ba35ePC5WbtwReEzUZAKwUoZVY,1261
@@ -556,7 +565,7 @@ portal/tests/test_school_student.py,sha256=bFZwY4twaFHQLp0cltMq8cLNDZGgCHTZBCZHK
556
565
  portal/tests/test_security.py,sha256=FGrlRfnzi-Xx2_bn4fTZlYORKm7w_GhGkD3havvplwc,3239
557
566
  portal/tests/test_teacher.py,sha256=_VmQCWq07uCFbvq6Vd7GN00mE7vY7WNMeQTk6bHxFPI,36898
558
567
  portal/tests/test_teacher_student.py,sha256=NWITbUw1kijqu3c8eRHLHJKaYQMOsOMvl7PAVx5QghI,21567
559
- portal/tests/test_views.py,sha256=g6WQtexZ-UfwpNxpTmfiB-RTBtLFiYBmjAa5oFCSBDk,42073
568
+ portal/tests/test_views.py,sha256=e7Yw4W1gjyv7I3r99uIqpTaBRYdWyaqG7VNFHakC0Ss,40902
560
569
  portal/tests/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
561
570
  portal/tests/migrations/test_migration_make_portaladmin_teacher.py,sha256=ekMRb6cU97oT0k9gCKW7IUB7oPuGmv4uWJCqInQN7x8,2589
562
571
  portal/tests/migrations/test_migration_preview_user_remove.py,sha256=K6D-FZT9YFEA8oMxHz9VTglVV6MZOTRYVlvwWwXc2vU,555
@@ -619,7 +628,7 @@ portal/views/admin.py,sha256=4Xt3zEyQH7sUwQSrwuRtoCodWidjOzd7gJUwWU96pXY,957
619
628
  portal/views/api.py,sha256=lCwiclR98G-yTgK55u8IjkueIH8iremeiZSa3jAvO-M,6990
620
629
  portal/views/dotmailer.py,sha256=_subSoy5f1j5sAcRrjE_xMejdarjHIY1d_jwSrf7_o0,2299
621
630
  portal/views/email.py,sha256=V3wXRxIjeZ4OJBVqGCQrPn-GQWKZK1PCXbR1f2Zpa_4,2174
622
- portal/views/home.py,sha256=J4KY66p2nRgRu1O_0IYwdgfZoTYuhQS0qpfiA1b8PTE,9855
631
+ portal/views/home.py,sha256=GlNTJqSST_jQi0REuaV2aI2zram-KAhedmATdC6yU58,10247
623
632
  portal/views/legal.py,sha256=nUunsTHnhMcXBcDlg1GmUal86k9Vhinne4A2FWfq78M,342
624
633
  portal/views/organisation.py,sha256=sPDbiM7hdtpF8GKyh_4n4VPl2a-WnAgnF4q9aSvQCVI,3341
625
634
  portal/views/play_landing_page.py,sha256=FFmjUFub3ZdlbMqkB8yX3jAImCzqrUqgb8AZcpKywZ4,308
@@ -643,8 +652,8 @@ portal/views/two_factor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
643
652
  portal/views/two_factor/core.py,sha256=O_wcBeFqdPYSGNGv-pT_vbs5-Dj1Z-Jfkd6f9-E5yZI,760
644
653
  portal/views/two_factor/form.py,sha256=lnHNKI-BMlpncTuW3zUzjPaJJNuEra2I_nOam0eOKFY,257
645
654
  portal/views/two_factor/profile.py,sha256=tkl_ludo8arMtd5LKNmohM66vpC_YQiP-0nspTSJiJ4,383
646
- codeforlife_portal-6.45.6.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
647
- codeforlife_portal-6.45.6.dist-info/METADATA,sha256=qaewdj3ykFd-t0qElBtAZK3EIBMZnDWBo-TCpgfQpWU,3474
648
- codeforlife_portal-6.45.6.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
649
- codeforlife_portal-6.45.6.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
650
- codeforlife_portal-6.45.6.dist-info/RECORD,,
655
+ codeforlife_portal-6.46.1.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
656
+ codeforlife_portal-6.46.1.dist-info/METADATA,sha256=dZQ9D92rfDoMHysvoaPDHeTUwiH2x5xUsoTeoPcjsNg,3474
657
+ codeforlife_portal-6.46.1.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
658
+ codeforlife_portal-6.46.1.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
659
+ codeforlife_portal-6.46.1.dist-info/RECORD,,
portal/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "6.45.6"
1
+ __version__ = "6.46.1"
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="40px" viewBox="0 0 24 24" width="40px" fill="#00A3E0"><path d="M0 0h24v24H0z" fill="none"/><path stroke-width="0.75px" stroke="black" d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/></svg>
@@ -0,0 +1,14 @@
1
+ let currentActivePin;
2
+
3
+ function setActivePin(city) {
4
+ if (currentActivePin) {
5
+ currentActivePin.setAttribute("fill", "#FFC709");
6
+ }
7
+
8
+ currentActivePin = document.getElementById(city + "-pin").getElementsByTagName("svg")[0]
9
+ currentActivePin.setAttribute("fill", "#EE0857");
10
+ }
11
+
12
+ $(document).ready(function () {
13
+ setActivePin("hatfield");
14
+ });
@@ -13,6 +13,7 @@
13
13
  &.next,
14
14
  &.prev {
15
15
  display: flex;
16
+ flex-wrap: wrap;
16
17
  }
17
18
 
18
19
  > .carousel-image-wrapper {
@@ -155,3 +156,23 @@
155
156
  /* shrink padding because cards have their own */
156
157
  @include _padding(0px, 2px, 0px, 2px);
157
158
  }
159
+
160
+ .carousel-button {
161
+ margin-top: 2rem;
162
+ }
163
+
164
+ .carousel-image {
165
+ margin-top: 15px;
166
+ }
167
+
168
+ .carousel-image--column {
169
+ padding-right: 20px;
170
+ }
171
+
172
+ .carousel-column--images {
173
+ margin-top: -15px;
174
+ }
175
+
176
+ .carousel-header {
177
+ margin-top: 0rem !important;
178
+ }
@@ -73,6 +73,287 @@ img {
73
73
  content: url("../img/logo_cfl.png");
74
74
  }
75
75
 
76
+ .map-pin {
77
+ position: absolute;
78
+ background: 0 0;
79
+ min-width: 0px !important;
80
+ }
81
+
82
+ #map-container {
83
+ position: relative;
84
+ }
85
+
86
+ #hatfield {
87
+ left: 34.5%;
88
+ top: 26.7%;
89
+ }
90
+
91
+ #barcelona {
92
+ left: 38%;
93
+ top: 58.8%;
94
+ }
95
+
96
+ #krakow {
97
+ left: 61.7%;
98
+ top: 30.3%;
99
+ }
100
+
101
+ #sofia {
102
+ left: 68.5%;
103
+ top: 55.5%;
104
+ }
105
+
106
+ @media only screen and (max-width: 1400px) {
107
+ #sofia {
108
+ left: 68.8%;
109
+ top: 55.8%;
110
+ }
111
+ }
112
+
113
+ @media only screen and (max-width: 1200px) {
114
+ #hatfield {
115
+ left: 33.5%;
116
+ top: 25.1%;
117
+ }
118
+
119
+ #barcelona {
120
+ left: 36.7%;
121
+ top: 56.4%;
122
+ }
123
+
124
+ #krakow {
125
+ left: 60.7%;
126
+ top: 28.7%;
127
+ }
128
+
129
+ #sofia {
130
+ left: 68%;
131
+ top: 53.5%;
132
+ }
133
+ }
134
+
135
+ @media only screen and (max-width: 992px) {
136
+ #hatfield {
137
+ left: 32.7%;
138
+ top: 22.8%;
139
+ }
140
+
141
+ #barcelona {
142
+ left: 35.7%;
143
+ top: 54.6%;
144
+ }
145
+
146
+ #krakow {
147
+ left: 59.7%;
148
+ top: 26.3%;
149
+ }
150
+
151
+ #sofia {
152
+ left: 67%;
153
+ top: 50.2%;
154
+ }
155
+ }
156
+
157
+ @media only screen and (max-width: 767px) {
158
+ #barcelona {
159
+ left: 36.7%;
160
+ top: 54%;
161
+ }
162
+
163
+ #sofia {
164
+ left: 67.5%;
165
+ top: 51.2%;
166
+ }
167
+ }
168
+
169
+ @media only screen and (max-width: 700px) {
170
+ #hatfield {
171
+ left: 32.5%;
172
+ top: 20.8%;
173
+ }
174
+
175
+ #barcelona {
176
+ left: 35.4%;
177
+ top: 53.5%;
178
+ }
179
+
180
+ #krakow {
181
+ left: 59.7%;
182
+ top: 25.3%;
183
+ }
184
+
185
+ #sofia {
186
+ left: 67%;
187
+ top: 50.2%;
188
+ }
189
+ }
190
+
191
+ @media only screen and (max-width: 650px) {
192
+ #barcelona {
193
+ left: 35.4%;
194
+ top: 52.5%;
195
+ }
196
+
197
+ #sofia {
198
+ left: 66%;
199
+ top:48.2%;
200
+ }
201
+ }
202
+
203
+ @media only screen and (max-width: 600px) {
204
+ #hatfield {
205
+ left: 31.5%;
206
+ top: 18.8%;
207
+ }
208
+
209
+ #barcelona {
210
+ left: 34.4%;
211
+ top: 50.5%;
212
+ }
213
+
214
+ #krakow {
215
+ left: 58.7%;
216
+ top: 23.3%;
217
+ }
218
+
219
+ #sofia {
220
+ left: 66%;
221
+ top: 48.2%;
222
+ }
223
+ }
224
+
225
+ @media only screen and (max-width: 550px) {
226
+ #hatfield {
227
+ left: 30.5%;
228
+ top: 17.3%;
229
+ }
230
+
231
+ #barcelona {
232
+ left: 33.4%;
233
+ top: 49%;
234
+ }
235
+
236
+ #krakow {
237
+ left: 57.7%;
238
+ top: 21.6%;
239
+ }
240
+
241
+ #sofia {
242
+ left: 65%;
243
+ top: 46%;
244
+ }
245
+ }
246
+
247
+ @media only screen and (max-width: 500px) {
248
+ #hatfield {
249
+ left: 29.8%;
250
+ top: 16.3%;
251
+ }
252
+
253
+ #barcelona {
254
+ left: 33%;
255
+ top: 47%;
256
+ }
257
+
258
+ #krakow {
259
+ left: 57%;
260
+ top: 20%;
261
+ }
262
+
263
+ #sofia {
264
+ left: 64%;
265
+ top: 44%;
266
+ }
267
+ }
268
+
269
+ @media only screen and (max-width: 450px) {
270
+ #hatfield {
271
+ left: 28.7%;
272
+ top: 17%;
273
+ }
274
+
275
+ #barcelona {
276
+ left: 32%;
277
+ top: 44.5%;
278
+ }
279
+
280
+ #krakow {
281
+ left: 56%;
282
+ top: 21.5%;
283
+ }
284
+
285
+ #sofia {
286
+ left: 63%;
287
+ top: 42%;
288
+ }
289
+ }
290
+
291
+ @media only screen and (max-width: 430px) {
292
+ #hatfield {
293
+ left: 28.5%;
294
+ top: 17%;
295
+ }
296
+
297
+ #barcelona {
298
+ left: 31.5%;
299
+ top: 42.5%;
300
+ }
301
+
302
+ #krakow {
303
+ left: 55%;
304
+ top: 19.5%;
305
+ }
306
+
307
+ #sofia {
308
+ left: 62%;
309
+ top: 40.5%;
310
+ }
311
+ }
312
+
313
+ @media only screen and (max-width: 390px) {
314
+ #hatfield {
315
+ left: 27.8%;
316
+ top: 15.5%;
317
+ }
318
+
319
+ #barcelona {
320
+ left: 31%;
321
+ top: 40.5%;
322
+ }
323
+
324
+ #krakow {
325
+ left: 52.5%;
326
+ top: 19%;
327
+ }
328
+
329
+ #sofia {
330
+ left: 61%;
331
+ top: 39%;
332
+ }
333
+ }
334
+
335
+ @media only screen and (max-width: 360px) {
336
+ #hatfield {
337
+ left: 27.5%;
338
+ top: 14.5%;
339
+ }
340
+
341
+ #barcelona {
342
+ left: 30.5%;
343
+ top: 40%;
344
+ }
345
+
346
+ #krakow {
347
+ left: 53%;
348
+ top: 18%;
349
+ }
350
+
351
+ #sofia {
352
+ left: 60%;
353
+ top: 35.5%;
354
+ }
355
+ }
356
+
76
357
  .glyphicon {
77
358
  @include _font-size(30px);
78
359
  font-weight: 500;
@@ -0,0 +1,13 @@
1
+ TEN_YEAR_MAP_BANNER = {
2
+ "title": "Celebrate",
3
+ "subtitle": "Join us in celebrating our 10 year anniversary",
4
+ "text": "",
5
+ "image_class": "banner--picture--educate",
6
+ "alt": "Female teacher helping young female student on a laptop",
7
+ }
8
+
9
+ TEN_YEAR_MAP_HEADLINE = {
10
+ "title": "Code for Life is turning 10!",
11
+ "description": "For our 10th anniversary, we're going global! Click on the pins on the map "
12
+ "to check out what events are being run by our amazing volunteers from around the world.",
13
+ }
@@ -0,0 +1,147 @@
1
+ {% extends 'portal/base.html' %}
2
+ {% load static %}
3
+ {% load app_tags banner_tags headline_tags character_list_tags %}
4
+
5
+ {% block subNav %}
6
+ {% banner banner_name="BANNER" %}
7
+ {% endblock subNav %}
8
+
9
+ {% block scripts %}
10
+ {{ block.super }}
11
+ <script defer type="text/javascript" src="{% static 'portal/js/tenYearMap.js' %}"></script>
12
+ {% endblock scripts %}
13
+
14
+ {% block content %}
15
+
16
+ <div class="background">
17
+ {% headline headline_name="HEADLINE" %}
18
+ </div>
19
+
20
+ <div class="background container" id="map-container">
21
+ <section class="background background--primary">
22
+ <img title="world map" alt="World map" src="{% static 'portal/img/long_europe_map.png' %}" width="95%"/>
23
+ <button class="map-pin" id="hatfield" onclick="setActivePin('hatfield')" data-target="#carousel-ten-year-map" data-slide-to="0">
24
+ <map-pin id="hatfield-pin" />
25
+ </button>
26
+ <button class="map-pin" id="barcelona" onclick="setActivePin('barcelona')" data-target="#carousel-ten-year-map" data-slide-to="1">
27
+ <map-pin id="barcelona-pin" />
28
+ </button>
29
+ <button class="map-pin" id="krakow" onclick="setActivePin('krakow')" data-target="#carousel-ten-year-map" data-slide-to="2">
30
+ <map-pin id="krakow-pin" />
31
+ </button>
32
+ <button class="map-pin" id="sofia" onclick="setActivePin('sofia')" data-target="#carousel-ten-year-map" data-slide-to="3">
33
+ <map-pin id="sofia-pin" />
34
+ </button>
35
+ </section>
36
+ </div>
37
+
38
+ <div class="background">
39
+ <div class="container">
40
+ <div class="row">
41
+ <div class="col-sm-12">
42
+ <div id="carousel-ten-year-map" class="carousel slide">
43
+ <ol class="carousel-indicators">
44
+ <li data-target="#carousel-ten-year-map" data-slide-to="0" class="active" onclick="setActivePin('hatfield')"></li>
45
+ <li data-target="#carousel-ten-year-map" data-slide-to="1" onclick="setActivePin('barcelona')"></li>
46
+ <li data-target="#carousel-ten-year-map" data-slide-to="2" onclick="setActivePin('krakow')"></li>
47
+ <li data-target="#carousel-ten-year-map" data-slide-to="3" onclick="setActivePin('sofia')"></li>
48
+ </ol>
49
+
50
+ <div class="carousel-inner" role="listbox">
51
+ <div class="item active" id="hatfield-carousel">
52
+ <div>
53
+ <div class="col-sm-6 carousel-column--images">
54
+ <div class="row carousel-image-wrapper">
55
+ <img src="{% static 'portal/img/howe_dell_1.png' %}" class="carousel-image carousel-image--column" alt="Code for Life volunteers outside Howe Dell Primary School">
56
+ </div>
57
+ <div class="row carousel-image-wrapper">
58
+ <img src="{% static 'portal/img/howe_dell_2.png' %}" class="carousel-image carousel-image--column" alt="CfL volunteers outside Howe Dell Primary School showing off their Code for Life T-shirts">
59
+ </div>
60
+ </div>
61
+ <div class="col-sm-6 carousel-text">
62
+ <h4 class="carousel-header">
63
+ <b>Howe Dell Primary School, Hatfield, UK</b>
64
+ </h4>
65
+ <h5>
66
+ July 2024
67
+ </h5>
68
+ <p>
69
+ We completed the UK leg of our world tour with an enthusiastic reception from Year 4 students at Howe Dell Primary School
70
+ in Hatfield. The pupils were captivated by our presentation on different types of robots and Ocado Group's automation
71
+ technology used in sorting and packing deliveries. They were then tasked with designing robots to solve problems, producing
72
+ creative concepts like robot childminders and homework helpers. Midway through, we introduced them to coding with Rapid Router,
73
+ explaining algorithms and letting them experiment with the levels. The students were thrilled about the competition for the
74
+ best robot design, which included a prize of a golden 3D printed medal. Teachers praised the engaging and educational workshop,
75
+ while Ocado volunteers found the experience rewarding and beneficial for developing their communication and teaching skills.
76
+ The children's designs were exceptional, making the judging process challenging, but ultimately a few standout innovations were
77
+ selected.
78
+ </p>
79
+ <div class="carousel-button">
80
+ <a href="https://www.linkedin.com/company/code-for-life-uk/posts/?feedView=all" target="_blank" class="button button--primary button-right-arrow">Learn more</a>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div>
85
+ <img src="{% static 'portal/img/howe_dell_3.png' %}" class="carousel-image"" alt="The three winners of Howe Dell Primary School's robot design challenge">
86
+ </div>
87
+ </div>
88
+ <div class="item" id="barcelona-carousel">
89
+ <div class="col-sm-6 carousel-image-wrapper">
90
+ <img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
91
+ </div>
92
+ <div class="col-sm-6 carousel-text">
93
+ <h5>
94
+ Barcelona
95
+ </h5>
96
+ <p>
97
+ Coming soon!
98
+ </p>
99
+ </div>
100
+ </div>
101
+ <div class="item" id="krakow-carousel">
102
+ <div class="col-sm-6 carousel-image-wrapper">
103
+ <img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
104
+ </div>
105
+ <div class="col-sm-6 carousel-text">
106
+ <h5>
107
+ Kraków
108
+ </h5>
109
+ <p>
110
+ Coming soon!
111
+ </p>
112
+ </div>
113
+ </div>
114
+ <div class="item" id="sofia-carousel">
115
+ <div class="col-sm-6 carousel-image-wrapper">
116
+ <img src="{% static 'portal/img/logo_cfl.png' %}" alt="CFL logo">
117
+ </div>
118
+ <div class="col-sm-6 carousel-text">
119
+ <h5>
120
+ Sofia
121
+ </h5>
122
+ <p>
123
+ Coming soon!
124
+ </p>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ <script>
135
+ customElements.define("map-pin", class extends HTMLElement {
136
+ connectedCallback() {
137
+ setTimeout(() => {
138
+ this.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" height="40px" viewBox="0 0 24 24" width="40px" fill="#FFC709">
139
+ <path d="M0 0h24v24H0z" fill="none"/>
140
+ <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
141
+ </svg>`
142
+ })
143
+ }
144
+ })
145
+ </script>
146
+
147
+ {% endblock content %}