edx-enterprise-data 5.4.1__tar.gz → 5.5.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 (161) hide show
  1. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/CHANGELOG.rst +8 -0
  2. {edx-enterprise-data-5.4.1/edx_enterprise_data.egg-info → edx-enterprise-data-5.5.1}/PKG-INFO +2 -2
  3. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1/edx_enterprise_data.egg-info}/PKG-INFO +2 -2
  4. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/edx_enterprise_data.egg-info/SOURCES.txt +1 -0
  5. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/edx_enterprise_data.egg-info/requires.txt +1 -1
  6. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/__init__.py +1 -1
  7. edx-enterprise-data-5.5.1/enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py +18 -0
  8. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/models.py +1 -0
  9. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/reporter.py +7 -1
  10. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/base.txt +21 -21
  11. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/ci.txt +5 -8
  12. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/dev.txt +41 -39
  13. edx-enterprise-data-5.5.1/requirements/django.txt +1 -0
  14. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/pip.txt +2 -2
  15. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/pip_tools.txt +2 -2
  16. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/quality.txt +47 -43
  17. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/reporting.in +5 -1
  18. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/test-master.txt +27 -25
  19. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/test-reporting.txt +17 -20
  20. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/test.txt +28 -26
  21. edx-enterprise-data-5.4.1/requirements/django.txt +0 -1
  22. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/LICENSE +0 -0
  23. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/MANIFEST.in +0 -0
  24. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/README.md +0 -0
  25. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
  26. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
  27. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/edx_enterprise_data.egg-info/top_level.txt +0 -0
  28. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/__init__.py +0 -0
  29. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/urls.py +0 -0
  30. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v0/__init__.py +0 -0
  31. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v0/serializers.py +0 -0
  32. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v0/urls.py +0 -0
  33. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v0/views.py +0 -0
  34. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v1/__init__.py +0 -0
  35. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v1/serializers.py +0 -0
  36. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v1/urls.py +0 -0
  37. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/api/v1/views.py +0 -0
  38. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/apps.py +0 -0
  39. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/clients.py +0 -0
  40. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/constants.py +0 -0
  41. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/filters.py +0 -0
  42. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
  43. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/fixtures/enterprise_user.json +0 -0
  44. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/__init__.py +0 -0
  45. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/__init__.py +0 -0
  46. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_dummy_data.py +0 -0
  47. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
  48. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
  49. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  50. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
  51. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
  52. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
  53. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/__init__.py +0 -0
  54. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
  55. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
  56. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
  57. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
  58. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
  59. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0001_initial.py +0 -0
  60. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
  61. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
  62. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
  63. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
  64. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
  65. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
  66. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
  67. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
  68. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
  69. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
  70. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
  71. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
  72. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
  73. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
  74. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
  75. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
  76. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
  77. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
  78. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
  79. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
  80. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
  81. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
  82. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
  83. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
  84. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
  85. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
  86. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
  87. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
  88. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
  89. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
  90. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
  91. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
  92. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
  93. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0034_auto_20230907_0834.py +0 -0
  94. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0035_auto_20230907_1154.py +0 -0
  95. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py +0 -0
  96. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py +0 -0
  97. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/migrations/__init__.py +0 -0
  98. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/paginators.py +0 -0
  99. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/settings/__init__.py +0 -0
  100. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/settings/test.py +0 -0
  101. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/signals.py +0 -0
  102. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/__init__.py +0 -0
  103. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/__init__.py +0 -0
  104. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/v0/__init__.py +0 -0
  105. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
  106. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/v1/__init__.py +0 -0
  107. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
  108. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/api/v1/test_views.py +0 -0
  109. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/factories.py +0 -0
  110. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/mixins.py +0 -0
  111. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/test_clients.py +0 -0
  112. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/test_filters.py +0 -0
  113. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/test_models.py +0 -0
  114. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/test_utils.py +0 -0
  115. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/tests/test_views.py +0 -0
  116. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/urls.py +0 -0
  117. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data/utils.py +0 -0
  118. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/__init__.py +0 -0
  119. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/admin.py +0 -0
  120. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/apps.py +0 -0
  121. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/constants.py +0 -0
  122. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0001_initial.py +0 -0
  123. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
  124. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
  125. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
  126. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
  127. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
  128. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
  129. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/migrations/__init__.py +0 -0
  130. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/models.py +0 -0
  131. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/rules.py +0 -0
  132. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/tests/__init__.py +0 -0
  133. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/tests/factories.py +0 -0
  134. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_data_roles/tests/test_models.py +0 -0
  135. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/__init__.py +0 -0
  136. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/clients/__init__.py +0 -0
  137. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/clients/enterprise.py +0 -0
  138. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/clients/s3.py +0 -0
  139. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/clients/snowflake.py +0 -0
  140. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/clients/vertica.py +0 -0
  141. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/delivery_method.py +0 -0
  142. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/external_resource_link_report.py +0 -0
  143. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/fixtures/__init__.py +0 -0
  144. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
  145. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/send_enterprise_reports.py +0 -0
  146. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/__init__.py +0 -0
  147. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_clients.py +0 -0
  148. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_delivery_method.py +0 -0
  149. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
  150. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_external_link_report.py +0 -0
  151. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_reporter.py +0 -0
  152. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
  153. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_utils.py +0 -0
  154. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/test_vertica_client.py +0 -0
  155. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/tests/utils.py +0 -0
  156. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/enterprise_reporting/utils.py +0 -0
  157. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/base.in +0 -0
  158. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/common_constraints.txt +0 -0
  159. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/requirements/constraints.txt +0 -0
  160. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/setup.cfg +0 -0
  161. {edx-enterprise-data-5.4.1 → edx-enterprise-data-5.5.1}/setup.py +0 -0
