cfl-common 8.9.20__tar.gz → 8.9.21__tar.gz

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.
Files changed (105) hide show
  1. {cfl_common-8.9.20 → cfl_common-8.9.21}/PKG-INFO +6 -7
  2. {cfl_common-8.9.20 → cfl_common-8.9.21}/cfl_common.egg-info/PKG-INFO +6 -7
  3. {cfl_common-8.9.20 → cfl_common-8.9.21}/cfl_common.egg-info/requires.txt +7 -6
  4. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/helpers/data_migration_loader.py +10 -9
  5. {cfl_common-8.9.20 → cfl_common-8.9.21}/MANIFEST.in +0 -0
  6. {cfl_common-8.9.20 → cfl_common-8.9.21}/cfl_common.egg-info/SOURCES.txt +0 -0
  7. {cfl_common-8.9.20 → cfl_common-8.9.21}/cfl_common.egg-info/dependency_links.txt +0 -0
  8. {cfl_common-8.9.20 → cfl_common-8.9.21}/cfl_common.egg-info/top_level.txt +0 -0
  9. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/__init__.py +0 -0
  10. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/app_settings.py +0 -0
  11. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/apps.py +0 -0
  12. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/context_processors.py +0 -0
  13. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/csp_config.py +0 -0
  14. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/fixtures/aimmo_characters.json +0 -0
  15. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/fixtures/aimmo_characters2.json +0 -0
  16. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/fixtures/aimmo_characters3.json +0 -0
  17. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/helpers/__init__.py +0 -0
  18. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/helpers/emails.py +0 -0
  19. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/helpers/generators.py +0 -0
  20. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/helpers/organisation.py +0 -0
  21. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/mail.py +0 -0
  22. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0001_initial.py +0 -0
  23. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0002_emailverification.py +0 -0
  24. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0003_aimmocharacter.py +0 -0
  25. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0004_add_aimmocharacters.py +0 -0
  26. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0005_add_worksheets.py +0 -0
  27. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0006_update_aimmo_character_image_path.py +0 -0
  28. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0007_add_pdf_names_to_first_two_worksheets.py +0 -0
  29. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0008_unlock_worksheet_3.py +0 -0
  30. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0009_add_blocked_time_to_teacher_and_student.py +0 -0
  31. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0010_remove_teacher_title.py +0 -0
  32. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0011_student_login_id.py +0 -0
  33. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0012_usersession.py +0 -0
  34. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0013_class_school.py +0 -0
  35. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0014_login_type.py +0 -0
  36. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0015_dailyactivity.py +0 -0
  37. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0016_joinreleasestudent.py +0 -0
  38. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0017_copy_email_to_username.py +0 -0
  39. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0018_update_aimmo_character_image_path.py +0 -0
  40. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0019_aimmocharacter_alt.py +0 -0
  41. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0020_class_is_active_and_null_access_code.py +0 -0
  42. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0021_school_is_active.py +0 -0
  43. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0022_school_cleanup.py +0 -0
  44. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0023_userprofile_aimmo_badges.py +0 -0
  45. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0024_teacher_invited_by.py +0 -0
  46. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0025_schoolteacherinvitation.py +0 -0
  47. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0026_teacher_remove_join_request.py +0 -0
  48. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0027_class_created_by.py +0 -0
  49. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0028_coding_club_downloads.py +0 -0
  50. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0029_dynamicelement.py +0 -0
  51. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0030_add_maintenance_banner.py +0 -0
  52. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0031_improve_admin_panel.py +0 -0
  53. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0032_dailyactivity_level_control_submits.py +0 -0
  54. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0033_password_reset_tracking_fields.py +0 -0
  55. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0034_dailyactivity_daily_school_student_lockout_reset.py +0 -0
  56. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0035_rename_lockout_fields.py +0 -0
  57. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0036_rename_awaiting_email_verification_userprofile_is_verified.py +0 -0
  58. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0037_migrate_email_verification.py +0 -0
  59. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0038_delete_emailverification.py +0 -0
  60. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0039_copy_email_to_username.py +0 -0
  61. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0040_school_county.py +0 -0
  62. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0041_populate_gb_counties.py +0 -0
  63. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0042_totalactivity.py +0 -0
  64. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0043_add_total_activity.py +0 -0
  65. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0044_update_activity_models.py +0 -0
  66. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0045_otp.py +0 -0
  67. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0046_alter_school_country.py +0 -0
  68. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0047_delete_school_postcode.py +0 -0
  69. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0048_unique_school_names.py +0 -0
  70. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0049_anonymise_orphan_users.py +0 -0
  71. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0050_anonymise_orphan_schools.py +0 -0
  72. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0051_verify_returning_users.py +0 -0
  73. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0052_add_cse_fields.py +0 -0
  74. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0053_clean_class_data.py +0 -0
  75. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0054_delete_aimmo_models.py +0 -0
  76. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0055_alter_schoolteacherinvitation_token.py +0 -0
  77. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0056_set_non_school_teachers_as_non_admins.py +0 -0
  78. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0057_teacher_teacher__is_admin.py +0 -0
  79. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/0058_userprofile_google_refresh_token_and_more.py +0 -0
  80. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/migrations/__init__.py +0 -0
  81. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/models.py +0 -0
  82. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/permissions.py +0 -0
  83. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/static/common/img/RR_logo.svg +0 -0
  84. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/static/common/img/brain.svg +0 -0
  85. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/templates/common/freshdesk_widget.html +0 -0
  86. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/templates/common/onetrust_cookies_consent_notice.html +0 -0
  87. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/__init__.py +0 -0
  88. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_anonymise_orphan_schools.py +0 -0
  89. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_anonymise_orphan_users.py +0 -0
  90. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_blocked_time.py +0 -0
  91. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_remove_teacher_title.py +0 -0
  92. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_unique_school_names.py +0 -0
  93. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_migration_verify_returning_users.py +0 -0
  94. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/test_models.py +0 -0
  95. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/__init__.py +0 -0
  96. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/classes.py +0 -0
  97. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/email.py +0 -0
  98. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/organisation.py +0 -0
  99. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/student.py +0 -0
  100. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/teacher.py +0 -0
  101. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/tests/utils/user.py +0 -0
  102. {cfl_common-8.9.20 → cfl_common-8.9.21}/common/utils.py +0 -0
  103. {cfl_common-8.9.20 → cfl_common-8.9.21}/pyproject.toml +0 -0
  104. {cfl_common-8.9.20 → cfl_common-8.9.21}/setup.cfg +0 -0
  105. {cfl_common-8.9.20 → cfl_common-8.9.21}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfl-common
