openedx-learning 0.30.1__py2.py3-none-any.whl → 0.31.0__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.
Files changed (131) hide show
  1. openedx_learning/__init__.py +1 -1
  2. openedx_learning/api/authoring.py +2 -9
  3. openedx_learning/api/authoring_models.py +7 -7
  4. openedx_learning/api/django.py +24 -0
  5. openedx_learning/apps/openedx_content/admin.py +13 -0
  6. openedx_learning/apps/openedx_content/api.py +16 -0
  7. openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/api.py +2 -2
  8. openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/serializers.py +1 -4
  9. openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/toml.py +4 -4
  10. openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/zipper.py +28 -14
  11. openedx_learning/apps/{authoring → openedx_content/applets}/collections/api.py +1 -1
  12. openedx_learning/apps/{authoring → openedx_content/applets}/collections/models.py +4 -1
  13. openedx_learning/apps/{authoring → openedx_content/applets}/components/admin.py +1 -1
  14. openedx_learning/apps/{authoring → openedx_content/applets}/components/api.py +1 -1
  15. openedx_learning/apps/{authoring → openedx_content/applets}/components/models.py +4 -2
  16. openedx_learning/apps/{authoring → openedx_content/applets}/contents/api.py +3 -2
  17. openedx_learning/apps/{authoring → openedx_content/applets}/contents/models.py +8 -2
  18. openedx_learning/apps/{authoring → openedx_content/applets}/publishing/api.py +1 -1
  19. openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/entity_list.py +1 -0
  20. openedx_learning/apps/{authoring → openedx_content/applets}/sections/api.py +1 -2
  21. openedx_learning/apps/{authoring → openedx_content/applets}/subsections/api.py +1 -2
  22. openedx_learning/apps/{authoring → openedx_content/applets}/units/api.py +1 -2
  23. openedx_learning/apps/openedx_content/apps.py +52 -0
  24. openedx_learning/apps/{authoring → openedx_content/backcompat}/backup_restore/apps.py +1 -1
  25. openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/apps.py +1 -1
  26. openedx_learning/apps/openedx_content/backcompat/collections/migrations/0006_remove_all_field_state_for_move_to_applet.py +82 -0
  27. openedx_learning/apps/openedx_content/backcompat/collections/models.py +9 -0
  28. openedx_learning/apps/openedx_content/backcompat/components/apps.py +15 -0
  29. openedx_learning/apps/openedx_content/backcompat/components/migrations/0005_remove_all_field_state_for_move_to_applet.py +72 -0
  30. openedx_learning/apps/openedx_content/backcompat/components/models.py +11 -0
  31. openedx_learning/apps/{authoring → openedx_content/backcompat}/contents/apps.py +1 -1
  32. openedx_learning/apps/openedx_content/backcompat/contents/migrations/0002_remove_all_field_state_for_move_to_applet.py +26 -0
  33. openedx_learning/apps/openedx_content/backcompat/publishing/apps.py +15 -0
  34. openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0010_backfill_dependencies.py +432 -0
  35. openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0011_remove_all_field_state_for_move_to_applet.py +288 -0
  36. openedx_learning/apps/openedx_content/backcompat/publishing/models.py +27 -0
  37. openedx_learning/apps/openedx_content/backcompat/sections/__init__.py +0 -0
  38. openedx_learning/apps/openedx_content/backcompat/sections/apps.py +16 -0
  39. openedx_learning/apps/openedx_content/backcompat/sections/migrations/0002_remove_all_field_state_for_move_to_applet.py +29 -0
  40. openedx_learning/apps/openedx_content/backcompat/sections/migrations/__init__.py +0 -0
  41. openedx_learning/apps/openedx_content/backcompat/subsections/__init__.py +0 -0
  42. openedx_learning/apps/openedx_content/backcompat/subsections/apps.py +16 -0
  43. openedx_learning/apps/openedx_content/backcompat/subsections/migrations/0002_remove_all_field_state_for_move_to_applet.py +29 -0
  44. openedx_learning/apps/openedx_content/backcompat/subsections/migrations/__init__.py +0 -0
  45. openedx_learning/apps/openedx_content/backcompat/units/__init__.py +0 -0
  46. openedx_learning/apps/openedx_content/backcompat/units/apps.py +16 -0
  47. openedx_learning/apps/openedx_content/backcompat/units/migrations/0002_remove_all_field_state_for_move_to_applet.py +29 -0
  48. openedx_learning/apps/openedx_content/backcompat/units/migrations/__init__.py +0 -0
  49. openedx_learning/apps/openedx_content/management/__init__.py +0 -0
  50. openedx_learning/apps/openedx_content/management/commands/__init__.py +0 -0
  51. openedx_learning/apps/{authoring/components → openedx_content}/management/commands/add_assets_to_component.py +1 -2
  52. openedx_learning/apps/{authoring/backup_restore → openedx_content}/management/commands/lp_dump.py +2 -2
  53. openedx_learning/apps/{authoring/backup_restore → openedx_content}/management/commands/lp_load.py +1 -1
  54. openedx_learning/apps/openedx_content/migrations/0001_initial.py +654 -0
  55. openedx_learning/apps/openedx_content/migrations/0002_rename_tables_to_openedx_content.py +138 -0
  56. openedx_learning/apps/openedx_content/migrations/__init__.py +0 -0
  57. openedx_learning/apps/openedx_content/models.py +17 -0
  58. openedx_learning/contrib/media_server/views.py +1 -1
  59. {openedx_learning-0.30.1.dist-info → openedx_learning-0.31.0.dist-info}/METADATA +6 -6
  60. openedx_learning-0.31.0.dist-info/RECORD +194 -0
  61. {openedx_learning-0.30.1.dist-info → openedx_learning-0.31.0.dist-info}/WHEEL +1 -1
  62. openedx_learning/apps/authoring/components/apps.py +0 -24
  63. openedx_learning/apps/authoring/publishing/apps.py +0 -25
  64. openedx_learning/apps/authoring/publishing/migrations/0010_backfill_dependencies.py +0 -149
  65. openedx_learning/apps/authoring/sections/apps.py +0 -25
  66. openedx_learning/apps/authoring/subsections/apps.py +0 -25
  67. openedx_learning/apps/authoring/units/apps.py +0 -25
  68. openedx_learning-0.30.1.dist-info/RECORD +0 -168
  69. /openedx_learning/apps/{authoring → openedx_content}/__init__.py +0 -0
  70. /openedx_learning/apps/{authoring/backup_restore → openedx_content/applets}/__init__.py +0 -0
  71. /openedx_learning/apps/{authoring/backup_restore/management → openedx_content/applets/backup_restore}/__init__.py +0 -0
  72. /openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/admin.py +0 -0
  73. /openedx_learning/apps/{authoring → openedx_content/applets}/backup_restore/models.py +0 -0
  74. /openedx_learning/apps/{authoring/backup_restore/management/commands → openedx_content/applets/collections}/__init__.py +0 -0
  75. /openedx_learning/apps/{authoring → openedx_content/applets}/collections/admin.py +0 -0
  76. /openedx_learning/apps/{authoring/backup_restore/migrations → openedx_content/applets/components}/__init__.py +0 -0
  77. /openedx_learning/apps/{authoring/collections → openedx_content/applets/contents}/__init__.py +0 -0
  78. /openedx_learning/apps/{authoring → openedx_content/applets}/contents/admin.py +0 -0
  79. /openedx_learning/apps/{authoring/collections/migrations → openedx_content/applets/publishing}/__init__.py +0 -0
  80. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/admin.py +0 -0
  81. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/contextmanagers.py +0 -0
  82. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/__init__.py +0 -0
  83. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/container.py +0 -0
  84. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/draft_log.py +0 -0
  85. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/learning_package.py +0 -0
  86. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/publish_log.py +0 -0
  87. /openedx_learning/apps/{authoring → openedx_content/applets}/publishing/models/publishable_entity.py +0 -0
  88. /openedx_learning/apps/{authoring/components → openedx_content/applets/sections}/__init__.py +0 -0
  89. /openedx_learning/apps/{authoring → openedx_content/applets}/sections/admin.py +0 -0
  90. /openedx_learning/apps/{authoring → openedx_content/applets}/sections/models.py +0 -0
  91. /openedx_learning/apps/{authoring/components/management → openedx_content/applets/subsections}/__init__.py +0 -0
  92. /openedx_learning/apps/{authoring → openedx_content/applets}/subsections/admin.py +0 -0
  93. /openedx_learning/apps/{authoring → openedx_content/applets}/subsections/models.py +0 -0
  94. /openedx_learning/apps/{authoring/components/management/commands → openedx_content/applets/units}/__init__.py +0 -0
  95. /openedx_learning/apps/{authoring → openedx_content/applets}/units/admin.py +0 -0
  96. /openedx_learning/apps/{authoring → openedx_content/applets}/units/models.py +0 -0
  97. /openedx_learning/apps/{authoring/components/migrations → openedx_content/backcompat}/__init__.py +0 -0
  98. /openedx_learning/apps/{authoring/contents → openedx_content/backcompat/backup_restore}/__init__.py +0 -0
  99. /openedx_learning/apps/{authoring/contents → openedx_content/backcompat/backup_restore}/migrations/__init__.py +0 -0
  100. /openedx_learning/apps/{authoring/publishing → openedx_content/backcompat/collections}/__init__.py +0 -0
  101. /openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/migrations/0001_initial.py +0 -0
  102. /openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/migrations/0002_remove_collection_name_collection_created_by_and_more.py +0 -0
  103. /openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/migrations/0003_collection_entities.py +0 -0
  104. /openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/migrations/0004_collection_key.py +0 -0
  105. /openedx_learning/apps/{authoring → openedx_content/backcompat}/collections/migrations/0005_alter_collection_options_alter_collection_enabled.py +0 -0
  106. /openedx_learning/apps/{authoring/publishing → openedx_content/backcompat/collections}/migrations/__init__.py +0 -0
  107. /openedx_learning/apps/{authoring/sections → openedx_content/backcompat/components}/__init__.py +0 -0
  108. /openedx_learning/apps/{authoring → openedx_content/backcompat}/components/migrations/0001_initial.py +0 -0
  109. /openedx_learning/apps/{authoring → openedx_content/backcompat}/components/migrations/0002_alter_componentversioncontent_key.py +0 -0
  110. /openedx_learning/apps/{authoring → openedx_content/backcompat}/components/migrations/0003_remove_componentversioncontent_learner_downloadable.py +0 -0
  111. /openedx_learning/apps/{authoring → openedx_content/backcompat}/components/migrations/0004_remove_componentversioncontent_uuid.py +0 -0
  112. /openedx_learning/apps/{authoring/sections → openedx_content/backcompat/components}/migrations/__init__.py +0 -0
  113. /openedx_learning/apps/{authoring/subsections → openedx_content/backcompat/contents}/__init__.py +0 -0
  114. /openedx_learning/apps/{authoring → openedx_content/backcompat}/contents/migrations/0001_initial.py +0 -0
  115. /openedx_learning/apps/{authoring/subsections → openedx_content/backcompat/contents}/migrations/__init__.py +0 -0
  116. /openedx_learning/apps/{authoring/units → openedx_content/backcompat/publishing}/__init__.py +0 -0
  117. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0001_initial.py +0 -0
  118. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0002_alter_learningpackage_key_and_more.py +0 -0
  119. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0003_containers.py +0 -0
  120. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0004_publishableentity_can_stand_alone.py +0 -0
  121. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0005_alter_entitylistrow_options.py +0 -0
  122. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0006_draftchangelog.py +0 -0
  123. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0007_bootstrap_draftchangelog.py +0 -0
  124. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0008_alter_draftchangelogrecord_options_and_more.py +0 -0
  125. /openedx_learning/apps/{authoring → openedx_content/backcompat}/publishing/migrations/0009_dependencies_and_hashing.py +0 -0
  126. /openedx_learning/apps/{authoring/units → openedx_content/backcompat/publishing}/migrations/__init__.py +0 -0
  127. /openedx_learning/apps/{authoring → openedx_content/backcompat}/sections/migrations/0001_initial.py +0 -0
  128. /openedx_learning/apps/{authoring → openedx_content/backcompat}/subsections/migrations/0001_initial.py +0 -0
  129. /openedx_learning/apps/{authoring → openedx_content/backcompat}/units/migrations/0001_initial.py +0 -0
  130. {openedx_learning-0.30.1.dist-info → openedx_learning-0.31.0.dist-info}/licenses/LICENSE.txt +0 -0
  131. {openedx_learning-0.30.1.dist-info → openedx_learning-0.31.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,138 @@
1
+ # Generated by Django 5.2.9 on 2025-12-29 07:07
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('openedx_content', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.RenameIndex(
14
+ model_name='collection',
15
+ new_name='openedx_content_coll_lp_title',
16
+ old_name='oel_collect_learnin_dfaf89_idx',
17
+ ),
18
+ migrations.AlterModelTable(
19
+ name='collection',
20
+ table=None,
21
+ ),
22
+ migrations.AlterModelTable(
23
+ name='collectionpublishableentity',
24
+ table=None,
25
+ ),
26
+ migrations.AlterModelTable(
27
+ name='content',
28
+ table=None,
29
+ ),
30
+ migrations.AlterModelTable(
31
+ name='component',
32
+ table=None,
33
+ ),
34
+ migrations.AlterModelTable(
35
+ name='componenttype',
36
+ table=None,
37
+ ),
38
+ migrations.AlterModelTable(
39
+ name='componentversion',
40
+ table=None,
41
+ ),
42
+ migrations.AlterModelTable(
43
+ name='componentversioncontent',
44
+ table=None,
45
+ ),
46
+ migrations.AlterModelTable(
47
+ name='container',
48
+ table=None,
49
+ ),
50
+ migrations.AlterModelTable(
51
+ name='containerversion',
52
+ table=None,
53
+ ),
54
+ migrations.AlterModelTable(
55
+ name='draft',
56
+ table=None,
57
+ ),
58
+ migrations.AlterModelTable(
59
+ name='draftchangelog',
60
+ table=None,
61
+ ),
62
+ migrations.AlterModelTable(
63
+ name='draftchangelogrecord',
64
+ table=None,
65
+ ),
66
+ migrations.AlterModelTable(
67
+ name='draftsideeffect',
68
+ table=None,
69
+ ),
70
+ migrations.AlterModelTable(
71
+ name='entitylist',
72
+ table=None,
73
+ ),
74
+ migrations.AlterModelTable(
75
+ name='entitylistrow',
76
+ table=None,
77
+ ),
78
+ migrations.AlterModelTable(
79
+ name='learningpackage',
80
+ table=None,
81
+ ),
82
+ migrations.AlterModelTable(
83
+ name='mediatype',
84
+ table=None,
85
+ ),
86
+ migrations.AlterModelTable(
87
+ name='publishableentity',
88
+ table=None,
89
+ ),
90
+ migrations.AlterModelTable(
91
+ name='publishableentityversion',
92
+ table=None,
93
+ ),
94
+ migrations.AlterModelTable(
95
+ name='publishableentityversiondependency',
96
+ table=None,
97
+ ),
98
+ migrations.AlterModelTable(
99
+ name='published',
100
+ table=None,
101
+ ),
102
+ migrations.AlterModelTable(
103
+ name='publishlog',
104
+ table=None,
105
+ ),
106
+ migrations.AlterModelTable(
107
+ name='publishlogrecord',
108
+ table=None,
109
+ ),
110
+ migrations.AlterModelTable(
111
+ name='publishsideeffect',
112
+ table=None,
113
+ ),
114
+ migrations.AlterModelTable(
115
+ name='section',
116
+ table=None,
117
+ ),
118
+ migrations.AlterModelTable(
119
+ name='sectionversion',
120
+ table=None,
121
+ ),
122
+ migrations.AlterModelTable(
123
+ name='subsection',
124
+ table=None,
125
+ ),
126
+ migrations.AlterModelTable(
127
+ name='subsectionversion',
128
+ table=None,
129
+ ),
130
+ migrations.AlterModelTable(
131
+ name='unit',
132
+ table=None,
133
+ ),
134
+ migrations.AlterModelTable(
135
+ name='unitversion',
136
+ table=None,
137
+ ),
138
+ ]
@@ -0,0 +1,17 @@
1
+ """
2
+ This module aggregates all applet model modules.
3
+
4
+ I experimented with creating a utility to auto-detect applets and magically
5
+ import their modules, but that broke code introspection.
6
+ """
7
+
8
+ # pylint: disable=wildcard-import
9
+
10
+ from .applets.backup_restore.models import *
11
+ from .applets.collections.models import *
12
+ from .applets.components.models import *
13
+ from .applets.contents.models import *
14
+ from .applets.publishing.models import *
15
+ from .applets.sections.models import *
16
+ from .applets.subsections.models import *
17
+ from .applets.units.models import *
@@ -8,7 +8,7 @@ from pathlib import Path
8
8
  from django.core.exceptions import ObjectDoesNotExist
9
9
  from django.http import FileResponse, Http404
10
10
 
11
- from openedx_learning.apps.authoring.components.api import look_up_component_version_content
11
+ from openedx_learning.apps.openedx_content.applets.components.api import look_up_component_version_content
12
12
 
13
13
 
14
14
  def component_asset(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openedx-learning
3
- Version: 0.30.1
3
+ Version: 0.31.0
4
4
  Summary: Open edX Learning Core and Tagging.
5
5
  Home-page: https://github.com/openedx/openedx-learning
6
6
  Author: David Ormsbee
@@ -19,13 +19,13 @@ Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Requires-Python: >=3.11
21
21
  License-File: LICENSE.txt
22
- Requires-Dist: tomlkit
23
- Requires-Dist: djangorestframework<4.0
24
- Requires-Dist: celery
25
- Requires-Dist: Django
26
22
  Requires-Dist: attrs
27
- Requires-Dist: edx-drf-extensions
23
+ Requires-Dist: Django
24
+ Requires-Dist: djangorestframework<4.0
28
25
  Requires-Dist: rules<4.0
26
+ Requires-Dist: tomlkit
27
+ Requires-Dist: edx-drf-extensions
28
+ Requires-Dist: celery
29
29
  Dynamic: author
30
30
  Dynamic: author-email
31
31
  Dynamic: classifier
@@ -0,0 +1,194 @@
1
+ openedx_learning/__init__.py,sha256=dXS19hsCrJdj1oLDxTvFDN3eAcwJ6O2SPrFRixDXMiY,69
2
+ openedx_learning/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ openedx_learning/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ openedx_learning/api/authoring.py,sha256=YaXOkW4WXwS8ACFyZP0QoLN6sDVcNzYvqiszd2fuv7E,793
5
+ openedx_learning/api/authoring_models.py,sha256=wMW1kqQsmRIGkjldodtIcvzCznOGrqJn7OsXzIoBonQ,876
6
+ openedx_learning/api/django.py,sha256=IMUDuBMFYhtssWnSpxAUjGHPu12ODcT9k1mbSnXi1nc,1003
7
+ openedx_learning/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ openedx_learning/apps/openedx_content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ openedx_learning/apps/openedx_content/admin.py,sha256=MBD5y7rRB2sC3DCLgCKewcrZC3GY9QyDSi3gNC-uQ-U,416
10
+ openedx_learning/apps/openedx_content/api.py,sha256=Zvaucqiwopb2WlCI_BEWwh0nweu-5_SHoNfF1fyHdtM,455
11
+ openedx_learning/apps/openedx_content/apps.py,sha256=eHZjCQrvMaVmzJ8vP_7zP8w-GpKu24KZT5FrR6tQanA,1626
12
+ openedx_learning/apps/openedx_content/models.py,sha256=lA5dKiWt6HW-eL8W4-kJH6q5w9ucXVGHM05wOESfrN4,552
13
+ openedx_learning/apps/openedx_content/applets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ openedx_learning/apps/openedx_content/applets/backup_restore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ openedx_learning/apps/openedx_content/applets/backup_restore/admin.py,sha256=OnEixkOuysPRr-F6C_CMwPkiXawkqgSEF46n3yiUK0o,59
16
+ openedx_learning/apps/openedx_content/applets/backup_restore/api.py,sha256=gluQGhkcozigBqPQgn_0ohL_kUA7q08V-UciZX4rVss,1216
17
+ openedx_learning/apps/openedx_content/applets/backup_restore/models.py,sha256=jlr0ppxW0IOW3HPHoJNChHvDrYVnKMb5_3uC2itxqQk,45
18
+ openedx_learning/apps/openedx_content/applets/backup_restore/serializers.py,sha256=yCsC2qQjzM5o0KHDRfrX7cOPUqHKlxfSvlaIZjimE4I,6241
19
+ openedx_learning/apps/openedx_content/applets/backup_restore/toml.py,sha256=cg_xs9R_k1MWT31pIirXL3mLbqYQnuVIGL4-_qUVzjY,8166
20
+ openedx_learning/apps/openedx_content/applets/backup_restore/zipper.py,sha256=q0VWsIOaBMkJoksR89Oes20Rjveu7w0ukwQ7IfCfOWs,47931
21
+ openedx_learning/apps/openedx_content/applets/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ openedx_learning/apps/openedx_content/applets/collections/admin.py,sha256=f0hySjDMfIphVDEGkCSMIUHoEiqHRA7EE2NiO7lvL4g,1156
23
+ openedx_learning/apps/openedx_content/applets/collections/api.py,sha256=WN_Me46kDoCOiKjZ-Tq1Z01IvDvXVJT-KOfysn9cDfc,7753
24
+ openedx_learning/apps/openedx_content/applets/collections/models.py,sha256=qsmvNPAdTLUrocgV3mk6q4WiyM9t0x8LwLBb0Kq4pLM,8536
25
+ openedx_learning/apps/openedx_content/applets/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ openedx_learning/apps/openedx_content/applets/components/admin.py,sha256=KtdH5gRAGnuGB0VkLVhkcRmJKjDsLC1NVhCgE1_vgsU,4583
27
+ openedx_learning/apps/openedx_content/applets/components/api.py,sha256=ZyuO2zsHv2EDxJn7LUu_mBMMMJeLH3fb6raNLW-S7g0,25392
28
+ openedx_learning/apps/openedx_content/applets/components/models.py,sha256=H1UmBMprTqdVAC2MYXg1zY-Efc-F5GGIhTyM2pWVML0,10904
29
+ openedx_learning/apps/openedx_content/applets/contents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ openedx_learning/apps/openedx_content/applets/contents/admin.py,sha256=9Njd_lje1emcd168KBWUTGf0mVJ6K-dMYMcqHNjRU4k,1761
31
+ openedx_learning/apps/openedx_content/applets/contents/api.py,sha256=mQeeXT9ouy9WUNDZhwcCp5gmFzF0DiR0JCDW1_Cld1E,8838
32
+ openedx_learning/apps/openedx_content/applets/contents/models.py,sha256=QOQN5e_94ZHPLUdo0OtTJKwG0eZTvhdH2gc9ihb4WvE,17654
33
+ openedx_learning/apps/openedx_content/applets/publishing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ openedx_learning/apps/openedx_content/applets/publishing/admin.py,sha256=NDH4Mm2pYIJ6xG496l8DIDB1YW1cn68H2INUmiV9SAY,19398
35
+ openedx_learning/apps/openedx_content/applets/publishing/api.py,sha256=uNPk_7jWqo8KiF91BX-rkPXiKfypqLWjZxJ4r1PT1vw,81478
36
+ openedx_learning/apps/openedx_content/applets/publishing/contextmanagers.py,sha256=AH5zhr0Tz_gUG9--dfr_oZAu8DMy94n6mnOJuPbWkeU,6723
37
+ openedx_learning/apps/openedx_content/applets/publishing/models/__init__.py,sha256=0IghI3i9T3d0qu5zXaqnP9InlxtK9YsX6Q3znrL8Oxk,1167
38
+ openedx_learning/apps/openedx_content/applets/publishing/models/container.py,sha256=GCUD3WTlgvgZSQOKcoOsfhNAfc5pz3Wbs9ClE9mhtB0,2594
39
+ openedx_learning/apps/openedx_content/applets/publishing/models/draft_log.py,sha256=n-EpEMO582bdEM9qtSSLiz6-mgB14C40tAWDhwNzoI0,17512
40
+ openedx_learning/apps/openedx_content/applets/publishing/models/entity_list.py,sha256=9oCdo0e7z_VjCbuF9lxyfOZdIQHDrJhN7wmH57AhugM,3674
41
+ openedx_learning/apps/openedx_content/applets/publishing/models/learning_package.py,sha256=1fuNLHD6k0qGuL0jXYGf4-TA5WczgxJrXUdAIM_JNBI,2688
42
+ openedx_learning/apps/openedx_content/applets/publishing/models/publish_log.py,sha256=qgtuu5DB3yz4BbExIoeJb-GuogzHOMmSDvzsCoo6_NE,9155
43
+ openedx_learning/apps/openedx_content/applets/publishing/models/publishable_entity.py,sha256=2mTy-BOchoq9sTzQOaqAogbKuRBtLlQQLjRWk9tAl9k,27683
44
+ openedx_learning/apps/openedx_content/applets/sections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ openedx_learning/apps/openedx_content/applets/sections/admin.py,sha256=OQOTtXYM-Zj8BBb1wNBkOxgkF2Pv3JdUrZ45VOEmThM,1757
46
+ openedx_learning/apps/openedx_content/applets/sections/api.py,sha256=vddqJouuIXKuJNy6TX4SZnMv1glBeTXY4knGkJH4N5A,11374
47
+ openedx_learning/apps/openedx_content/applets/sections/models.py,sha256=2GK-dDMJwNRw_9gNFho8iKcDV-iYz_zBzqGMDmQ_jbc,1450
48
+ openedx_learning/apps/openedx_content/applets/subsections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ openedx_learning/apps/openedx_content/applets/subsections/admin.py,sha256=vPfOeTzh10aRhtZjXAzYsbwfw4Hc5yuySbpjAvtDH98,1795
50
+ openedx_learning/apps/openedx_content/applets/subsections/api.py,sha256=rAVlpCoEa81Bm6I1HHS8Z8JowSk9JgbdBWk04DXkP5I,11278
51
+ openedx_learning/apps/openedx_content/applets/subsections/models.py,sha256=1uhdpS9Eg6keSqkzQaE8-XSVLAQlmi0llIIU2V7Nl44,1492
52
+ openedx_learning/apps/openedx_content/applets/units/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ openedx_learning/apps/openedx_content/applets/units/admin.py,sha256=chp-bTfufBiQ3uycVF1DBEFSPvwXaROJnyyY8AaH_yw,1717
54
+ openedx_learning/apps/openedx_content/applets/units/api.py,sha256=7dmVaZgp6f4luIBVoLMni2qwNqZJZfVzcn6muPBAMwo,10833
55
+ openedx_learning/apps/openedx_content/applets/units/models.py,sha256=eTOwFWC9coQLf0ovx08Mj7zi8mPAWCw9QOznybajRk0,1418
56
+ openedx_learning/apps/openedx_content/backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ openedx_learning/apps/openedx_content/backcompat/backup_restore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ openedx_learning/apps/openedx_content/backcompat/backup_restore/apps.py,sha256=74ZLcddLlMsSz00CF9kcdmhCNUjV1FgDZWzPmXImOWk,357
59
+ openedx_learning/apps/openedx_content/backcompat/backup_restore/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
+ openedx_learning/apps/openedx_content/backcompat/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ openedx_learning/apps/openedx_content/backcompat/collections/apps.py,sha256=UbwWZP_oAl5dNHHGk_gJodLglIVOOuB5WocW4l1DZzQ,433
62
+ openedx_learning/apps/openedx_content/backcompat/collections/models.py,sha256=Q6VztPfKRzO0lMTgVb7RSDAeWInPi7oq1apgB_srS0w,256
63
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0001_initial.py,sha256=xcJoqMLROW9FTILYrz6UsyotVu9wBN5tRBwRoAWG6dg,1496
64
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0002_remove_collection_name_collection_created_by_and_more.py,sha256=NRl-_-EkE-w4JLeJsZf6lHxYNV3TIAJVIWbv_-xytGo,2162
65
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0003_collection_entities.py,sha256=-YddfCFS0HW3JsEcpatjakOyeGVklOmba9uRQ-0zIxQ,1805
66
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0004_collection_key.py,sha256=G1STMrsCjU8Ykp0Zm_nIf5YqZCBy1TRTVX7q7zrly8c,2021
67
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0005_alter_collection_options_alter_collection_enabled.py,sha256=HdU_3zxN32nzzvOFpiVpQXleHleJhnq2d8k7jAxhUTM,504
68
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/0006_remove_all_field_state_for_move_to_applet.py,sha256=M2OJiALW-qcVNMqINUhuaB_WKN-lhsO9fVRRXMwN30E,2788
69
+ openedx_learning/apps/openedx_content/backcompat/collections/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
+ openedx_learning/apps/openedx_content/backcompat/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ openedx_learning/apps/openedx_content/backcompat/components/apps.py,sha256=JOycQTUfbkJ7Ak6xbyDlSPkZgCACkUrhe4Q2HtqGOlU,427
72
+ openedx_learning/apps/openedx_content/backcompat/components/models.py,sha256=-C3oewpIVwsPDgI6TdST3UejufpJmWUsLT_mw7HxDC8,351
73
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/0001_initial.py,sha256=446LkJSFeK8J_-l-bxakZ_BVx_CiJIllGcBYqWcEenA,4664
74
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/0002_alter_componentversioncontent_key.py,sha256=98724dtucRjJCRyLt5p45qXYb2d6-ouVGp7PB6zTG6E,539
75
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/0003_remove_componentversioncontent_learner_downloadable.py,sha256=hDAkKdBvKULepML9pVMqkZg31nAyCeszQHJsFJ4qGws,382
76
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/0004_remove_componentversioncontent_uuid.py,sha256=hmCUt9VkiisGPckXjVY_qDNNkyj3r6KMK-MpasgOf6w,384
77
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/0005_remove_all_field_state_for_move_to_applet.py,sha256=kefGyYDNv0eVDdL25gmE5lFl6cYIumX_PNQ8fwGm2B0,2434
78
+ openedx_learning/apps/openedx_content/backcompat/components/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ openedx_learning/apps/openedx_content/backcompat/contents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ openedx_learning/apps/openedx_content/backcompat/contents/apps.py,sha256=xm39VnzDXpWoy1EVFX9W9kWJwRcIMKa3C4DX6PUsRh4,415
81
+ openedx_learning/apps/openedx_content/backcompat/contents/migrations/0001_initial.py,sha256=FtOTmIGX2KHpjw-PHbfRjxkFEomI5CEDhNKCZ7IpFeE,3060
82
+ openedx_learning/apps/openedx_content/backcompat/contents/migrations/0002_remove_all_field_state_for_move_to_applet.py,sha256=9Ffltlie4YGlr-zax4C-umsmt2SQSDCTXX-hWrNbwo4,693
83
+ openedx_learning/apps/openedx_content/backcompat/contents/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ openedx_learning/apps/openedx_content/backcompat/publishing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ openedx_learning/apps/openedx_content/backcompat/publishing/apps.py,sha256=yz6Lxoh-RP8M6CtldTTmHveqB6qS-gWfE0Oc1aURssU,418
86
+ openedx_learning/apps/openedx_content/backcompat/publishing/models.py,sha256=A2j1ybYhOqQFf39_eGbzpnFzl-SXNdPgg0koTLhkUWc,567
87
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0001_initial.py,sha256=wvekNV19YRSdxRmQaFnLSn_nCsQlHIucPDVMmgKf_OE,9272
88
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0002_alter_learningpackage_key_and_more.py,sha256=toI7qJhNukk6hirKfFx9EpqTpzF2O2Yq1VpFJusDn2M,806
89
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0003_containers.py,sha256=k5P1LFkjQT-42yyHE2f57dAMQKafLuJCTRaCBMKWcjc,2519
90
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0004_publishableentity_can_stand_alone.py,sha256=RapDZKcjTp5QGgob9DUaf-zl_pQgg-5nz8PZWoXMlVA,549
91
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0005_alter_entitylistrow_options.py,sha256=Pp4O-VSI75n3UTZZW6CU4TOVIVc5lZvUg5YfMvZyrYM,377
92
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0006_draftchangelog.py,sha256=TdioE59_fXCf4ykWhXJfEjyxdDmqbbbLCwLeT1C9irA,3497
93
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0007_bootstrap_draftchangelog.py,sha256=EoFFSv52CeiuMGf3KmBvr34sx9N-tv8afdXWVR8wPFA,4154
94
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0008_alter_draftchangelogrecord_options_and_more.py,sha256=m_UjGSYcdYBRIMAlxwXEdO4kVgQOQyr1VjufbssldhI,1206
95
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0009_dependencies_and_hashing.py,sha256=FzAQ9enWWjc8virAxX-IxJo4Iw39wWbzOjdODFBm6dQ,2946
96
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0010_backfill_dependencies.py,sha256=VKJP9oVqcadwvMpJEXXk1sJcu07q1OVP7s-GKRp4hK4,18554
97
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/0011_remove_all_field_state_for_move_to_applet.py,sha256=d6fkITzwD82Pe0_G86YrCZ-WH1mWYVOVy7v-qWmSF4s,10602
98
+ openedx_learning/apps/openedx_content/backcompat/publishing/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
+ openedx_learning/apps/openedx_content/backcompat/sections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ openedx_learning/apps/openedx_content/backcompat/sections/apps.py,sha256=3YR4nibwbFWvzlQ8RaLyTwmrbZdFUS5c8iax39bl9y8,407
101
+ openedx_learning/apps/openedx_content/backcompat/sections/migrations/0001_initial.py,sha256=iW5AFhC26mfZNWEVNu8cTsr32Ca4htL4CUanHoXfaeY,1152
102
+ openedx_learning/apps/openedx_content/backcompat/sections/migrations/0002_remove_all_field_state_for_move_to_applet.py,sha256=YusxbUvB5F_dJXll2SMaQTK0IP_x1p0Kz0WkhPDNYD0,774
103
+ openedx_learning/apps/openedx_content/backcompat/sections/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ openedx_learning/apps/openedx_content/backcompat/subsections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ openedx_learning/apps/openedx_content/backcompat/subsections/apps.py,sha256=cvKw2evapntPMp2rht9bvljr5CqiTTTkuJaqp2ngnGE,424
106
+ openedx_learning/apps/openedx_content/backcompat/subsections/migrations/0001_initial.py,sha256=7kEHIC-EwG2KvlW4hg5tnl45--dW4Yv5gqV5SDqNYNo,1158
107
+ openedx_learning/apps/openedx_content/backcompat/subsections/migrations/0002_remove_all_field_state_for_move_to_applet.py,sha256=XmaaRlwdtGzzy27VdrEBgMXtw9RxQ8yLDAInEUjapAg,786
108
+ openedx_learning/apps/openedx_content/backcompat/subsections/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
+ openedx_learning/apps/openedx_content/backcompat/units/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ openedx_learning/apps/openedx_content/backcompat/units/apps.py,sha256=ekUn-nG8HOiXDAharx1ewIP25272JJVJCYGuoHXwqQY,388
111
+ openedx_learning/apps/openedx_content/backcompat/units/migrations/0001_initial.py,sha256=qM_0JGffxECVgXzncHXfgSE-g8u3L3a14R0M1Bnj_Ys,1129
112
+ openedx_learning/apps/openedx_content/backcompat/units/migrations/0002_remove_all_field_state_for_move_to_applet.py,sha256=2IpOzxlHPbUQqSQpvSBFtfAniL10_W504aRKJYScVW0,762
113
+ openedx_learning/apps/openedx_content/backcompat/units/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ openedx_learning/apps/openedx_content/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
+ openedx_learning/apps/openedx_content/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ openedx_learning/apps/openedx_content/management/commands/add_assets_to_component.py,sha256=wCaOlbcnOFK3nWE9Me11meP5CGwX3EjQ-0K5j0rLoJw,3145
117
+ openedx_learning/apps/openedx_content/management/commands/lp_dump.py,sha256=th83jqIDNQGrkrnTD8NDdLm2-ESEeYYXmrIw1lTf0oM,2589
118
+ openedx_learning/apps/openedx_content/management/commands/lp_load.py,sha256=uJ9v0Kb_tsrtT9A8yrogfdfA015ebam_FDfGJXp06Vw,2219
119
+ openedx_learning/apps/openedx_content/migrations/0001_initial.py,sha256=iKUM8FoYbqOlLUIj6tW0fH_-9hUxL0JKReHMi1un4VY,39798
120
+ openedx_learning/apps/openedx_content/migrations/0002_rename_tables_to_openedx_content.py,sha256=3tJNFtCtpKG4Ng64ED6wn9-4TAtD8T4HwL13t-22T0w,3592
121
+ openedx_learning/apps/openedx_content/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ openedx_learning/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
+ openedx_learning/contrib/media_server/__init__.py,sha256=iYijWFCl5RNR9omSu22kMl49EfponoqXBqXr0HMp4QI,56
124
+ openedx_learning/contrib/media_server/apps.py,sha256=GicFBN3N6wzVs5i3RgrQFJZeMlS55gyf4Iq_4cSdI9U,824
125
+ openedx_learning/contrib/media_server/urls.py,sha256=newNjV41sM9A9Oy_rgnZSXdkTFxSHiupIiAsVIGE2CE,365
126
+ openedx_learning/contrib/media_server/views.py,sha256=28ruF9ALZC9rtO0baGTEAtOserFnk0kEVgU3uISibJA,1364
127
+ openedx_learning/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ openedx_learning/lib/admin_utils.py,sha256=dQ02NrgXIJL6kx9LFBgEYc1Pr_xtFdr7NVXx01VOIE0,4514
129
+ openedx_learning/lib/cache.py,sha256=ppT36KiPLdsAF3GfZCF0IdiHodckd2gLiF1sNhjSJuk,958
130
+ openedx_learning/lib/collations.py,sha256=f65575r3BfAvFWU6pdBMsqrxPwFijB2SbJtDXq4UVc4,2401
131
+ openedx_learning/lib/fields.py,sha256=FwS2e5FYNGqbG9PJoDFvBsBlkfWCYbZ6G8BPAKbufLc,7701
132
+ openedx_learning/lib/managers.py,sha256=-Q3gxalSqyPZ9Im4DTROW5tF8wVTZLlmfTe62_xmowY,1643
133
+ openedx_learning/lib/test_utils.py,sha256=g3KLuepIZbaDBCsaj9711YuqyUx7LD4gXDcfNC-mWdc,527
134
+ openedx_learning/lib/validators.py,sha256=iqEdEAvFV2tC7Ecssx69kjecpdU8nE87AlDJYrqrsnc,404
135
+ openedx_learning-0.31.0.dist-info/licenses/LICENSE.txt,sha256=QTW2QN7q3XszgUAXm9Dzgtu5LXYKbR1SGnqMa7ufEuY,35139
136
+ openedx_tagging/__init__.py,sha256=V9N8M7f9LYlAbA_DdPUsHzTnWjYRXKGa5qHw9P1JnNI,30
137
+ openedx_tagging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
+ openedx_tagging/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ openedx_tagging/core/tagging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
+ openedx_tagging/core/tagging/admin.py,sha256=Ngc2l9Mf6gkzmqu7aOwq-d0mgV8szx0GzSeuWFX7Kyg,1080
141
+ openedx_tagging/core/tagging/api.py,sha256=zOYBy5hm4Sza6vcXRjMZt0DsVOIxZqfo_tilaFLqIJs,20095
142
+ openedx_tagging/core/tagging/apps.py,sha256=-gp0VYqX4XQzwjjd-G68Ev2Op0INLh9Byz5UOqF5_7k,345
143
+ openedx_tagging/core/tagging/data.py,sha256=421EvmDzdM7H523dBVQk4J0W_UwTT4U5syqPRXUYK4g,1353
144
+ openedx_tagging/core/tagging/rules.py,sha256=GkQLMYX8EPAIzFodTRTxtNI6rDNMyFWGu3NS9G33AyQ,6657
145
+ openedx_tagging/core/tagging/urls.py,sha256=-0Nzmh0mlF9-GgEuocwBdSJn6n8EINnxR4m4pmPou44,159
146
+ openedx_tagging/core/tagging/import_export/__init__.py,sha256=q5K4JalFQlJxAFUFyqhLY5zQtAskDnRM1H_aVuP_E3Q,83
147
+ openedx_tagging/core/tagging/import_export/actions.py,sha256=n007-M59D0mXYcwi9CDldDDy5JHAaGCVv9dQbiY4pZ4,13275
148
+ openedx_tagging/core/tagging/import_export/api.py,sha256=cZj3F7_nzLQi73RHURW1YoTWB8K_aXk6GqKvnRcdmbc,7162
149
+ openedx_tagging/core/tagging/import_export/exceptions.py,sha256=GGBldoW0tjYBrSlqDDwKkl6N0FIg1Yt5xcl7efxfo20,3116
150
+ openedx_tagging/core/tagging/import_export/import_plan.py,sha256=ol9mLfqqR0t1q0Om7D-iC9zKw1EI9MX3yAEKL8q6ias,6824
151
+ openedx_tagging/core/tagging/import_export/parsers.py,sha256=eXjMPfMfqcCUKSaXc5xfPEI5PFEK1tNJNGnKHz51tY8,9864
152
+ openedx_tagging/core/tagging/import_export/tasks.py,sha256=ZNtCGZuWn7z5E5o6OskrKjeV3vzzVa_yHaa-KlCnaEs,924
153
+ openedx_tagging/core/tagging/import_export/template.csv,sha256=HbmXyW94oyfqfVyiaPv1uBEyul9qb8oPmbk9UiMQYo4,1559
154
+ openedx_tagging/core/tagging/import_export/template.json,sha256=o8wBSMVtO2n5NokFFWNE99NQyYkeqz0Y_YImxMlZUOM,3491
155
+ openedx_tagging/core/tagging/migrations/0001_initial.py,sha256=Co9qmy8c_BUOvRgf-RTpUcYqHEKolj3wBfYhPPuE-vw,8556
156
+ openedx_tagging/core/tagging/migrations/0001_squashed.py,sha256=QUkQDRH3qm_-IrJbG6qIEVeLoAMawAsBMf4SO3WFbzQ,9150
157
+ openedx_tagging/core/tagging/migrations/0002_auto_20230718_2026.py,sha256=UG_q6UBmbcH92HTdC8yhO9IJRBUzSazoGG6Sm6Q90cc,2832
158
+ openedx_tagging/core/tagging/migrations/0003_auto_20230721_1238.py,sha256=c8q2apdZPNcr9U4VstFaLSO5z1k0ZlzL87qObobN7Mw,2109
159
+ openedx_tagging/core/tagging/migrations/0004_auto_20230723_2001.py,sha256=bPq4oZn7Mj2CHKNKH51ae4i7JApsWs0QNNtK_cwAlcU,1081
160
+ openedx_tagging/core/tagging/migrations/0005_language_taxonomy.py,sha256=R72BxxlDcxqLtFKfZh5XcvCpj-XVeUpuysNPAa_LZPs,754
161
+ openedx_tagging/core/tagging/migrations/0006_alter_objecttag_unique_together.py,sha256=Jx7B8ZQ5u8sZksKEkpZFrcaQpBXkaJVBtTXa-k3c4xY,376
162
+ openedx_tagging/core/tagging/migrations/0006_auto_20230802_1631.py,sha256=s4sAmjNbEfdqu87JlCqPdgtmQt8Mhb-L7CYPGjivnmA,3104
163
+ openedx_tagging/core/tagging/migrations/0007_tag_import_task_log_null_fix.py,sha256=mQLh5O6VE945obKYh2-JdegO-G881yjGSNe0U3U281Y,470
164
+ openedx_tagging/core/tagging/migrations/0008_taxonomy_description_not_null.py,sha256=POhWX-qu5BHdpzu-kGeTzO2Q-Efv3edYqtqo3_eOAK8,683
165
+ openedx_tagging/core/tagging/migrations/0009_alter_objecttag_object_id.py,sha256=-b0IE3vlJWhXj2ajW6G2b91e5NW-UgvglWz27NR7tKo,615
166
+ openedx_tagging/core/tagging/migrations/0010_cleanups.py,sha256=KrVg3L_RGZGVALX243LJcZmgTiM0ESF8d94Oxpx9hvU,1028
167
+ openedx_tagging/core/tagging/migrations/0011_remove_required.py,sha256=bcqrdiKTrejQwnQHy9gUoKOIXXv991vRBMIdypiiPX0,588
168
+ openedx_tagging/core/tagging/migrations/0012_language_taxonomy.py,sha256=asxUvOlEWJIc9N3eNsQvkBAQP-b2cAf_FIXy0CILuPc,1347
169
+ openedx_tagging/core/tagging/migrations/0013_tag_parent_blank.py,sha256=N0Bk_p_l38t6syyJxNKHB95D5MkZqUgr90ISRbBOCKA,619
170
+ openedx_tagging/core/tagging/migrations/0014_minor_fixes.py,sha256=46_F-el1UylSRnIRbY2DHeZpA9GJLrmGpEuF-urAtt4,1406
171
+ openedx_tagging/core/tagging/migrations/0015_taxonomy_export_id.py,sha256=jhS-T8o2mwu61E7hPbjjE_6MPLKRPQFAVu7pJHZNRz4,1454
172
+ openedx_tagging/core/tagging/migrations/0016_object_tag_export_id.py,sha256=X62sThGNv_0_wCBhWPcYRcs90EJwz9km9Nszr9yMVkM,2371
173
+ openedx_tagging/core/tagging/migrations/0017_alter_tagimporttask_status.py,sha256=ljxONZOAGRW-tvPUIFmc0cNXN4Hoo3GJiyzGMncN6LI,567
174
+ openedx_tagging/core/tagging/migrations/0018_objecttag_is_copied.py,sha256=zmr4b65T0vX6fYc8MpvSmQnYkAiNMpx3RKEd5tudsl8,517
175
+ openedx_tagging/core/tagging/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
+ openedx_tagging/core/tagging/models/__init__.py,sha256=yYdOnthuc7EUdfEULtZgqRwn5Y4bbYQmJCjVZqR5GTM,236
177
+ openedx_tagging/core/tagging/models/base.py,sha256=V2Qyp4L2QhTs6lZwB05_H54W6yWvyIEHhTcAGJAq-BY,39845
178
+ openedx_tagging/core/tagging/models/import_export.py,sha256=Aj0pleh0nh2LNS6zmdB1P4bpdgUMmvmobTkqBerORAI,4570
179
+ openedx_tagging/core/tagging/models/system_defined.py,sha256=_6LfvUZGEltvQMtm2OXy6TOLh3C8GnVTqtZDSAZW6K4,9062
180
+ openedx_tagging/core/tagging/models/utils.py,sha256=VhNL2cUTbCuxhsEsLXEDcgdV2tK2amUwVdWxmeZDr2w,2925
181
+ openedx_tagging/core/tagging/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
+ openedx_tagging/core/tagging/rest_api/paginators.py,sha256=BUIAg3taihHx7uAjpTZAGK1xSZzZY9G0aib4OKv5c0k,2651
183
+ openedx_tagging/core/tagging/rest_api/urls.py,sha256=egXaRQv1EAgF04ThgVZBQuvLK1LimuyUKKBD2Hbqb10,148
184
+ openedx_tagging/core/tagging/rest_api/utils.py,sha256=XZXixZ44vpNlxiyFplW8Lktyh_m1EfR3Y-tnyvA7acc,3620
185
+ openedx_tagging/core/tagging/rest_api/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
+ openedx_tagging/core/tagging/rest_api/v1/permissions.py,sha256=eD-RFK29vIqPOEQ_QXR4uOV4Jz0fQkNTy8KdVQDE2ak,2419
187
+ openedx_tagging/core/tagging/rest_api/v1/serializers.py,sha256=0HQD_Jrf6-YpocYfzGs74YBYjXe9Yo7cXU0A4VKr5Dw,13876
188
+ openedx_tagging/core/tagging/rest_api/v1/urls.py,sha256=dNUKCtUCx_YzrwlbEbpDfjGVQbb2QdJ1VuJCkladj6E,752
189
+ openedx_tagging/core/tagging/rest_api/v1/views.py,sha256=Hf92cy-tE767DE9FgsZcPKiCYrf5ihfETz8qGKBnuiU,36278
190
+ openedx_tagging/core/tagging/rest_api/v1/views_import.py,sha256=kbHUPe5A6WaaJ3J1lFIcYCt876ecLNQfd19m7YYub6c,1470
191
+ openedx_learning-0.31.0.dist-info/METADATA,sha256=80Uw2_FThQj8-0d5LSrKVJ9loei-ciZYl_7vmr9I12U,9372
192
+ openedx_learning-0.31.0.dist-info/WHEEL,sha256=Mk1ST5gDzEO5il5kYREiBnzzM469m5sI8ESPl7TRhJY,110
193
+ openedx_learning-0.31.0.dist-info/top_level.txt,sha256=IYFbr5mgiEHd-LOtZmXj3q3a0bkGK1M9LY7GXgnfi4M,33
194
+ openedx_learning-0.31.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -1,24 +0,0 @@
1
- """
2
- Django metadata for the Components Django application.
3
- """
4
- from django.apps import AppConfig
5
-
6
-
7
- class ComponentsConfig(AppConfig):
8
- """
9
- Configuration for the Components Django application.
10
- """
11
-
12
- name = "openedx_learning.apps.authoring.components"
13
- verbose_name = "Learning Core > Authoring > Components"
14
- default_auto_field = "django.db.models.BigAutoField"
15
- label = "oel_components"
16
-
17
- def ready(self) -> None:
18
- """
19
- Register Component and ComponentVersion.
20
- """
21
- from ..publishing.api import register_publishable_models # pylint: disable=import-outside-toplevel
22
- from .models import Component, ComponentVersion # pylint: disable=import-outside-toplevel
23
-
24
- register_publishable_models(Component, ComponentVersion)
@@ -1,25 +0,0 @@
1
- """
2
- publishing Django application initialization.
3
- """
4
-
5
- from django.apps import AppConfig
6
-
7
-
8
- class PublishingConfig(AppConfig):
9
- """
10
- Configuration for the publishing Django application.
11
- """
12
-
13
- name = "openedx_learning.apps.authoring.publishing"
14
- verbose_name = "Learning Core > Authoring > Publishing"
15
- default_auto_field = "django.db.models.BigAutoField"
16
- label = "oel_publishing"
17
-
18
- def ready(self):
19
- """
20
- Register Container and ContainerVersion.
21
- """
22
- from .api import register_publishable_models # pylint: disable=import-outside-toplevel
23
- from .models import Container, ContainerVersion # pylint: disable=import-outside-toplevel
24
-
25
- register_publishable_models(Container, ContainerVersion)
@@ -1,149 +0,0 @@
1
- """
2
- Backfill PublishableEntityVersionDependency entries based on ContainerVersions.
3
-
4
- We're introducing a lower-level publishing concept of a dependency that will be
5
- used by Containers, but this means we have to backfill that dependency info for
6
- existing Containers in the system.
7
- """
8
- from django.db import migrations
9
- from django.db.models import F
10
-
11
-
12
- def create_backfill(apps, schema_editor):
13
- """
14
- Create dependency entries and update dep hashes for Draft and Published.
15
- """
16
- _create_dependencies(apps)
17
- _update_drafts(apps)
18
- _update_draft_dependencies_hashes(apps)
19
- _update_published_dependencies_hashes(apps)
20
-
21
-
22
- def _create_dependencies(apps):
23
- """
24
- Populate the PublishableEntityVersion.dependencies relation.
25
-
26
- The only ones we should have in the system at this point are the ones from
27
- containers, so we query ContainerVersion for that.
28
- """
29
- PublishableEntityVersionDependency = apps.get_model(
30
- "oel_publishing", "PublishableEntityVersionDependency"
31
- )
32
- ContainerVersion = apps.get_model("oel_publishing", "ContainerVersion")
33
-
34
- for container_version in ContainerVersion.objects.all():
35
- # child_entity_ids is a set to de-dupe. This doesn't handle pinned
36
- # child references yet, but you can't actually make those in a real
37
- # library yet, so we shouldn't have that data lying around to migrate.
38
- child_entity_ids = set(
39
- container_version
40
- .entity_list
41
- .entitylistrow_set
42
- .all()
43
- .values_list("entity_id", flat=True)
44
- )
45
- PublishableEntityVersionDependency.objects.bulk_create(
46
- [
47
- PublishableEntityVersionDependency(
48
- referring_version_id=container_version.pk,
49
- referenced_entity_id=entity_id
50
- )
51
- for entity_id in child_entity_ids
52
- ],
53
- ignore_conflicts=True,
54
- )
55
-
56
-
57
- def _update_drafts(apps):
58
- """
59
- Update Draft entries to point to their most recent DraftLogRecord.
60
-
61
- This is slow and expensive.
62
- """
63
- Draft = apps.get_model("oel_publishing", "Draft")
64
- DraftChangeLogRecord = apps.get_model("oel_publishing", "DraftChangeLogRecord")
65
- for draft in Draft.objects.all():
66
- draft_log_record = (
67
- # Find the most recent DraftChangeLogRecord related to this Draft,
68
- DraftChangeLogRecord.objects
69
- .filter(entity_id=draft.pk)
70
- .order_by('-pk')
71
- .first()
72
- )
73
- draft.draft_log_record = draft_log_record
74
- draft.save()
75
-
76
-
77
- def _update_draft_dependencies_hashes(apps):
78
- """
79
- Update the dependency_hash_digest for all DraftChangeLogRecords.
80
-
81
- Backfill dependency state hashes. The important thing here is that things
82
- without dependencies will have the default (blank) state hash, so we only
83
- need to query for Draft entries for Containers.
84
-
85
- We are only backfilling the current DraftChangeLogRecords pointed to by the
86
- Draft entries now. We are not backfilling all historical
87
- DraftChangeLogRecords. Full historical reconstruction is probably possible,
88
- but it's not really worth the cost and complexity.
89
- """
90
- from ..api import update_dependencies_hash_digests_for_log
91
- from ..models import DraftChangeLog
92
-
93
- # All DraftChangeLogs that have records that are pointed to by the current
94
- # Draft and have a possibility of having dependencies.
95
- change_logs = DraftChangeLog.objects.filter(
96
- pk=F('records__entity__draft__draft_log_record__draft_change_log'),
97
- records__entity__draft__version__isnull=False,
98
- records__entity__container__isnull=False,
99
- ).distinct()
100
- for change_log in change_logs:
101
- update_dependencies_hash_digests_for_log(change_log, backfill=True)
102
-
103
- def _update_published_dependencies_hashes(apps):
104
- """
105
- Update all container Published.dependencies_hash_digest
106
-
107
- Backfill dependency state hashes. The important thing here is that things
108
- without dependencies will have the default (blank) state hash, so we only
109
- need to query for Published entries for Containers.
110
- """
111
- from ..api import update_dependencies_hash_digests_for_log
112
- from ..models import PublishLog
113
-
114
- # All PublishLogs that have records that are pointed to by the current
115
- # Published and have a possibility of having dependencies.
116
- change_logs = PublishLog.objects.filter(
117
- pk=F('records__entity__published__publish_log_record__publish_log'),
118
- records__entity__published__version__isnull=False,
119
- records__entity__container__isnull=False,
120
- ).distinct()
121
- for change_log in change_logs:
122
- update_dependencies_hash_digests_for_log(change_log, backfill=True)
123
-
124
- def remove_backfill(apps, schema_editor):
125
- """
126
- Reset all dep hash values to default ('') and remove dependencies.
127
- """
128
- Draft = apps.get_model("oel_publishing", "Draft")
129
- DraftChangeLogRecord = apps.get_model("oel_publishing", "DraftChangeLogRecord")
130
- PublishLogRecord = apps.get_model("oel_publishing", "PublishLogRecord")
131
- PublishableEntityVersionDependency = apps.get_model(
132
- "oel_publishing", "PublishableEntityVersionDependency"
133
- )
134
-
135
- PublishLogRecord.objects.all().update(dependencies_hash_digest='')
136
- DraftChangeLogRecord.objects.all().update(dependencies_hash_digest='')
137
- PublishableEntityVersionDependency.objects.all().delete()
138
- Draft.objects.all().update(draft_log_record=None)
139
-
140
-
141
- class Migration(migrations.Migration):
142
-
143
- dependencies = [
144
- ('oel_publishing', '0009_dependencies_and_hashing'),
145
- ]
146
-
147
- operations = [
148
- migrations.RunPython(create_backfill, reverse_code=remove_backfill)
149
- ]
@@ -1,25 +0,0 @@
1
- """
2
- Sections Django application initialization.
3
- """
4
-
5
- from django.apps import AppConfig
6
-
7
-
8
- class SectionsConfig(AppConfig):
9
- """
10
- Configuration for the Sections Django application.
11
- """
12
-
13
- name = "openedx_learning.apps.authoring.sections"
14
- verbose_name = "Learning Core > Authoring > Sections"
15
- default_auto_field = "django.db.models.BigAutoField"
16
- label = "oel_sections"
17
-
18
- def ready(self):
19
- """
20
- Register Section and SectionVersion.
21
- """
22
- from ..publishing.api import register_publishable_models # pylint: disable=import-outside-toplevel
23
- from .models import Section, SectionVersion # pylint: disable=import-outside-toplevel
24
-
25
- register_publishable_models(Section, SectionVersion)