edx-enterprise-data 4.11.0__tar.gz → 4.11.2__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 (154) hide show
  1. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/CHANGELOG.rst +9 -0
  2. {edx-enterprise-data-4.11.0/edx_enterprise_data.egg-info → edx-enterprise-data-4.11.2}/PKG-INFO +1 -1
  3. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2/edx_enterprise_data.egg-info}/PKG-INFO +1 -1
  4. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/__init__.py +1 -1
  5. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v1/views.py +29 -3
  6. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/v1/test_views.py +50 -0
  7. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/LICENSE +0 -0
  8. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/MANIFEST.in +0 -0
  9. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/README.md +0 -0
  10. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/edx_enterprise_data.egg-info/SOURCES.txt +0 -0
  11. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
  12. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
  13. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/edx_enterprise_data.egg-info/requires.txt +0 -0
  14. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/edx_enterprise_data.egg-info/top_level.txt +0 -0
  15. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/__init__.py +0 -0
  16. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/urls.py +0 -0
  17. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v0/__init__.py +0 -0
  18. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v0/serializers.py +0 -0
  19. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v0/urls.py +0 -0
  20. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v0/views.py +0 -0
  21. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v1/__init__.py +0 -0
  22. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v1/serializers.py +0 -0
  23. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/api/v1/urls.py +0 -0
  24. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/apps.py +0 -0
  25. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/clients.py +0 -0
  26. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/constants.py +0 -0
  27. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/filters.py +0 -0
  28. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
  29. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/fixtures/enterprise_user.json +0 -0
  30. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/__init__.py +0 -0
  31. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/__init__.py +0 -0
  32. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_dummy_data.py +0 -0
  33. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
  34. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
  35. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  36. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
  37. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
  38. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
  39. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/__init__.py +0 -0
  40. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
  41. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
  42. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  43. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
  44. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
  45. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0001_initial.py +0 -0
  46. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
  47. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
  48. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
  49. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
  50. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
  51. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
  52. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
  53. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
  54. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
  55. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
  56. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
  57. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
  58. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
  59. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
  60. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
  61. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
  62. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
  63. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
  64. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
  65. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
  66. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
  67. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
  68. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
  69. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
  70. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
  71. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
  72. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
  73. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
  74. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
  75. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
  76. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
  77. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
  78. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
  79. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/migrations/__init__.py +0 -0
  80. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/models.py +0 -0
  81. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/paginators.py +0 -0
  82. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/settings/__init__.py +0 -0
  83. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/settings/test.py +0 -0
  84. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/signals.py +0 -0
  85. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/__init__.py +0 -0
  86. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/__init__.py +0 -0
  87. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/v0/__init__.py +0 -0
  88. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
  89. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/v1/__init__.py +0 -0
  90. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
  91. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/factories.py +0 -0
  92. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/mixins.py +0 -0
  93. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/test_clients.py +0 -0
  94. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/test_filters.py +0 -0
  95. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/test_models.py +0 -0
  96. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/test_utils.py +0 -0
  97. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/tests/test_views.py +0 -0
  98. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/urls.py +0 -0
  99. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data/utils.py +0 -0
  100. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/__init__.py +0 -0
  101. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/admin.py +0 -0
  102. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/apps.py +0 -0
  103. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/constants.py +0 -0
  104. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0001_initial.py +0 -0
  105. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
  106. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
  107. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
  108. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
  109. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
  110. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
  111. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/migrations/__init__.py +0 -0
  112. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/models.py +0 -0
  113. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/rules.py +0 -0
  114. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/tests/__init__.py +0 -0
  115. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/tests/factories.py +0 -0
  116. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_data_roles/tests/test_models.py +0 -0
  117. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/__init__.py +0 -0
  118. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/clients/__init__.py +0 -0
  119. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/clients/enterprise.py +0 -0
  120. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/clients/s3.py +0 -0
  121. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/clients/snowflake.py +0 -0
  122. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/clients/vertica.py +0 -0
  123. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/delivery_method.py +0 -0
  124. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/external_resource_link_report.py +0 -0
  125. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/fixtures/__init__.py +0 -0
  126. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
  127. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/reporter.py +0 -0
  128. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/send_enterprise_reports.py +0 -0
  129. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/__init__.py +0 -0
  130. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_clients.py +0 -0
  131. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_delivery_method.py +0 -0
  132. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
  133. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_external_link_report.py +0 -0
  134. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_reporter.py +0 -0
  135. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
  136. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_utils.py +0 -0
  137. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/test_vertica_client.py +0 -0
  138. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/tests/utils.py +0 -0
  139. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/enterprise_reporting/utils.py +0 -0
  140. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/base.in +0 -0
  141. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/base.txt +0 -0
  142. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/ci.txt +0 -0
  143. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/constraints.txt +0 -0
  144. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/dev.txt +0 -0
  145. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/django.txt +0 -0
  146. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/pip.txt +0 -0
  147. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/pip_tools.txt +0 -0
  148. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/quality.txt +0 -0
  149. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/reporting.in +0 -0
  150. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/test-master.txt +0 -0
  151. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/test-reporting.txt +0 -0
  152. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/requirements/test.txt +0 -0
  153. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/setup.cfg +0 -0
  154. {edx-enterprise-data-4.11.0 → edx-enterprise-data-4.11.2}/setup.py +0 -0