3
- Version: 8.9.20
3
+ Version: 8.9.21
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Operating System :: OS Independent
6
6
  Requires-Dist: asgiref==3.11.1; python_version >= "3.9"
@@ -9,16 +9,16 @@ Requires-Dist: cffi==2.0.0; platform_python_implementation != "PyPy"
9
9
  Requires-Dist: charset-normalizer==3.4.4; python_version >= "3.7"
10
10
  Requires-Dist: cryptography==44.0.1; python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1"
11
11
  Requires-Dist: diff-match-patch==20241021; python_version >= "3.7"
12
- Requires-Dist: django==5.1.15; python_version >= "3.10"
12
+ Requires-Dist: django==5.2.11; python_version >= "3.10"
13
13
  Requires-Dist: django-countries==7.6.1
14
14
  Requires-Dist: django-csp==3.8
15
15
  Requires-Dist: django-formtools==2.5.1; python_version >= "3.8"
16
16
  Requires-Dist: django-import-export==4.2.0; python_version >= "3.9"
17
17
  Requires-Dist: django-otp==1.7.0; python_version >= "3.8"
18
18
  Requires-Dist: django-phonenumber-field==8.4.0; python_version >= "3.10"
19
- Requires-Dist: django-pipeline==4.0.0; python_version >= "3.9"
20
- Requires-Dist: django-two-factor-auth==1.17.0; python_version >= "3.8"
21
- Requires-Dist: djangorestframework==3.16.0; python_version >= "3.9"
19
+ Requires-Dist: django-pipeline==4.1.0; python_version >= "3.9"
20
+ Requires-Dist: django-two-factor-auth==1.18.1; python_version >= "3.9"
21
+ Requires-Dist: djangorestframework==3.16.1; python_version >= "3.9"
22
22
  Requires-Dist: idna==3.11; python_version >= "3.8"
