openedx-learning 0.6.0__tar.gz → 0.6.1__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 (110) hide show
  1. {openedx-learning-0.6.0/openedx_learning.egg-info → openedx-learning-0.6.1}/PKG-INFO +1 -1
  2. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/__init__.py +1 -1
  3. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/api.py +1 -1
  4. openedx-learning-0.6.1/openedx_learning/core/components/migrations/0002_alter_componentversioncontent_key.py +20 -0
  5. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/models.py +7 -1
  6. openedx-learning-0.6.1/openedx_learning/core/publishing/migrations/0002_alter_learningpackage_key_and_more.py +25 -0
  7. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/models.py +14 -2
  8. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/fields.py +2 -2
  9. {openedx-learning-0.6.0 → openedx-learning-0.6.1/openedx_learning.egg-info}/PKG-INFO +1 -1
  10. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning.egg-info/SOURCES.txt +2 -0
  11. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/CHANGELOG.rst +0 -0
  12. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/LICENSE.txt +0 -0
  13. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/MANIFEST.in +0 -0
  14. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/README.rst +0 -0
  15. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/contrib/__init__.py +0 -0
  16. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/contrib/media_server/__init__.py +0 -0
  17. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/contrib/media_server/apps.py +0 -0
  18. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/contrib/media_server/urls.py +0 -0
  19. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/contrib/media_server/views.py +0 -0
  20. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/__init__.py +0 -0
  21. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/__init__.py +0 -0
  22. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/admin.py +0 -0
  23. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/apps.py +0 -0
  24. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/migrations/0001_initial.py +0 -0
  25. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/components/migrations/__init__.py +0 -0
  26. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/__init__.py +0 -0
  27. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/admin.py +0 -0
  28. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/api.py +0 -0
  29. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/apps.py +0 -0
  30. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/migrations/0001_initial.py +0 -0
  31. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/migrations/__init__.py +0 -0
  32. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/contents/models.py +0 -0
  33. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/__init__.py +0 -0
  34. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/admin.py +0 -0
  35. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/api.py +0 -0
  36. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/apps.py +0 -0
  37. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/migrations/0001_initial.py +0 -0
  38. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/migrations/__init__.py +0 -0
  39. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/core/publishing/model_mixins.py +0 -0
  40. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/__init__.py +0 -0
  41. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/admin_utils.py +0 -0
  42. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/cache.py +0 -0
  43. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/collations.py +0 -0
  44. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/managers.py +0 -0
  45. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/test_utils.py +0 -0
  46. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/lib/validators.py +0 -0
  47. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/__init__.py +0 -0
  48. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/apps.py +0 -0
  49. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/urls.py +0 -0
  50. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/v1/__init__.py +0 -0
  51. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/v1/components.py +0 -0
  52. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning/rest_api/v1/urls.py +0 -0
  53. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning.egg-info/dependency_links.txt +0 -0
  54. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning.egg-info/not-zip-safe +0 -0
  55. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning.egg-info/requires.txt +4 -4
  56. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_learning.egg-info/top_level.txt +0 -0
  57. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/__init__.py +0 -0
  58. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/__init__.py +0 -0
  59. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/__init__.py +0 -0
  60. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/admin.py +0 -0
  61. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/api.py +0 -0
  62. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/apps.py +0 -0
  63. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/data.py +0 -0
  64. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/__init__.py +0 -0
  65. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/actions.py +0 -0
  66. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/api.py +0 -0
  67. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/exceptions.py +0 -0
  68. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/import_plan.py +0 -0
  69. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/parsers.py +0 -0
  70. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/tasks.py +0 -0
  71. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/template.csv +0 -0
  72. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/import_export/template.json +0 -0
  73. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0001_initial.py +0 -0
  74. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0001_squashed.py +0 -0
  75. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0002_auto_20230718_2026.py +0 -0
  76. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0003_auto_20230721_1238.py +0 -0
  77. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0004_auto_20230723_2001.py +0 -0
  78. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0005_language_taxonomy.py +0 -0
  79. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0006_alter_objecttag_unique_together.py +0 -0
  80. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0006_auto_20230802_1631.py +0 -0
  81. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0007_tag_import_task_log_null_fix.py +0 -0
  82. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0008_taxonomy_description_not_null.py +0 -0
  83. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0009_alter_objecttag_object_id.py +0 -0
  84. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0010_cleanups.py +0 -0
  85. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0011_remove_required.py +0 -0
  86. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0012_language_taxonomy.py +0 -0
  87. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0013_tag_parent_blank.py +0 -0
  88. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0014_minor_fixes.py +0 -0
  89. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/0015_taxonomy_export_id.py +0 -0
  90. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/migrations/__init__.py +0 -0
  91. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/models/__init__.py +0 -0
  92. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/models/base.py +0 -0
  93. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/models/import_export.py +0 -0
  94. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/models/system_defined.py +0 -0
  95. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/models/utils.py +0 -0
  96. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/__init__.py +0 -0
  97. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/paginators.py +0 -0
  98. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/urls.py +0 -0
  99. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/utils.py +0 -0
  100. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/__init__.py +0 -0
  101. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/permissions.py +0 -0
  102. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/serializers.py +0 -0
  103. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/urls.py +0 -0
  104. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/views.py +0 -0
  105. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rest_api/v1/views_import.py +0 -0
  106. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/rules.py +0 -0
  107. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/openedx_tagging/core/tagging/urls.py +0 -0
  108. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/requirements/base.in +0 -0
  109. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/setup.cfg +0 -0
  110. {openedx-learning-0.6.0 → openedx-learning-0.6.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: openedx-learning
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: An experiment.
5
5
  Home-page: https://github.com/openedx/openedx-learning
6
6
  Author: David Ormsbee
@@ -1,4 +1,4 @@
1
1
  """
2
2
  Open edX Learning ("Learning Core").
3
3
  """
4
- __version__ = "0.6.0"
4
+ __version__ = "0.6.1"
@@ -51,7 +51,7 @@ def create_component(
51
51
  """
52
52
  Create a new Component (an entity like a Problem or Video)
53
53
  """
54
- key = f"{component_type.namespace}:{component_type.name}@{local_key}"
54
+ key = f"{component_type.namespace}:{component_type.name}:{local_key}"
55
55
  with atomic():
56
56
  publishable_entity = publishing_api.create_publishable_entity(
57
57
  learning_package_id, key, created, created_by
@@ -0,0 +1,20 @@
1
+ # Generated by Django 4.2.10 on 2024-02-14 22:02
2
+
3
+ from django.db import migrations
4
+
5
+ import openedx_learning.lib.fields
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ('oel_components', '0001_initial'),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.AlterField(
16
+ model_name='componentversioncontent',
17
+ name='key',
18
+ field=openedx_learning.lib.fields.MultiCollationCharField(db_collations={'mysql': 'utf8mb4_bin', 'sqlite': 'BINARY'}, db_column='_key', max_length=500),
19
+ ),
20
+ ]
@@ -237,7 +237,13 @@ class ComponentVersionContent(models.Model):
237
237
  content = models.ForeignKey(Content, on_delete=models.RESTRICT)
238
238
 
239
239
  uuid = immutable_uuid_field()
240
- key = key_field()
240
+
241
+ # "key" is a reserved word for MySQL, so we're temporarily using the column
242
+ # name of "_key" to avoid breaking downstream tooling. A possible
243
+ # alternative name for this would be "path", since it's most often used as
244
+ # an internal file path. However, we might also want to put special
245
+ # identifiers that don't map as cleanly to file paths at some point.
246
+ key = key_field(db_column="_key")
241
247
 
242
248
  # Long explanation for the ``learner_downloadable`` field:
243
249
  #
@@ -0,0 +1,25 @@
1
+ # Generated by Django 4.2.10 on 2024-02-14 22:02
2
+
3
+ from django.db import migrations
4
+
5
+ import openedx_learning.lib.fields
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ('oel_publishing', '0001_initial'),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.AlterField(
16
+ model_name='learningpackage',
17
+ name='key',
18
+ field=openedx_learning.lib.fields.MultiCollationCharField(db_collations={'mysql': 'utf8mb4_bin', 'sqlite': 'BINARY'}, db_column='_key', max_length=500),
19
+ ),
20
+ migrations.AlterField(
21
+ model_name='publishableentity',
22
+ name='key',
23
+ field=openedx_learning.lib.fields.MultiCollationCharField(db_collations={'mysql': 'utf8mb4_bin', 'sqlite': 'BINARY'}, db_column='_key', max_length=500),
24
+ ),
25
+ ]
@@ -38,7 +38,14 @@ class LearningPackage(models.Model): # type: ignore[django-manager-missing]
38
38
  id = models.AutoField(primary_key=True)
39
39
 
40
40
  uuid = immutable_uuid_field()
41
- key = key_field()
41
+
42
+ # "key" is a reserved word for MySQL, so we're temporarily using the column
43
+ # name of "_key" to avoid breaking downstream tooling. There's an open
44
+ # question as to whether this field needs to exist at all, or whether the
45
+ # top level library key it's currently used for should be entirely in the
46
+ # LibraryContent model.
47
+ key = key_field(db_column="_key")
48
+
42
49
  title = case_insensitive_char_field(max_length=500, blank=False)
43
50
 
44
51
  # TODO: We should probably defer this field, since many things pull back
@@ -172,7 +179,12 @@ class PublishableEntity(models.Model):
172
179
  on_delete=models.CASCADE,
173
180
  related_name="publishable_entities",
174
181
  )