@@ -15,6 +15,14 @@ Unreleased
15
15
  ----------
16
16
 
17
17
  =========================
18
+ [5.5.1] - 2024-01-10
19
+ ---------------------
20
+ * Added retry mechanism for failed report deliveries.
21
+
22
+ [5.5.0] - 2023-10-19
23
+ ---------------------
24
+ * Add data export timestamp
25
+
18
26
  [5.4.1] - 2023-09-22
19
27
  ---------------------
20
28
  * Update NullBooleanField for Django 4.2 support
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 5.4.1
3
+ Version: 5.5.1
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -31,8 +31,8 @@ Requires-Dist: awscli; extra == "reporting"
31
31
  Requires-Dist: boto3; extra == "reporting"
32
32
  Requires-Dist: celery==4.4.7; extra == "reporting"
33
33
  Requires-Dist: cryptography; extra == "reporting"
34
+ Requires-Dist: https; extra == "reporting"
34
35
  Requires-Dist: paramiko; extra == "reporting"
35
- Requires-Dist: py2neo; extra == "reporting"
36
36
  Requires-Dist: pyminizip; extra == "reporting"
37
37
  Requires-Dist: snowflake-connector-python; extra == "reporting"
38
38
  Requires-Dist: unicodecsv==0.14.1; extra == "reporting"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 5.4.1
3
+ Version: 5.5.1
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -31,8 +31,8 @@ Requires-Dist: awscli; extra == "reporting"
31
31
  Requires-Dist: boto3; extra == "reporting"
32
32
  Requires-Dist: celery==4.4.7; extra == "reporting"
33
33
  Requires-Dist: cryptography; extra == "reporting"
34
+ Requires-Dist: https; extra == "reporting"
34
35
  Requires-Dist: paramiko; extra == "reporting"
35
- Requires-Dist: py2neo; extra == "reporting"
36
36
  Requires-Dist: pyminizip; extra == "reporting"
37
37
  Requires-Dist: snowflake-connector-python; extra == "reporting"
38
38
  Requires-Dist: unicodecsv==0.14.1; extra == "reporting"
@@ -84,6 +84,7 @@ enterprise_data/migrations/0034_auto_20230907_0834.py
84
84
  enterprise_data/migrations/0035_auto_20230907_1154.py
85
85
  enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py
86
86
  enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py
87
+ enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py
87
88
  enterprise_data/migrations/__init__.py
88
89
  enterprise_data/settings/__init__.py
89
90
  enterprise_data/settings/test.py
@@ -17,8 +17,8 @@ awscli
17
17
  boto3
18
18
  celery==4.4.7
19
19
  cryptography
20
+ https
20
21
  paramiko