23
23
  Requires-Dist: libsass==0.23.0; python_version >= "3.8"
24
24
  Requires-Dist: more-itertools==8.7.0; python_version >= "3.5"
@@ -29,9 +29,8 @@ Requires-Dist: pgeocode==0.4.0; python_version >= "3.8"
29
29
  Requires-Dist: psycopg2-binary==2.9.9; python_version >= "3.7"
30
30
  Requires-Dist: pycparser==3.0; implementation_name != "PyPy"
31
31
  Requires-Dist: pyjwt==2.6.0; python_version >= "3.7"
32
- Requires-Dist: pypng==0.20220715.0
33
32
  Requires-Dist: python-dateutil==2.9.0.post0; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
34
- Requires-Dist: qrcode==7.4.2; python_version >= "3.7"
33
+ Requires-Dist: qrcode==8.2; python_version >= "3.9" and python_version < "4.0"
35
34
  Requires-Dist: requests==2.32.5; python_version >= "3.9"
36
35
  Requires-Dist: setuptools==80.10.2; python_version >= "3.9"
37
36
  Requires-Dist: six==1.17.0; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfl-common
3
- Version: 8.9.20
3
+ Version: 8.9.21
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Operating System :: OS Independent
6
6
  Requires-Dist: asgiref==3.11.1; python_version >= "3.9"
@@ -9,16 +9,16 @@ Requires-Dist: cffi==2.0.0; platform_python_implementation != "PyPy"
9
9
  Requires-Dist: charset-normalizer==3.4.4; python_version >= "3.7"
10
10
  Requires-Dist: cryptography==44.0.1; python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1"
11
11
  Requires-Dist: diff-match-patch==20241021; python_version >= "3.7"
12
- Requires-Dist: django==5.1.15; python_version >= "3.10"
12
+ Requires-Dist: django==5.2.11; python_version >= "3.10"
13
13
  Requires-Dist: django-countries==7.6.1
14
14
  Requires-Dist: django-csp==3.8
15
15
  Requires-Dist: django-formtools==2.5.1; python_version >= "3.8"
16
16
  Requires-Dist: django-import-export==4.2.0; python_version >= "3.9"
17
17
  Requires-Dist: django-otp==1.7.0; python_version >= "3.8"
18
18
  Requires-Dist: django-phonenumber-field==8.4.0; python_version >= "3.10"
19
- Requires-Dist: django-pipeline==4.0.0; python_version >= "3.9"
20
- Requires-Dist: django-two-factor-auth==1.17.0; python_version >= "3.8"
21
- Requires-Dist: djangorestframework==3.16.0; python_version >= "3.9"
19
+ Requires-Dist: django-pipeline==4.1.0; python_version >= "3.9"
20
+ Requires-Dist: django-two-factor-auth==1.18.1; python_version >= "3.9"
21
+ Requires-Dist: djangorestframework==3.16.1; python_version >= "3.9"
22
22
  Requires-Dist: idna==3.11; python_version >= "3.8"
23
23
  Requires-Dist: libsass==0.23.0; python_version >= "3.8"
24
24
  Requires-Dist: more-itertools==8.7.0; python_version >= "3.5"
@@ -29,9 +29,8 @@ Requires-Dist: pgeocode==0.4.0; python_version >= "3.8"
29
29
  Requires-Dist: psycopg2-binary==2.9.9; python_version >= "3.7"
30
30
  Requires-Dist: pycparser==3.0; implementation_name != "PyPy"
31
31
  Requires-Dist: pyjwt==2.6.0; python_version >= "3.7"
32
- Requires-Dist: pypng==0.20220715.0
33
32
  Requires-Dist: python-dateutil==2.9.0.post0; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
34
- Requires-Dist: qrcode==7.4.2; python_version >= "3.7"
33
+ Requires-Dist: qrcode==8.2; python_version >= "3.9" and python_version < "4.0"
35
34
  Requires-Dist: requests==2.32.5; python_version >= "3.9"
36
35
  Requires-Dist: setuptools==80.10.2; python_version >= "3.9"
37
36
  Requires-Dist: six==1.17.0; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
@@ -1,6 +1,5 @@
1
1
  django-countries==7.6.1
2
2
  django-csp==3.8