175
- key = key_field()
182
+
183
+ # "key" is a reserved word for MySQL, so we're temporarily using the column
184
+ # name of "_key" to avoid breaking downstream tooling. Consider renaming
185
+ # this later.
186
+ key = key_field(db_column="_key")
187
+
176
188
  created = manual_date_time_field()
177
189
  created_by = models.ForeignKey(
178
190
  settings.AUTH_USER_MODEL,
@@ -109,7 +109,7 @@ def immutable_uuid_field() -> models.UUIDField:
109
109
  )
110
110
 
111
111
 
112
- def key_field() -> MultiCollationCharField:
112
+ def key_field(**kwargs) -> MultiCollationCharField:
113
113
  """
114
114
  Externally created Identifier fields.
115
115
 
@@ -120,7 +120,7 @@ def key_field() -> MultiCollationCharField:
120
120
  Other apps should *not* make references to these values directly, since
121
121
  these values may in theory change (even if this is rare in practice).
122
122
  """
123
- return case_sensitive_char_field(max_length=500, blank=False)
123
+ return case_sensitive_char_field(max_length=500, blank=False, **kwargs)
124
124
 
125
125
 
126
126
  def hash_field() -> models.CharField:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: openedx-learning
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: An experiment.
5
5
  Home-page: https://github.com/openedx/openedx-learning
