openedx-learning 0.9.2__tar.gz → 0.9.3__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 (114) hide show
  1. {openedx_learning-0.9.2/openedx_learning.egg-info → openedx_learning-0.9.3}/PKG-INFO +5 -5
  2. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/__init__.py +1 -1
  3. {openedx_learning-0.9.2 → openedx_learning-0.9.3/openedx_learning.egg-info}/PKG-INFO +5 -5
  4. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/serializers.py +8 -1
  5. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rules.py +11 -0
  6. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/CHANGELOG.rst +0 -0
  7. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/LICENSE.txt +0 -0
  8. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/MANIFEST.in +0 -0
  9. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/README.rst +0 -0
  10. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/contrib/__init__.py +0 -0
  11. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/contrib/media_server/__init__.py +0 -0
  12. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/contrib/media_server/apps.py +0 -0
  13. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/contrib/media_server/urls.py +0 -0
  14. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/contrib/media_server/views.py +0 -0
  15. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/__init__.py +0 -0
  16. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/__init__.py +0 -0
  17. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/admin.py +0 -0
  18. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/api.py +0 -0
  19. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/apps.py +0 -0
  20. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/migrations/0001_initial.py +0 -0
  21. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/migrations/0002_alter_componentversioncontent_key.py +0 -0
  22. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/migrations/__init__.py +0 -0
  23. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/components/models.py +0 -0
  24. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/__init__.py +0 -0
  25. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/admin.py +0 -0
  26. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/api.py +0 -0
  27. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/apps.py +0 -0
  28. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/migrations/0001_initial.py +0 -0
  29. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/migrations/__init__.py +0 -0
  30. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/contents/models.py +0 -0
  31. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/__init__.py +0 -0
  32. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/admin.py +0 -0
  33. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/api.py +0 -0
  34. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/apps.py +0 -0
  35. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/migrations/0001_initial.py +0 -0
  36. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/migrations/0002_alter_learningpackage_key_and_more.py +0 -0
  37. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/migrations/__init__.py +0 -0
  38. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/model_mixins.py +0 -0
  39. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/core/publishing/models.py +0 -0
  40. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/__init__.py +0 -0
  41. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/admin_utils.py +0 -0
  42. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/cache.py +0 -0
  43. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/collations.py +0 -0
  44. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/fields.py +0 -0
  45. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/managers.py +0 -0
  46. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/test_utils.py +0 -0
  47. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/lib/validators.py +0 -0
  48. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/py.typed +0 -0
  49. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/__init__.py +0 -0
  50. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/apps.py +0 -0
  51. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/urls.py +0 -0
  52. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/v1/__init__.py +0 -0
  53. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/v1/components.py +0 -0
  54. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning/rest_api/v1/urls.py +0 -0
  55. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning.egg-info/SOURCES.txt +0 -0
  56. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning.egg-info/dependency_links.txt +0 -0
  57. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning.egg-info/not-zip-safe +0 -0
  58. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning.egg-info/requires.txt +4 -4
  59. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_learning.egg-info/top_level.txt +0 -0
  60. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/__init__.py +0 -0
  61. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/__init__.py +0 -0
  62. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/__init__.py +0 -0
  63. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/admin.py +0 -0
  64. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/api.py +0 -0
  65. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/apps.py +0 -0
  66. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/data.py +0 -0
  67. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/__init__.py +0 -0
  68. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/actions.py +0 -0
  69. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/api.py +0 -0
  70. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/exceptions.py +0 -0
  71. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/import_plan.py +0 -0
  72. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/parsers.py +0 -0
  73. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/tasks.py +0 -0
  74. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/template.csv +0 -0
  75. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/import_export/template.json +0 -0
  76. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0001_initial.py +0 -0
  77. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0001_squashed.py +0 -0
  78. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0002_auto_20230718_2026.py +0 -0
  79. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0003_auto_20230721_1238.py +0 -0
  80. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0004_auto_20230723_2001.py +0 -0
  81. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0005_language_taxonomy.py +0 -0
  82. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0006_alter_objecttag_unique_together.py +0 -0
  83. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0006_auto_20230802_1631.py +0 -0
  84. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0007_tag_import_task_log_null_fix.py +0 -0
  85. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0008_taxonomy_description_not_null.py +0 -0
  86. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0009_alter_objecttag_object_id.py +0 -0
  87. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0010_cleanups.py +0 -0
  88. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0011_remove_required.py +0 -0
  89. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0012_language_taxonomy.py +0 -0
  90. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0013_tag_parent_blank.py +0 -0
  91. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0014_minor_fixes.py +0 -0
  92. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0015_taxonomy_export_id.py +0 -0
  93. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0016_object_tag_export_id.py +0 -0
  94. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/0017_alter_tagimporttask_status.py +0 -0
  95. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/migrations/__init__.py +0 -0
  96. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/models/__init__.py +0 -0
  97. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/models/base.py +0 -0
  98. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/models/import_export.py +0 -0
  99. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/models/system_defined.py +0 -0
  100. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/models/utils.py +0 -0
  101. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/__init__.py +0 -0
  102. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/paginators.py +0 -0
  103. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/urls.py +0 -0
  104. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/utils.py +0 -0
  105. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/__init__.py +0 -0
  106. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/permissions.py +0 -0
  107. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/urls.py +0 -0
  108. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/views.py +0 -0
  109. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/rest_api/v1/views_import.py +0 -0
  110. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/core/tagging/urls.py +0 -0
  111. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/openedx_tagging/py.typed +0 -0
  112. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/requirements/base.in +0 -0
  113. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/setup.cfg +0 -0
  114. {openedx_learning-0.9.2 → openedx_learning-0.9.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openedx-learning
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: An experiment.
5
5
  Home-page: https://github.com/openedx/openedx-learning
6
6
  Author: David Ormsbee
@@ -19,12 +19,12 @@ Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Requires-Python: >=3.8
21
21
  License-File: LICENSE.txt
22
- Requires-Dist: celery
23
- Requires-Dist: rules<4.0
24
- Requires-Dist: attrs
25
22
  Requires-Dist: djangorestframework<4.0
26
- Requires-Dist: edx-drf-extensions
27
23
  Requires-Dist: Django<5.0
24
+ Requires-Dist: edx-drf-extensions
25
+ Requires-Dist: attrs
26
+ Requires-Dist: celery
27
+ Requires-Dist: rules<4.0
28
28
 
29
29
  openedx-learning
30
30
  =============================
@@ -1,4 +1,4 @@
1
1
  """
2
2
  Open edX Learning ("Learning Core").
3
3
  """
4
- __version__ = "0.9.2"
4
+ __version__ = "0.9.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openedx-learning
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: An experiment.
5
5
  Home-page: https://github.com/openedx/openedx-learning
6
6
  Author: David Ormsbee
@@ -19,12 +19,12 @@ Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Requires-Python: >=3.8
21
21
  License-File: LICENSE.txt
22
- Requires-Dist: celery
23
- Requires-Dist: rules<4.0
24
- Requires-Dist: attrs
25
22
  Requires-Dist: djangorestframework<4.0
26
- Requires-Dist: edx-drf-extensions
27
23
  Requires-Dist: Django<5.0
24
+ Requires-Dist: edx-drf-extensions
25
+ Requires-Dist: attrs
26
+ Requires-Dist: celery
27
+ Requires-Dist: rules<4.0
28
28
 
29
29
  openedx-learning
30
30
  =============================
@@ -140,7 +140,14 @@ class ObjectTagMinimalSerializer(UserPermissionsSerializerMixin, serializers.Mod
140
140
  fields = ["value", "lineage", "can_delete_objecttag"]
141
141
 
142
142
  lineage = serializers.ListField(child=serializers.CharField(), source="get_lineage", read_only=True)
143
- can_delete_objecttag = serializers.SerializerMethodField(method_name='get_can_delete')
143
+ can_delete_objecttag = serializers.SerializerMethodField()
144
+
145
+ def get_can_delete_objecttag(self, instance) -> bool | None:
146
+ """
147
+ Returns True if the current request user may delete object tags on this taxonomy
148
+ """
149
+ perm_name = f'{self.app_label}.remove_objecttag_objectid'
150
+ return self._can(perm_name, instance.object_id)
144
151
 
145
152
 
146
153
  class ObjectTagSerializer(ObjectTagMinimalSerializer):
@@ -137,6 +137,16 @@ def can_change_object_tag_objectid(_user: UserType, _object_id: str) -> bool:
137
137
  return False
138
138
 
139
139
 
140
+ @rules.predicate
141
+ def can_remove_object_tag_objectid(_user: UserType, _object_id: str) -> bool:
142
+ """
143
+ Nobody can remove object tags without checking the permission for the tagged object.
144
+
145
+ This rule could be defined in other apps for proper permission checking.
146
+ """
147
+ return can_change_object_tag_objectid(_user, _object_id)
148
+
149
+
140
150
  @rules.predicate
141
151
  def can_change_object_tag(
142
152
  user: UserType, perm_obj: ObjectTagPermissionItem | None = None
@@ -194,3 +204,4 @@ rules.add_perm("oel_tagging.view_objecttag_objectid", can_view_object_tag_object
194
204
  rules.add_perm("oel_tagging.view_objecttag_taxonomy", can_view_object_tag_taxonomy)
195
205
  rules.add_perm("oel_tagging.change_objecttag_taxonomy", can_view_object_tag_taxonomy)
196
206
  rules.add_perm("oel_tagging.change_objecttag_objectid", can_change_object_tag_objectid)
207
+ rules.add_perm("oel_tagging.remove_objecttag_objectid", can_remove_object_tag_objectid)
@@ -1,6 +1,6 @@
1
- celery
2
- rules<4.0
3
- attrs
4
1
  djangorestframework<4.0
5
- edx-drf-extensions
6
2
  Django<5.0
3
+ edx-drf-extensions
4
+ attrs
5
+ celery
6
+ rules<4.0