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

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codeforlife-portal
3
- Version: 7.4.6
3
+ Version: 7.4.8
4
4
  Classifier: Programming Language :: Python
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Framework :: Django
@@ -21,7 +21,7 @@ Requires-Dist: django-classy-tags==2.0.0
21
21
  Requires-Dist: libsass==0.23.0
22
22
  Requires-Dist: phonenumbers==8.12.12
23
23
  Requires-Dist: more-itertools==8.7.0
24
- Requires-Dist: cfl-common==7.4.6
24
+ Requires-Dist: cfl-common==7.4.8
25
25
  Requires-Dist: django-ratelimit==3.0.1
26
26
  Requires-Dist: django-preventconcurrentlogins==0.8.2
27
27
  Requires-Dist: django-csp==3.7
@@ -108,7 +108,7 @@ example_project/portal_test_settings.py,sha256=_gI7-HMoPJ-cDGO6n5UlEIHKHuTR5SC_X
108
108
  example_project/settings.py,sha256=HgGSG0n6Xggd0NieFVoJgn8vKGqyRbCddoB3CRuoT-Y,5640
109
109
  example_project/urls.py,sha256=3SsP5jvPAXV5xmduka4zbSZB5PbXggjsalu1ojY5KIo,434
110
110
  example_project/wsgi.py,sha256=U1W6WzZxZaIdYZ5tks7w9fqp5WS5qvn2iThsVcskrWw,829
111
- portal/__init__.py,sha256=pKE4abdw3O6H_E0ti7YG6SgI_ZPmvVYyKSDsnFQLWnk,22
111
+ portal/__init__.py,sha256=eAE4OHpS0-RnpxEDrTUasRa2OlGd49xIz11PQ0QSctc,22
112
112
  portal/admin.py,sha256=on1-zNRnZvf2cwBN6GVRVYRhkaksrCgfzX8XPWtkvz8,6062
113
113
  portal/app_settings.py,sha256=DhWLQOwM0zVOXE3O5TNKbMM9K6agfLuCsHOdr1J7xEI,651
114
114
  portal/backends.py,sha256=2Dss6_WoQwPuDzJUF1yEaTQTNG4eUrD12ujJQ5cp5Tc,812
@@ -405,7 +405,7 @@ portal/static/portal/sass/partials/_carousel.scss,sha256=m8N6jSuHBzeKyMUNGGc48Nl
405
405
  portal/static/portal/sass/partials/_footer.scss,sha256=oqt-Qvz7vtUFNnpe4FkQkaZk3J3fojCy9cKCxqGTWoM,2493
406
406
  portal/static/portal/sass/partials/_forms.scss,sha256=cbonSxhtfaHR-4R6i0u65AaIZRG_25C837CgZlLuwCI,7101
407
407
  portal/static/portal/sass/partials/_grids.scss,sha256=pnMQht5lZ65MRB-0_nl8yn655hlKC_oWCwZopillVwc,4968
408
- portal/static/portal/sass/partials/_header.scss,sha256=NNb8hb66LPTeaGdL-vcsNSDJTxPljsOfpkYMI5EmOWc,7421
408
+ portal/static/portal/sass/partials/_header.scss,sha256=NmVmNasogxhrygApoqAY1KSmq_37eJROj0lstVr6MEY,7422
409
409
  portal/static/portal/sass/partials/_images.scss,sha256=Fro4a0VfLo6FyrvGk5yjsjzzGKWVdHeMFJiVC96C7vk,6213
410
410
  portal/static/portal/sass/partials/_popup.scss,sha256=GQ6Vtmj3vdOP4Hvsf8ZxKdEtuL8gqoClYpDgQ19kvnQ,2280
411
411
  portal/static/portal/sass/partials/_progress-bars.scss,sha256=cTyRa9WLeIE0rETmY58Rcyf-8O6JE3iDTa_jw3mk23g,144
@@ -548,7 +548,7 @@ portal/tests/test_school_student.py,sha256=bFZwY4twaFHQLp0cltMq8cLNDZGgCHTZBCZHK
548
548
  portal/tests/test_security.py,sha256=FGrlRfnzi-Xx2_bn4fTZlYORKm7w_GhGkD3havvplwc,3239
549
549
  portal/tests/test_teacher.py,sha256=vjnJi_aj_x48OJOMMRIBr0JTCxy4tFxqrLfCgw0fRxQ,29315
550
550
  portal/tests/test_teacher_student.py,sha256=NWITbUw1kijqu3c8eRHLHJKaYQMOsOMvl7PAVx5QghI,21567
551
- portal/tests/test_views.py,sha256=krg_3ZPbpPti7WNFyQkP7Mg4yX4_1dErZAX2iRJ2hu0,46751
551
+ portal/tests/test_views.py,sha256=fBh8fZkS4p9iMEqeMgSSAcL09nH6TCohwdX4BuysxjQ,47389
552
552
  portal/tests/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
553
553
  portal/tests/migrations/test_migration_make_portaladmin_teacher.py,sha256=ekMRb6cU97oT0k9gCKW7IUB7oPuGmv4uWJCqInQN7x8,2589
554
554
  portal/tests/migrations/test_migration_preview_user_remove.py,sha256=K6D-FZT9YFEA8oMxHz9VTglVV6MZOTRYVlvwWwXc2vU,555
@@ -626,13 +626,13 @@ portal/views/student/edit_account_details.py,sha256=Ba-3D_zzKbX5N01NG5qqBS0ud10B
626
626
  portal/views/student/play.py,sha256=GMxk65bxWOe1Ds2kb6rvuOd1GoAtt5v_9AihLNXoUL0,8768