6
6
  Author: David Ormsbee
@@ -23,6 +23,7 @@ openedx_learning/core/components/api.py
23
23
  openedx_learning/core/components/apps.py
24
24
  openedx_learning/core/components/models.py
25
25
  openedx_learning/core/components/migrations/0001_initial.py
26
+ openedx_learning/core/components/migrations/0002_alter_componentversioncontent_key.py
26
27
  openedx_learning/core/components/migrations/__init__.py
27
28
  openedx_learning/core/contents/__init__.py
28
29
  openedx_learning/core/contents/admin.py
@@ -38,6 +39,7 @@ openedx_learning/core/publishing/apps.py
38
39
  openedx_learning/core/publishing/model_mixins.py
39
40
  openedx_learning/core/publishing/models.py
40
41
  openedx_learning/core/publishing/migrations/0001_initial.py
42
+ openedx_learning/core/publishing/migrations/0002_alter_learningpackage_key_and_more.py
41
43
  openedx_learning/core/publishing/migrations/__init__.py
42
44
  openedx_learning/lib/__init__.py
43
45
  openedx_learning/lib/admin_utils.py
@@ -1,6 +1,6 @@
1
- edx-drf-extensions
2
- attrs
3
1
  Django<5.0
4
- celery
5
- djangorestframework<4.0
6
2
  rules<4.0
3
+ djangorestframework<4.0
4
+ attrs
5
+ edx-drf-extensions
6
+ celery