@@ -15,6 +15,15 @@ Unreleased
15
15
  ----------
16
16
 
17
17
  =========================
18
+ [4.11.2] - 2023-08-18
19
+ ---------------------
20
+ * Add api filtering for `EnterpriseLearnerEnrollmentViewSet` for course_title or user_email
21
+
22
+ [4.11.1] - 2023-08-17
23
+ ---------------------
24
+ * Add api filtering for `EnterpriseLearnerEnrollmentViewSet` for course_title or user_email
25
+
26
+
18
27
  [4.11.0] - 2023-08-16
19
28
  ---------------------
20
29
  * Add api endpoint for `EnterpriseAdminLearnerProgress` and `EnterpriseAdminSummarizeInsights` models
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 4.11.0
3
+ Version: 4.11.2
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 4.11.0
3
+ Version: 4.11.2
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -2,6 +2,6 @@
2
2
  Enterprise data api application. This Django app exposes API endpoints used by enterprises.
3
3
  """
4
4
 
5
- __version__ = "4.11.0"
5
+ __version__ = "4.11.2"
6
6
 
7
7
  default_app_config = "enterprise_data.apps.EnterpriseDataAppConfig" # pylint: disable=invalid-name
@@ -2,9 +2,9 @@
2
2
  Views for enterprise api v1.
3
3
  """
4
4
 
5
-
6
5
  from datetime import date, timedelta
7
6
  from logging import getLogger
7
+ from uuid import UUID
8
8
 
9
9
  from django_filters.rest_framework import DjangoFilterBackend
10
10
  from edx_django_utils.cache import TieredCache