627
627
  portal/views/teacher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
628
628
  portal/views/teacher/dashboard.py,sha256=pjzOOCz29d4VHukaCI5QhkDsu-RPvy7SXC9dDcPo50k,27422
629
- portal/views/teacher/teach.py,sha256=yWe2K0FHEQB_K3vzPJO8MR0gU2ZaDrXGw8gXMJBH0T0,35765
629
+ portal/views/teacher/teach.py,sha256=-9zzpNLR2oRkyBFXzXjL0_ew_Qpk27w7uca5rKNeCgE,35988
630
630
  portal/views/two_factor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
631
631
  portal/views/two_factor/core.py,sha256=O_wcBeFqdPYSGNGv-pT_vbs5-Dj1Z-Jfkd6f9-E5yZI,760
632
632
  portal/views/two_factor/form.py,sha256=lnHNKI-BMlpncTuW3zUzjPaJJNuEra2I_nOam0eOKFY,257
633
633
  portal/views/two_factor/profile.py,sha256=tkl_ludo8arMtd5LKNmohM66vpC_YQiP-0nspTSJiJ4,383
634
- codeforlife_portal-7.4.6.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
635
- codeforlife_portal-7.4.6.dist-info/METADATA,sha256=JtoByc_JQsTGNOSbzkoEbvj0bH7qFybpubjEvcGYB-c,3317
636
- codeforlife_portal-7.4.6.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
637
- codeforlife_portal-7.4.6.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
638
- codeforlife_portal-7.4.6.dist-info/RECORD,,
634
+ codeforlife_portal-7.4.8.dist-info/LICENSE.md,sha256=9AbRlCDqD2D1tPibimysFv3zg3AIc49-eyv9aEsyq9w,115
635
+ codeforlife_portal-7.4.8.dist-info/METADATA,sha256=8LxLcXj1qTb6mYTLNjjb5_bkRFBpSwz0Z2vCVSXPQOs,3317
636
+ codeforlife_portal-7.4.8.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
637
+ codeforlife_portal-7.4.8.dist-info/top_level.txt,sha256=8e5pdsuIoTqEAMqpelHBjGjLbffcBtgOoggmd2q7nMw,41
638
+ codeforlife_portal-7.4.8.dist-info/RECORD,,
portal/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "7.4.6"
1
+ __version__ = "7.4.8"
@@ -220,7 +220,7 @@
220
220
  height: $menu-height;
221
221
 
222
222
  .logo {
223
- height: 100%;
223
+ height: 100px;
224
224
  }
225
225
 
226
226
  .menu__brand {
@@ -252,11 +252,24 @@ class TestTeacherViews(TestCase):
252
252
  assert response.status_code == 302
253
253
 
254
254
  student = Student.objects.get(pk=self.student.pk)
255
+
255
256
  assert student.user.is_verified
256
257
 
257
258
  c.logout()
258
259
  c.login(username=self.email, password=self.password)
259
260
 
261
+ teacher = Teacher.objects.factory("the", "teacher", "theteacher@foo.com", "password")
262
+ level = Level.objects.create()
263
+
264
+ level.owner = student.new_user.userprofile
265
+ level.shared_with.add(teacher.new_user)
266
+ level.save()
267
+
268
+ students_levels = Level.objects.filter(owner=student.new_user.userprofile).all()
269
+
270
+ for level in students_levels.all():
271
+ assert level.shared_with.exists()
272
+
260
273
  release_url = reverse(
261
274
  "teacher_dismiss_students", args=[self.class_access_code]
262
275
  )
@@ -279,6 +292,11 @@ class TestTeacherViews(TestCase):
279
292
  student = Student.objects.get(pk=self.student.pk)
280
293
  assert not student.user.is_verified
281
294
 
295
+ students_levels = Level.objects.filter(owner=student.new_user.userprofile).all()
296
+
297
+ for level in students_levels.all():
298
+ assert not level.shared_with.exists()
299
+
282
300
 
283
301
  class TestLoginViews(TestCase):
284
302
  @classmethod
@@ -39,6 +39,8 @@ from reportlab.lib.pagesizes import A4
39
39
  from reportlab.lib.utils import ImageReader
40
40
  from reportlab.pdfgen import canvas
41
41
 
42
+ from game.models import Level
43
+
42
44
  from portal.forms.teach import (
43
45
  BaseTeacherDismissStudentsFormSet,
44
46
  BaseTeacherMoveStudentsDisambiguationFormSet,
@@ -56,6 +58,7 @@ from portal.forms.teach import (
56
58
  from portal.helpers.ratelimit import clear_ratelimit_cache_for_user
57
59
  from portal.views.registration import handle_reset_password_tracking
58
60
 
61
+
59
62
  STUDENT_PASSWORD_LENGTH = 6
60
63
  REMINDER_CARDS_PDF_ROWS = 8
61
64
  REMINDER_CARDS_PDF_COLUMNS = 1
@@ -616,6 +619,11 @@ def process_dismiss_student_form(request, formset, klass, access_code):
616
619
  new_user__first_name__iexact=data["orig_name"],
617
620
  )
618
621
 
622
+ students_levels = Level.objects.filter(owner=student.new_user.userprofile).all()
623
+ for level in students_levels:
624
+ level.shared_with.set([])
625
+ level.save()
626
+
619
627
  student.class_field = None
620
628
  student.new_user.first_name = data["name"]
621
629
  student.new_user.username = data["email"]