3
- pypng==0.20220715.0
4
3
 
5
4
  [:implementation_name != "PyPy"]
6
5
  pycparser==3.0
@@ -13,7 +12,7 @@ python-dateutil==2.9.0.post0
13
12
  six==1.17.0
14
13
 
15
14
  [:python_version >= "3.10"]
16
- django==5.1.15
15
+ django==5.2.11
17
16
  django-phonenumber-field==8.4.0
18
17
 
19
18
  [:python_version >= "3.11"]
@@ -29,7 +28,6 @@ charset-normalizer==3.4.4
29
28
  diff-match-patch==20241021
30
29
  psycopg2-binary==2.9.9
31
30
  pyjwt==2.6.0
32
- qrcode==7.4.2
33
31
 
34
32
  [:python_version >= "3.7" and python_full_version not in "3.9.0, 3.9.1"]
35
33
  cryptography==44.0.1
@@ -37,7 +35,6 @@ cryptography==44.0.1
37
35
  [:python_version >= "3.8"]
38
36
  django-formtools==2.5.1
39
37
  django-otp==1.7.0
40
- django-two-factor-auth==1.17.0
41
38
  idna==3.11
42
39
  libsass==0.23.0
43
40
  packaging==26.0
@@ -47,11 +44,15 @@ sqlparse==0.5.5
47
44
  [:python_version >= "3.9"]
48
45
  asgiref==3.11.1
49
46
  django-import-export==4.2.0
50
- django-pipeline==4.0.0
51
- djangorestframework==3.16.0
47
+ django-pipeline==4.1.0
48
+ django-two-factor-auth==1.18.1
49
+ djangorestframework==3.16.1
52
50
  requests==2.32.5
53
51
  setuptools==80.10.2
54
52
  tablib==3.7.0
55
53
  typing-extensions==4.15.0
56
54
  urllib3==2.6.3
57
55
  wheel==0.46.3
56
+
57
+ [:python_version >= "3.9" and python_version < "4.0"]
58
+ qrcode==8.2
@@ -2,7 +2,8 @@ from pathlib import Path
2
2
  from typing import Callable
3
3
 
4
4
  from django.core.management import call_command
5
- from django.core.serializers import base, python
5
+ from django.core.serializers import base
6
+ from django.core.serializers.python import Deserializer
6
7
 
7
8
 
8
9
  def load_data_from_file(file_name) -> Callable:
@@ -16,27 +17,27 @@ def load_data_from_file(file_name) -> Callable:
16
17
  absolute_file_path = Path(__file__).resolve().parent.parent / "fixtures" / file_name
17
18
 
18
19
  def _load_fixture(apps, schema_editor):
19
- # Save the default _get_model() function
20
- default_get_model = python._get_model
20
+ # Save the default _get_model_from_node() function
21
+ default_get_model_from_node = Deserializer._get_model_from_node
21
22
 
22
23
  # Define new _get_model() function here, which utilizes the apps argument to
23
24
  # get the historical version of a model. This piece of code is directly taken
24
- # from django.core.serializers.python._get_model, unchanged. However, here it
25
+ # from django.core.serializers.python._get_model_from_node, unchanged. However, here it
25
26
  # has a different context, specifically, the apps variable.
26
- def _get_model(model_identifier):
27
+ def _get_model_from_node(model_identifier):
27
28
  try:
28
29
  return apps.get_model(model_identifier)
29
30
  except (LookupError, TypeError):
30
31
  raise base.DeserializationError("Invalid model identifier: '%s'" % model_identifier)
31
32
 
32
- # Replace the _get_model() function on the module, so loaddata can utilize it.
33
- python._get_model = _get_model
33
+ # Replace the _get_model_from_node() function on the module, so loaddata can utilize it.
34
+ Deserializer._get_model_from_node = staticmethod(_get_model_from_node)
34
35
 
35
36
  try:
36
37
  # Call loaddata command
37
38
  call_command("loaddata", absolute_file_path, app_label="common")
38
39
  finally:
39
- # Restore default _get_model() function
40
- python._get_model = default_get_model
40
+ # Restore default _get_model_from_node() function
41
+ Deserializer._get_model_from_node = default_get_model_from_node
41
42
 
42
43
  return _load_fixture
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes