edx-enterprise-data 9.9.1__tar.gz → 9.9.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.
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/CHANGELOG.rst +4 -0
- {edx_enterprise_data-9.9.1/edx_enterprise_data.egg-info → edx_enterprise_data-9.9.2}/PKG-INFO +1 -1
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2/edx_enterprise_data.egg-info}/PKG-INFO +1 -1
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/__init__.py +1 -1
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/serializers.py +51 -2
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/renderers.py +1 -1
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/LICENSE +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/MANIFEST.in +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/README.md +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/SOURCES.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/dependency_links.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/not-zip-safe +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/requires.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/top_level.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/constants.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/data_loaders.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/queries/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/tables/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/tables/base.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/tables/fact_enrollment_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/tables/skills_daily_rollup_admin_dash.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/database/utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/urls.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v0/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v0/serializers.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v0/urls.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v0/views.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/urls.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/analytics_completions.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/analytics_engagements.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/analytics_enrollments.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/analytics_leaderboard.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/base.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/enterprise_admin.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/enterprise_learner.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/enterprise_offers.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/apps.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/cache/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/cache/decorators.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/clients.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/constants.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/filters.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/fixtures/enterprise_enrollment.json +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/fixtures/enterprise_user.json +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_dummy_data.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_enterprise_offer.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/create_enterprise_user.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/pre_warm_analytics_cache.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_create_dummy_data_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_create_enterprise_enrollment.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_create_enterprise_learner_lpr_v1.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_create_enterprise_user.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/commands/tests/test_pre_warm_analytics_cache.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0002_auto_20180430_1358.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0003_auto_20180501_0603.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0004_auto_20180501_0928.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0004_auto_20180508_1652.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0005_auto_20180524_2204.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0006_auto_20180612_0336.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0007_auto_20180612_0534.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0008_auto_20180614_0108.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0009_auto_20180628_1152.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0010_enterpriseenrollment_created.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0011_enterpriseuser.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0012_auto_20180831_1930.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0013_auto_20180831_1931.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0014_enterpriseuser_created.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0015_auto_20180907_1757.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0016_auto_20180924_2138.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0017_enterpriseenrollment_unenrollment_timestamp.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0018_enterprisedatafeaturerole_enterprisedataroleassignment.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0019_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0020_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0021_auto_20190329_1241.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0022_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0023_enterpriselearner_enterpriselearnerenrollment.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0024_auto_20210602_1811.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0025_auto_20210703_1854.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0026_auto_20210916_0414.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0027_enterpriselearnerenrollment_total_learning_time_seconds.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0028_enterpriselearnerenrollment_offer_id.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0029_enterpriseoffer.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0030_auto_20230609_1353.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0031_auto_20230615_0705.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0032_auto_20230704_0818.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0033_enterpriseadminlearnerprogress_enterpriseadminsummarizeinsights.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0034_auto_20230907_0834.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0035_auto_20230907_1154.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0039_auto_20240212_1403.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0040_auto_20240718_0536_squashed_0043_alter_enterpriselearnerenrollment_enterprise_enrollment_id.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0044_enterpriseexecedlcmoduleperformance.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0045_alter_enterpriseexecedlcmoduleperformance_options_and_more.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0046_enterprisegroupmembership.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0047_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0048_alter_enterpriseexecedlcmoduleperformance_avg_after_lo_score_and_more.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/models.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/paginators.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/settings/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/settings/test.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/signals.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/mock_analytics_data.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/mock_enrollments.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/test_analytics_engagements.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/test_analytics_enrollments.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/test_analytics_leaderboard.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/test_data_loaders.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/admin_analytics/test_enterprise_completions.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v0/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v0/test_serializers.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/test_serializers.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/test_views.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/views/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/views/test_enterprise_admin.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/factories.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/mixins.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_clients.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_filters.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_models.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_views.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/urls.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/admin.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/apps.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/constants.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0001_initial.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0002_add_enterprise_data_feature_roles.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0003_add_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0004_enterprisedataroleassignment_enterprise_id.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0005_turn_on_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0006_remove_role_based_access_control_switch.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/0007_enterprisedataroleassignment_applies_to_all_contexts.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/models.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/rules.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/factories.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/test_models.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/enterprise.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/s3.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/snowflake.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/vertica.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/delivery_method.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/external_resource_link_report.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/fixtures/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/fixtures/enterprise_customer_reporting.json +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/reporter.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/send_enterprise_reports.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/__init__.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_clients.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_delivery_method.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_enterprise_client.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_external_link_report.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_reporter.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_send_enterprise_reports.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_vertica_client.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/utils.py +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/base.in +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/base.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/ci.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/common_constraints.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/constraints.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/dev.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/django.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/pip.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/pip_tools.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/quality.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/reporting.in +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/test-master.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/test-reporting.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/requirements/test.txt +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/setup.cfg +0 -0
- {edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/setup.py +0 -0
@@ -16,6 +16,10 @@ Unreleased
|
|
16
16
|
|
17
17
|
=========================
|
18
18
|
|
19
|
+
[10.9.2] - 2025-03-11
|
20
|
+
---------------------
|
21
|
+
* feat: support flex groups in csv report on LPR.
|
22
|
+
|
19
23
|
[10.9.0] - 2025-02-24
|
20
24
|
---------------------
|
21
25
|
* feat: get groups data from membership endpoint using enterprise client.
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/serializers.py
RENAMED
@@ -6,6 +6,7 @@ from uuid import UUID
|
|
6
6
|
from rest_framework import serializers
|
7
7
|
|
8
8
|
from enterprise_data.admin_analytics.constants import ResponseType
|
9
|
+
from enterprise_data.cache.decorators import cache_it
|
9
10
|
from enterprise_data.models import (
|
10
11
|
EnterpriseAdminLearnerProgress,
|
11
12
|
EnterpriseAdminSummarizeInsights,
|
@@ -26,6 +27,8 @@ class EnterpriseLearnerEnrollmentSerializer(serializers.ModelSerializer):
|
|
26
27
|
course_api_url = serializers.SerializerMethodField()
|
27
28
|
enterprise_user_id = serializers.SerializerMethodField()
|
28
29
|
total_learning_time_hours = serializers.SerializerMethodField()
|
30
|
+
enterprise_flex_group_name = serializers.SerializerMethodField()
|
31
|
+
enterprise_flex_group_uuid = serializers.SerializerMethodField()
|
29
32
|
|
30
33
|
class Meta:
|
31
34
|
model = EnterpriseLearnerEnrollment
|
@@ -44,8 +47,9 @@ class EnterpriseLearnerEnrollmentSerializer(serializers.ModelSerializer):
|
|
44
47
|
'last_activity_date', 'progress_status', 'passed_date', 'current_grade',
|
45
48
|
'letter_grade', 'enterprise_user_id', 'user_email', 'user_account_creation_date',
|
46
49
|
'user_country_code', 'user_username', 'user_first_name', 'user_last_name', 'enterprise_name',
|
47
|
-
'enterprise_customer_uuid', 'enterprise_sso_uid', 'created', 'course_api_url',
|
48
|
-
'
|
50
|
+
'enterprise_customer_uuid', 'enterprise_sso_uid', 'created', 'course_api_url',
|
51
|
+
'total_learning_time_hours', 'is_subsidy', 'course_product_line', 'budget_id',
|
52
|
+
'enterprise_flex_group_name', 'enterprise_flex_group_uuid',
|
49
53
|
)
|
50
54
|
|
51
55
|
def get_course_api_url(self, obj):
|
@@ -62,6 +66,51 @@ class EnterpriseLearnerEnrollmentSerializer(serializers.ModelSerializer):
|
|
62
66
|
"""Returns the learners total learning time in hours"""
|
63
67
|
return round((obj.total_learning_time_seconds or 0.0)/3600.0, 2)
|
64
68
|
|
69
|
+
@cache_it()
|
70
|
+
def _get_flex_groups(self, obj):
|
71
|
+
"""
|
72
|
+
Returns list of tuples containing group (name, uuid) pairs for the learner.
|
73
|
+
This is cached to prevent duplicate database queries.
|
74
|
+
"""
|
75
|
+
enterprise_user_id = obj.enterprise_user_id
|
76
|
+
|
77
|
+
if not enterprise_user_id:
|
78
|
+
return []
|
79
|
+
|
80
|
+
# Get all group memberships for this user in a single query
|
81
|
+
# Order by name for consistent ordering
|
82
|
+
return list(
|
83
|
+
EnterpriseGroupMembership.objects.filter(
|
84
|
+
enterprise_customer_user_id=enterprise_user_id,
|
85
|
+
membership_is_removed=False,
|
86
|
+
group_is_removed=False,
|
87
|
+
group_type="flex",
|
88
|
+
)
|
89
|
+
.order_by("enterprise_group_name")
|
90
|
+
.values_list("enterprise_group_name", "enterprise_group_uuid")
|
91
|
+
.distinct()
|
92
|
+
)
|
93
|
+
|
94
|
+
def get_enterprise_flex_group_name(self, obj):
|
95
|
+
"""Returns a comma-separated list of enterprise group names that the learner is associated with"""
|
96
|
+
groups = self._get_flex_groups(obj)
|
97
|
+
|
98
|
+
if not groups:
|
99
|
+
return obj.enterprise_group_name
|
100
|
+
|
101
|
+
# Return comma-separated list of group names (first element of each tuple)
|
102
|
+
return ', '.join(group[0] for group in groups)
|
103
|
+
|
104
|
+
def get_enterprise_flex_group_uuid(self, obj):
|
105
|
+
"""Returns a comma-separated list of enterprise group UUIDs that the learner is associated with"""
|
106
|
+
groups = self._get_flex_groups(obj)
|
107
|
+
|
108
|
+
if not groups:
|
109
|
+
return obj.enterprise_group_uuid
|
110
|
+
|
111
|
+
# Return comma-separated list of group UUIDs (second element of each tuple)
|
112
|
+
return ', '.join(str(group[1]) for group in groups)
|
113
|
+
|
65
114
|
|
66
115
|
class EnterpriseSubsidyBudgetSerializer(serializers.ModelSerializer):
|
67
116
|
"""
|
@@ -27,7 +27,7 @@ class EnrollmentsCSVRenderer(CSVStreamingRenderer):
|
|
27
27
|
'letter_grade', 'enterprise_user_id', 'user_email', 'user_account_creation_date',
|
28
28
|
'user_country_code', 'user_username', 'user_first_name', 'user_last_name', 'enterprise_name',
|
29
29
|
'enterprise_customer_uuid', 'enterprise_sso_uid', 'created', 'course_api_url', 'total_learning_time_hours',
|
30
|
-
'is_subsidy', 'course_product_line', 'budget_id', '
|
30
|
+
'is_subsidy', 'course_product_line', 'budget_id', 'enterprise_flex_group_name', 'enterprise_flex_group_uuid',
|
31
31
|
]
|
32
32
|
|
33
33
|
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/not-zip-safe
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/requires.txt
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/edx_enterprise_data.egg-info/top_level.txt
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/__init__.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/admin_analytics/constants.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v0/serializers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/api/v1/views/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/management/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/0001_initial.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/migrations/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/settings/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/__init__.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v0/__init__.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/__init__.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/api/v1/test_views.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_clients.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_filters.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data/tests/test_models.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/migrations/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/__init__.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/factories.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_data_roles/tests/test_models.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/__init__.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/enterprise.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/snowflake.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/clients/vertica.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/delivery_method.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/fixtures/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/__init__.py
RENAMED
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_clients.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_reporter.py
RENAMED
File without changes
|
File without changes
|
{edx_enterprise_data-9.9.1 → edx_enterprise_data-9.9.2}/enterprise_reporting/tests/test_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|