@@ -166,7 +166,12 @@ class EnterpriseLearnerEnrollmentViewSet(EnterpriseViewSetMixin, viewsets.ReadOn
166
166
  search_email = query_filters.get('search')
167
167
  if search_email:
168
168
  queryset = queryset.filter(user_email__icontains=search_email)
169
-
169
+ search_all_param = query_filters.get('search_all')
170
+ if search_all_param:
171
+ queryset = queryset.filter(
172
+ Q(user_email__icontains=search_all_param)
173
+ | Q(course_title__icontains=search_all_param)
174
+ )
170
175
  search_course = query_filters.get('search_course')
171
176
  if search_course:
172
177
  queryset = queryset.filter(course_title__icontains=search_course)
@@ -176,7 +181,7 @@ class EnterpriseLearnerEnrollmentViewSet(EnterpriseViewSetMixin, viewsets.ReadOn
176
181
 
177
182
  offer_id = query_filters.get('offer_id')
178
183
  if offer_id:
179
- queryset = queryset.filter(offer_id=offer_id)
184
+ queryset = self.filter_by_offer_id(queryset, offer_id)
180
185
 
181
186
  ignore_null_course_list_price = query_filters.get('ignore_null_course_list_price')
182
187
  if ignore_null_course_list_price:
@@ -192,6 +197,27 @@ class EnterpriseLearnerEnrollmentViewSet(EnterpriseViewSetMixin, viewsets.ReadOn
192
197
 
193
198
  return queryset
194
199
 
200
+ def filter_by_offer_id(self, queryset, offer_id):
201
+ """
202
+ Filter queryset by `offer_id`
203
+ """
204
+ # offer_id field in table contains two types of data
205
+ # 1. integer
206
+ # 2. uuid
207
+ # In table, uuids are stored without hyphen and in lower case
208
+ # but api clients are sending uuids with hyphen and that causes the issue
209
+ # we need to remove the hyphens from uuid, convert the uuid to lower case and then do a compare in DB
210
+
211
+ # if offer_id is a uuid only then do the transformation
212
+ try:
213
+ offer_id_uuid_obj = UUID(offer_id, version=4)
214
+ offer_id = str(offer_id_uuid_obj)
215
+ offer_id = offer_id.replace('-', '')
216
+ except ValueError:
217
+ pass
218
+
219
+ return queryset.filter(offer_id=offer_id)
220
+
195
221
  def filter_active_enrollments(self, queryset):
196
222
  """
197
223
  Filters queryset to include enrollments with course date in future
@@ -160,6 +160,56 @@ class TestEnterpriseLearnerEnrollmentViewSet(JWTTestMixin, APITransactionTestCas
160
160
  self.assertEqual(len(results), 1)
161
161
  self.assertEqual(results[0]['enrollment_id'], learner_enrollment_subsidized.enrollment_id)
162
162
 
163
+ def test_search_by_course_title(self):
164
+ """Test that the course title search works correctly"""
165
+ enterprise_learner = EnterpriseLearnerFactory(
166
+ enterprise_customer_uuid=self.enterprise_id
167
+ )
168
+ course_titles = ['Introduction to Python', 'Introduction to Java', 'Introduction to C++']
169
+
170
+ for title in course_titles:
171
+ EnterpriseLearnerEnrollmentFactory(
172
+ enterprise_customer_uuid=self.enterprise_id,
173
+ is_consent_granted=True,
174
+ enterprise_user_id=enterprise_learner.enterprise_user_id,
175
+ course_title=title,
176
+ )
177
+
178
+ url = reverse('v1:enterprise-learner-enrollment-list', kwargs={'enterprise_id': self.enterprise_id})
179
+ response = self.client.get(url, data={'search_all': 'Introduction to'})
180
+ results = response.json()['results']
181
+ self.assertEqual(len(results), 3)
182
+
183
+ def test_search_by_email(self):
184
+ """Test that the email search works correctly"""
185
+ enterprise_learner = EnterpriseLearnerFactory(
186
+ enterprise_customer_uuid=self.enterprise_id,
187
+ user_email="johndoe@example.com"
188
+ )
189
+ EnterpriseLearnerEnrollmentFactory(
190
+ enterprise_customer_uuid=self.enterprise_id,
191
+ is_consent_granted=True,
192
+ enterprise_user_id=enterprise_learner.enterprise_user_id,
193
+ course_title="Sample course",
194
+ user_email="johndoe@example.com"
195
+ )
196
+ url = reverse('v1:enterprise-learner-enrollment-list', kwargs={'enterprise_id': self.enterprise_id})
197
+ response = self.client.get(url, data={'search_all': 'john'})
198
+ results = response.json()['results']
199
+ self.assertEqual(len(results), 1)
200
+
201
+ def test_search_no_results(self):
202
+ """Test that the search returns no results if no matches are found"""
203
+ EnterpriseLearnerFactory(
204
+ enterprise_customer_uuid=self.enterprise_id,
205
+ user_email="test@example.com"
206
+ )
207
+ search_term = 'nonexistentemail@example.com'
208
+ url = reverse('v1:enterprise-learner-enrollment-list', kwargs={'enterprise_id': self.enterprise_id})
209
+ response = self.client.get(url, data={'search_all': search_term})
210
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
211
+ self.assertEqual(response.json()['count'], 0)
212
+
163
213
 
164
214
  @ddt.ddt
165
215
  @mark.django_db