21
- py2neo
22
22
  pyminizip
23
23
  snowflake-connector-python
24
24
  unicodecsv==0.14.1
@@ -2,4 +2,4 @@
2
2
  Enterprise data api application. This Django app exposes API endpoints used by enterprises.
3
3
  """
4
4
 
5
- __version__ = "5.4.1"
5
+ __version__ = "5.5.1"
@@ -0,0 +1,18 @@
1
+ # Generated by Django 3.2.20 on 2023-10-19 15:55
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('enterprise_data', '0037_alter_enterpriseenrollment_consent_granted'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='enterpriseoffer',
15
+ name='export_timestamp',
16
+ field=models.DateTimeField(null=True),
17
+ ),
18
+ ]
@@ -310,6 +310,7 @@ class EnterpriseOffer(models.Model):
310
310
  remaining_balance = models.FloatField(null=True)
311
311
  amount_offer_spent_ocm = models.FloatField(null=True)
312
312
  amount_offer_spent_exec_ed = models.FloatField(null=True)
313
+ export_timestamp = models.DateTimeField(null=True)
313
314
 
314
315
  def __str__(self):
315
316
  """
@@ -20,7 +20,12 @@ from enterprise_reporting.clients.enterprise import (
20
20
  from enterprise_reporting.clients.s3 import S3Client
21
21
  from enterprise_reporting.clients.vertica import VerticaClient
22
22
  from enterprise_reporting.delivery_method import SFTPDeliveryMethod, SMTPDeliveryMethod
23
- from enterprise_reporting.utils import decrypt_string, extract_catalog_uuids_from_reporting_config, generate_data
23
+ from enterprise_reporting.utils import (
24
+ decrypt_string,
25
+ extract_catalog_uuids_from_reporting_config,
26
+ generate_data,
27
+ retry_on_exception,
28
+ )
24
29
 
25
30
  LOGGER = logging.getLogger(__name__)
26
31
  NOW = datetime.datetime.now().strftime("%Y-%m-%d")
@@ -115,6 +120,7 @@ class EnterpriseReportSender:
115
120
  """Get a full path to the report file that can be modified with arbitrary formatting."""
116
121
  return '_{}.'.join(self.data_report_file_name.rsplit('.'))
117
122
 
123
+ @retry_on_exception(max_retries=2, delay=1, backoff=2)
118
124
  def send_enterprise_report(self):
119
125
  """Generate the report file of the appropriate type and send it through the configured delivery method."""
120
126
  LOGGER.info(f'Starting process to send report to {self.enterprise_customer_name}')
@@ -12,15 +12,15 @@ asn1crypto==1.5.1
12
12
  # via
13
13
  # oscrypto
14
14
  # snowflake-connector-python
15
- awscli==1.29.53
15
+ awscli==1.29.74
16
16
  # via -r requirements/reporting.in
17
17
  bcrypt==4.0.1
18
18
  # via paramiko
19
19
  billiard==3.6.4.0
20
20
  # via celery
21
- boto3==1.28.53
21
+ boto3==1.28.74
22
22
  # via -r requirements/reporting.in
23
- botocore==1.31.53
23
+ botocore==1.31.74
24
24
  # via
25
25
  # awscli
26
26
  # boto3
@@ -32,12 +32,12 @@ certifi==2023.7.22
32
32
  # py2neo
33
33
  # requests
34
34
  # snowflake-connector-python
35
- cffi==1.15.1
35
+ cffi==1.16.0
36
36
  # via
37
37
  # cryptography
38
38
  # pynacl
39
39
  # snowflake-connector-python
40
- charset-normalizer==3.2.0
40
+ charset-normalizer==3.3.1
41
41
  # via
42
42
  # requests
43
43
  # snowflake-connector-python
@@ -45,7 +45,7 @@ click==8.1.7
45
45
  # via edx-django-utils
46
46
  colorama==0.4.4
47
47
  # via awscli
48
- cryptography==41.0.4
48
+ cryptography==41.0.5
49
49
  # via
50
50
  # -r requirements/reporting.in
51
51
  # django-fernet-fields-v2
@@ -54,7 +54,7 @@ cryptography==41.0.4
54
54
  # pyjwt
55
55
  # pyopenssl
56
56
  # snowflake-connector-python
57
- django==3.2.21
57
+ django==3.2.22
58
58
  # via
59
59
  # -c requirements/common_constraints.txt
60
60
  # -r requirements/base.in
@@ -97,7 +97,7 @@ edx-django-utils==5.7.0
97
97
  # -r requirements/base.in
98
98
  # edx-drf-extensions
99
99
  # edx-rest-api-client
100
- edx-drf-extensions==8.10.0
100
+ edx-drf-extensions==8.12.0
101
101
  # via
102
102
  # -r requirements/base.in
103
103
  # edx-rbac
@@ -107,13 +107,13 @@ edx-opaque-keys==2.5.1
107
107
  # edx-drf-extensions
108
108
  edx-rbac==1.8.0
109
109
  # via -r requirements/base.in
110
- edx-rest-api-client==5.6.0
110
+ edx-rest-api-client==5.6.1
111
111
  # via -r requirements/base.in
112
112
  factory-boy==3.3.0
113
113
  # via -r requirements/base.in
114
- faker==19.6.2
114
+ faker==19.12.0
115
115
  # via factory-boy
116
- filelock==3.12.4
116
+ filelock==3.13.1
117
117
  # via snowflake-connector-python
118
118
  idna==3.4
119
119
  # via
@@ -129,11 +129,11 @@ kombu==4.6.11
129
129
  # via celery
130
130
  monotonic==1.6
131
131
  # via py2neo
132
- newrelic==9.0.0
132
+ newrelic==9.1.1
133
133
  # via edx-django-utils
134
134
  oscrypto==1.3.0
135
135
  # via snowflake-connector-python
136
- packaging==23.1
136
+ packaging==23.2
137
137
  # via
138
138
  # py2neo
139
139
  # snowflake-connector-python
@@ -145,11 +145,11 @@ pbr==5.11.1
145
145
  # via stevedore
146
146
  pgpy==0.6.0
147
147
  # via -r requirements/reporting.in
148
- platformdirs==3.8.1
148
+ platformdirs==3.11.0
149
149
  # via snowflake-connector-python
150
- psutil==5.9.5
150
+ psutil==5.9.6
151
151
  # via edx-django-utils
152
- py2neo==2021.2.3
152
+ py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz
153
153
  # via -r requirements/reporting.in
154
154
  pyasn1==0.5.0
155
155
  # via
@@ -175,7 +175,7 @@ pynacl==1.5.0
175
175
  # via
176
176
  # edx-django-utils
177
177
  # paramiko
178
- pyopenssl==23.2.0
178
+ pyopenssl==23.3.0
179
179
  # via snowflake-connector-python
180
180
  python-dateutil==2.8.2
181
181
  # via
@@ -202,7 +202,7 @@ rsa==4.7.2
202
202
  # via awscli
203
203
  rules==3.3
204
204
  # via -r requirements/base.in
205
- s3transfer==0.6.2
205
+ s3transfer==0.7.0
206
206
  # via
207
207
  # awscli
208
208
  # boto3
@@ -218,7 +218,7 @@ six==1.16.0
218
218
  # vertica-python
219
219
  slumber==0.7.1
220
220
  # via edx-rest-api-client
221
- snowflake-connector-python==3.2.0
221
+ snowflake-connector-python==3.3.1
222
222
  # via -r requirements/reporting.in
223
223
  sortedcontainers==2.4.0
224
224
  # via snowflake-connector-python
@@ -238,13 +238,13 @@ typing-extensions==4.8.0
238
238
  # snowflake-connector-python
239
239
  unicodecsv==0.14.1
240
240
  # via -r requirements/reporting.in
241
- urllib3==1.26.16
241
+ urllib3==1.26.18
242
242
  # via
243
243
  # botocore
244
244
  # py2neo
245
245
  # requests
246
246
  # snowflake-connector-python
247
- vertica-python==1.3.5
247
+ vertica-python==1.3.6
248
248
  # via -r requirements/reporting.in
249
249
  vine==1.3.0
250
250
  # via
@@ -4,17 +4,17 @@
4
4
  #
5
5
  # make upgrade
6
6
  #
7
- coverage==7.3.1
7
+ coverage==7.3.2
8
8
  # via -r requirements/ci.in
9
9
  distlib==0.3.7
10
10
  # via virtualenv
11
- filelock==3.12.4
11
+ filelock==3.13.1
12
12
  # via
13
13
  # tox
14
14
  # virtualenv
15
- packaging==23.1
15
+ packaging==23.2
16
16
  # via tox
17
- platformdirs==3.10.0
17
+ platformdirs==3.11.0
18
18
  # via virtualenv
19
19
  pluggy==1.3.0
20
20
  # via tox
@@ -29,8 +29,5 @@ tox==3.28.0
29
29
  # -c requirements/common_constraints.txt
30
30
  # -c requirements/constraints.txt
31
31
  # -r requirements/ci.in
32
- # tox-battery
33
- tox-battery==0.6.2
34
- # via -r requirements/ci.in
35
- virtualenv==20.24.5
32
+ virtualenv==20.24.6
36
33
  # via tox
@@ -12,19 +12,19 @@ asn1crypto==1.5.1
12
12
  # via
13
13
  # oscrypto
14
14
  # snowflake-connector-python
15
- astroid==2.15.7
15
+ astroid==3.0.1
16
16
  # via
17
17
  # pylint
18
18
  # pylint-celery
19
- awscli==1.29.53
19
+ awscli==1.29.74
20
20
  # via -r requirements/reporting.in
21
21
  bcrypt==4.0.1
22
22
  # via paramiko
23
23
  billiard==3.6.4.0
24
24
  # via celery
25
- boto3==1.28.53
25
+ boto3==1.28.74
26
26
  # via -r requirements/reporting.in
27
- botocore==1.31.53
27
+ botocore==1.31.74
28
28
  # via
29
29
  # awscli
30
30
  # boto3
@@ -38,14 +38,14 @@ certifi==2023.7.22
38
38
  # py2neo
39
39
  # requests
40
40
  # snowflake-connector-python
41
- cffi==1.15.1
41
+ cffi==1.16.0
42
42
  # via
43
43
  # cryptography
44
44
  # pynacl
45
45
  # snowflake-connector-python
46
46
  chardet==5.2.0
47
47
  # via diff-cover
48
- charset-normalizer==3.2.0
48
+ charset-normalizer==3.3.1
49
49
  # via
50
50
  # requests
51
51
  # snowflake-connector-python
@@ -62,7 +62,7 @@ code-annotations==1.5.0
62
62
  # via edx-lint
63
63
  colorama==0.4.4
64
64
  # via awscli
65
- cryptography==41.0.4
65
+ cryptography==41.0.5
66
66
  # via
67
67
  # -r requirements/reporting.in
68
68
  # django-fernet-fields-v2
@@ -70,14 +70,15 @@ cryptography==41.0.4
70
70
  # pgpy
71
71
  # pyjwt
72
72
  # pyopenssl
73
+ # secretstorage
73
74
  # snowflake-connector-python
74
- diff-cover==7.7.0
75
+ diff-cover==8.0.0
75
76
  # via -r requirements/dev-enterprise_data.in
76
77
  dill==0.3.7
77
78
  # via pylint
78
79
  distlib==0.3.7
79
80
  # via virtualenv
80
- django==3.2.21
81
+ django==3.2.22
81
82
  # via
82
83
  # -c requirements/common_constraints.txt
83
84
  # -r requirements/base.in
@@ -123,13 +124,13 @@ edx-django-utils==5.7.0
123
124
  # -r requirements/base.in
124
125
  # edx-drf-extensions
125
126
  # edx-rest-api-client
126
- edx-drf-extensions==8.10.0
127
+ edx-drf-extensions==8.12.0
127
128
  # via
128
129
  # -r requirements/base.in
129
130
  # edx-rbac
130
- edx-i18n-tools==1.2.0
131
+ edx-i18n-tools==1.3.0
131
132
  # via -r requirements/dev-enterprise_data.in
132
- edx-lint==5.3.4
133
+ edx-lint==5.3.6
133
134
  # via
134
135
  # -r requirements/dev-enterprise_data.in
135
136
  # -r requirements/quality.in
@@ -139,13 +140,13 @@ edx-opaque-keys==2.5.1
139
140
  # edx-drf-extensions
140
141
  edx-rbac==1.8.0
141
142
  # via -r requirements/base.in
142
- edx-rest-api-client==5.6.0
143
+ edx-rest-api-client==5.6.1
143
144
  # via -r requirements/base.in
144
145
  factory-boy==3.3.0
145
146
  # via -r requirements/base.in
146
- faker==19.6.2
147
+ faker==19.12.0
147
148
  # via factory-boy
148
- filelock==3.12.4
149
+ filelock==3.13.1
149
150
  # via
150
151
  # snowflake-connector-python
151
152
  # tox
@@ -169,6 +170,10 @@ isort==5.12.0
169
170
  # pylint
170
171
  jaraco-classes==3.3.0
171
172
  # via keyring
173
+ jeepney==0.8.0
174
+ # via
175
+ # keyring
176
+ # secretstorage
172
177
  jinja2==3.1.2
173
178
  # via
174
179
  # code-annotations
@@ -181,8 +186,8 @@ keyring==24.2.0
181
186
  # via twine
182
187
  kombu==4.6.11
183
188
  # via celery
184
- lazy-object-proxy==1.9.0
185
- # via astroid
189
+ lxml==4.9.3
190
+ # via edx-i18n-tools
186
191
  markdown-it-py==3.0.0
187
192
  # via rich
188
193
  markupsafe==2.1.3
@@ -195,13 +200,13 @@ monotonic==1.6
195
200
  # via py2neo
196
201
  more-itertools==10.1.0
197
202
  # via jaraco-classes
198
- newrelic==9.0.0
203
+ newrelic==9.1.1
199
204
  # via edx-django-utils
200
205
  nh3==0.2.14
201
206
  # via readme-renderer
202
207
  oscrypto==1.3.0
203
208
  # via snowflake-connector-python
204
- packaging==23.1
209
+ packaging==23.2
205
210
  # via
206
211
  # build
207
212
  # py2neo
@@ -221,7 +226,7 @@ pip-tools==7.3.0
221
226
  # via -r requirements/dev-enterprise_data.in
222
227
  pkginfo==1.9.6
223
228
  # via twine
224
- platformdirs==3.8.1
229
+ platformdirs==3.11.0
225
230
  # via
226
231
  # pylint
227
232
  # snowflake-connector-python
@@ -232,17 +237,17 @@ pluggy==1.3.0
232
237
  # tox
233
238
  polib==1.2.0
234
239
  # via edx-i18n-tools
235
- psutil==5.9.5
240
+ psutil==5.9.6
236
241
  # via edx-django-utils
237
242
  py==1.11.0
238
243
  # via tox
239
- py2neo==2021.2.3
244
+ py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz
240
245
  # via -r requirements/reporting.in
241
246
  pyasn1==0.5.0
242
247
  # via
243
248
  # pgpy
244
249
  # rsa
245
- pycodestyle==2.11.0
250
+ pycodestyle==2.11.1
246
251
  # via -r requirements/quality.in
247
252
  pycparser==2.21
248
253
  # via cffi
@@ -262,7 +267,7 @@ pyjwt[crypto]==2.8.0
262
267
  # edx-drf-extensions
263
268
  # edx-rest-api-client
264
269
  # snowflake-connector-python
265
- pylint==2.17.5
270
+ pylint==3.0.2
266
271
  # via
267
272
  # edx-lint
268
273
  # pylint-celery
@@ -270,7 +275,7 @@ pylint==2.17.5
270
275
  # pylint-plugin-utils
271
276
  pylint-celery==0.3
272
277
  # via edx-lint
273
- pylint-django==2.5.3
278
+ pylint-django==2.5.5
274
279
  # via edx-lint
275
280
  pylint-plugin-utils==0.8.2
276
281
  # via
@@ -284,7 +289,7 @@ pynacl==1.5.0
284
289
  # via
285
290
  # edx-django-utils
286
291
  # paramiko
287
- pyopenssl==23.2.0
292
+ pyopenssl==23.3.0
288
293
  # via snowflake-connector-python
289
294
  pyproject-hooks==1.0.0
290
295
  # via build
@@ -322,16 +327,18 @@ requests-toolbelt==1.0.0
322
327
  # via twine
323
328
  rfc3986==2.0.0
324
329
  # via twine
325
- rich==13.5.3
330
+ rich==13.6.0
326
331
  # via twine
327
332
  rsa==4.7.2
328
333
  # via awscli
329
334
  rules==3.3
330
335
  # via -r requirements/base.in
331
- s3transfer==0.6.2
336
+ s3transfer==0.7.0
332
337
  # via
333
338
  # awscli
334
339
  # boto3
340
+ secretstorage==3.3.3
341
+ # via keyring
335
342
  semantic-version==2.10.0
336
343
  # via edx-drf-extensions
337
344
  six==1.16.0
@@ -348,7 +355,7 @@ slumber==0.7.1
348
355
  # via edx-rest-api-client
349
356
  snowballstemmer==2.2.0
350
357
  # via pydocstyle
351
- snowflake-connector-python==3.2.0
358
+ snowflake-connector-python==3.3.1
352
359
  # via -r requirements/reporting.in
353
360
  sortedcontainers==2.4.0
354
361
  # via snowflake-connector-python
@@ -359,7 +366,7 @@ stevedore==5.1.0
359
366
  # code-annotations
360
367
  # edx-django-utils
361
368
  # edx-opaque-keys
362
- testfixtures==7.2.0
369
+ testfixtures==7.2.2
363
370
  # via -r requirements/quality.in
364
371
  text-unidecode==1.3
365
372
  # via python-slugify
@@ -379,9 +386,6 @@ tox==3.28.0
379
386
  # -c requirements/common_constraints.txt
380
387
  # -c requirements/constraints.txt
381
388
  # -r requirements/dev-enterprise_data.in
382
- # tox-battery
383
- tox-battery==0.6.2
384
- # via -r requirements/dev-enterprise_data.in
385
389
  twine==4.0.2
386
390
  # via -r requirements/dev-enterprise_data.in
387
391
  typing-extensions==4.8.0
@@ -395,27 +399,25 @@ typing-extensions==4.8.0
395
399
  # snowflake-connector-python
396
400
  unicodecsv==0.14.1
397
401
  # via -r requirements/reporting.in
398
- urllib3==1.26.16
402
+ urllib3==1.26.18
399
403
  # via
400
404
  # botocore
401
405
  # py2neo
402
406
  # requests
403
407
  # snowflake-connector-python
404
408
  # twine
405
- vertica-python==1.3.5
409
+ vertica-python==1.3.6
406
410
  # via -r requirements/reporting.in
407
411
  vine==1.3.0
408
412
  # via
409
413
  # amqp
410
414
  # celery
411
- virtualenv==20.24.1
415
+ virtualenv==20.24.6
412
416
  # via tox
413
- wheel==0.41.2
417
+ wheel==0.41.3
414
418
  # via
415
419
  # -r requirements/dev-enterprise_data.in
416
420
  # pip-tools
417
- wrapt==1.15.0
418
- # via astroid
419
421
  zipp==3.17.0
420
422
  # via
421
423
  # importlib-metadata
@@ -0,0 +1 @@
1
+ django==3.2.22
@@ -4,11 +4,11 @@
4
4
  #
5
5
  # make upgrade
6
6
  #
7
- wheel==0.41.2
7
+ wheel==0.41.3
8
8
  # via -r requirements/pip.in
9
9
 
10
10
  # The following packages are considered to be unsafe in a requirements file:
11
- pip==23.2.1
11
+ pip==23.3.1
12
12
  # via -r requirements/pip.in
13
13
  setuptools==68.2.2
14
14
  # via -r requirements/pip.in
@@ -10,7 +10,7 @@ click==8.1.7
10
10
  # via pip-tools
11
11
  importlib-metadata==6.8.0
12
12
  # via build
13
- packaging==23.1
13
+ packaging==23.2
14
14
  # via build
15
15
  pip-tools==7.3.0
16
16
  # via -r requirements/pip_tools.in
@@ -21,7 +21,7 @@ tomli==2.0.1
21
21
  # build
22
22
  # pip-tools
23
23
  # pyproject-hooks
24
- wheel==0.41.2
24
+ wheel==0.41.3
25
25
  # via pip-tools
26
26
  zipp==3.17.0
27
27
  # via importlib-metadata