edx-enterprise-data 10.3.0__py3-none-any.whl → 10.5.0__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 10.3.0
3
+ Version: 10.5.0
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -1,4 +1,4 @@
1
- enterprise_data/__init__.py,sha256=6rH0qHB00YhC1K50WQ5dAUe_C5igFqH4ZSxJxVLLZZA,124
1
+ enterprise_data/__init__.py,sha256=1DMl4Lfvq6a_vx3eealaLHXCC6ceqdFe0k5-OHliKHQ,124
2
2
  enterprise_data/apps.py,sha256=aF6hZwDfI2oWj95tUTm_2ikHueQj-jLj-u0GrgzpsQI,414
3
3
  enterprise_data/clients.py,sha256=GvQupy5TVYfO_IKC3yzXSAgNP54r-PtIjidM5ws9Iks,3947
4
4
  enterprise_data/constants.py,sha256=uCKjfpdlMYFZJsAj3n9RMw4Cmg5_6s3NuwocO-fch3s,238
@@ -17,10 +17,10 @@ enterprise_data/admin_analytics/database/utils.py,sha256=5u-d6ZQW95mF_r4bH8Xdi7D
17
17
  enterprise_data/admin_analytics/database/queries/__init__.py,sha256=IC5TLOr_GnydbrVbl2mWhwO3aUbYeHuDmfPTLmwGhZA,218
18
18
  enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py,sha256=eLy9GT0gFGLbw8yZZdEaeCAw0pTEUsy0-Ud5g2T9T80,10836
19
19
  enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py,sha256=w30BiDOcKzV_FCdtxIG-_7zSCu5f3x5pgBRFCGjHu04,11011
20
- enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py,sha256=PgWwvtVCK5lbiq6z44lH0fwbkdWYukhyXZL9X8lNWCY,4099
20
+ enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py,sha256=ZaJPghTrQvBGsFxfpeR8EE45ujtaYI9R_xkoDDqD2So,4269
21
21
  enterprise_data/admin_analytics/database/tables/__init__.py,sha256=Z-c3P9hqR-dC9uYKe63qHkQG9Nms8cLE2jRN-4jeMM0,289
22
22
  enterprise_data/admin_analytics/database/tables/base.py,sha256=1KyKsC18pW3m-5U-T6pdt5rIwsz6Wp3QFFbD3r6L6YQ,395
23
- enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py,sha256=675LqIERXTbQ3m2deoj10Xsm88nnEzepIRvJMYKHbl8,12840
23
+ enterprise_data/admin_analytics/database/tables/fact_engagement_admin_dash.py,sha256=VMUGwfrUsYd_NnxEDNBovAmHwhdTCSImGA6JjHzknhk,12959
24
24
  enterprise_data/admin_analytics/database/tables/fact_enrollment_admin_dash.py,sha256=cRRBFRc2p54BkW_h7GuUud-gWzJrqKep9dYgxOf7tIY,11741
25
25
  enterprise_data/admin_analytics/database/tables/skills_daily_rollup_admin_dash.py,sha256=3xNwSi0wfCyBHcXPd6-9Ujs1NUm8kmZRg_gPrZzp9nQ,3233
26
26
  enterprise_data/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -33,9 +33,9 @@ enterprise_data/api/v1/__init__.py,sha256=1aAzAYU5hk-RW6cKUxa1645cbZMxn7GIZ7OMjW
33
33
  enterprise_data/api/v1/serializers.py,sha256=oS09fMJyb3DkSc2y5TH5Yknd9NjYrlmWMRPNqBZ741U,10902
34
34
  enterprise_data/api/v1/urls.py,sha256=IpOyS9UWuyip6fw6gtrxBw9SZLOdxh3sQ2j0Gdk4eOw,4180
35
35
  enterprise_data/api/v1/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- enterprise_data/api/v1/views/analytics_completions.py,sha256=xT9ywSRNjbQNLJjsm2N4cCyAXeibXY1800uirDn1prg,6260
37
- enterprise_data/api/v1/views/analytics_engagements.py,sha256=TK6i0tSk0QObda0ysunEFzYrlsvLvSEypJRLJEi7JCk,6298
38
- enterprise_data/api/v1/views/analytics_enrollments.py,sha256=6QRjzWapvc6jP3rv2QkGzfZMR2kRcsKqY3xRkvpIyRQ,6282
36
+ enterprise_data/api/v1/views/analytics_completions.py,sha256=esFbJ5q8ssnm2Mfbc3rZXtiGHF-MeM4KQ4Ft3N7wwHU,6260
37
+ enterprise_data/api/v1/views/analytics_engagements.py,sha256=Yo-bpA-0xOQHUPTFF0jHWxjm6KpSC-l2nGxhYX0ajBk,6298
38
+ enterprise_data/api/v1/views/analytics_enrollments.py,sha256=hw87VZ0hFWpwf3QEHFn9cUgDy2s7SzsXt6Rf9TaNsS0,6282
39
39
  enterprise_data/api/v1/views/analytics_leaderboard.py,sha256=3dyo7_OhyGEEeibemBrRsUOo0jbM4LbDgV5gw3YnVig,4186
40
40
  enterprise_data/api/v1/views/base.py,sha256=Kkmd5zgEBAhvwS_GoGXSK6lgbDNwSPioYn-QbnizI3w,3416
41
41
  enterprise_data/api/v1/views/enterprise_admin.py,sha256=DyN6RS4qY8sgKNIvcx1nRmSGuPm2pLYHZeh5YHXlH2w,8209
@@ -171,8 +171,8 @@ enterprise_reporting/tests/test_send_enterprise_reports.py,sha256=WtL-RqGgu2x5PP
171
171
  enterprise_reporting/tests/test_utils.py,sha256=Zt_TA0LVb-B6fQGkUkAKKVlUKKnQh8jnw1US1jKe7g8,9493
172
172
  enterprise_reporting/tests/test_vertica_client.py,sha256=-R2yNCGUjRtoXwLMBloVFQkFYrJoo613VCr61gwI3kQ,140
173
173
  enterprise_reporting/tests/utils.py,sha256=xms2LM7DV3wczXEfctOK1ddel1EE0J_YSr17UzbCDy4,1401
174
- edx_enterprise_data-10.3.0.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
175
- edx_enterprise_data-10.3.0.dist-info/METADATA,sha256=sFZPREf5_rt-G89-sU1DVA39Pm9X7lghhR0GqDnV8fk,1505
176
- edx_enterprise_data-10.3.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
177
- edx_enterprise_data-10.3.0.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
178
- edx_enterprise_data-10.3.0.dist-info/RECORD,,
174
+ edx_enterprise_data-10.5.0.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
175
+ edx_enterprise_data-10.5.0.dist-info/METADATA,sha256=MNKe0nr_LlpBMdjw-3wAAQ0rJZNrJ_k8Z2Vtr9AUP8w,1505
176
+ edx_enterprise_data-10.5.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
177
+ edx_enterprise_data-10.5.0.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
178
+ edx_enterprise_data-10.5.0.dist-info/RECORD,,
@@ -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__ = "10.3.0"
5
+ __version__ = "10.5.0"
@@ -38,7 +38,8 @@ class SkillsDailyRollupAdminDashQueries:
38
38
  WITH TopSkills AS (
39
39
  -- Get top 10 skills by total enrollments
40
40
  SELECT
41
- skill_name
41
+ skill_name,
42
+ SUM(enrolls) AS total_enrollment_count
42
43
  FROM
43
44
  skills_daily_rollup_admin_dash
44
45
  WHERE
@@ -47,7 +48,7 @@ class SkillsDailyRollupAdminDashQueries:
47
48
  GROUP BY
48
49
  skill_name
49
50
  ORDER BY
50
- SUM(enrolls) DESC
51
+ total_enrollment_count DESC
51
52
  LIMIT 10
52
53
  )
53
54
  SELECT
@@ -70,7 +71,7 @@ class SkillsDailyRollupAdminDashQueries:
70
71
  GROUP BY
71
72
  sd.skill_name, subject_name
72
73
  ORDER BY
73
- subject_name;
74
+ total_enrollment_count DESC;
74
75
  """
75
76
 
76
77
  @staticmethod
@@ -82,7 +83,8 @@ class SkillsDailyRollupAdminDashQueries:
82
83
  WITH TopSkills AS (
83
84
  -- Get top 10 skills by total completions
84
85
  SELECT
85
- skill_name
86
+ skill_name,
87
+ SUM(completions) AS total_completion_count
86
88
  FROM
87
89
  skills_daily_rollup_admin_dash
88
90
  WHERE
@@ -91,7 +93,7 @@ class SkillsDailyRollupAdminDashQueries:
91
93
  GROUP BY
92
94
  skill_name
93
95
  ORDER BY
94
- SUM(completions) DESC
96
+ total_completion_count DESC
95
97
  LIMIT 10
96
98
  )
97
99
  SELECT
@@ -114,5 +116,5 @@ class SkillsDailyRollupAdminDashQueries:
114
116
  GROUP BY
115
117
  sd.skill_name, subject_name
116
118
  ORDER BY
117
- subject_name;
119
+ total_completion_count DESC;
118
120
  """
@@ -11,6 +11,8 @@ from ..queries import FactEngagementAdminDashQueries
11
11
  from ..utils import run_query
12
12
  from .base import BaseTable
13
13
 
14
+ NULL_EMAIL_TEXT = 'learners who have not shared consent'
15
+
14
16
 
15
17
  class FactEngagementAdminDashTable(BaseTable):
16
18
  """
@@ -327,8 +329,9 @@ class FactEngagementAdminDashTable(BaseTable):
327
329
  if include_null_email:
328
330
  engagement_data_dict['None'] = find_first(engagement_data, lambda x: x['email'] is None) or {}
329
331
  completion = find_first(completion_data, lambda x: x['email'] is None) or \
330
- {'course_completion_count': 'Unknown'}
332
+ {'course_completion_count': ''}
331
333
  engagement_data_dict['None']['course_completion_count'] = completion['course_completion_count']
334
+ engagement_data_dict['None']['email'] = NULL_EMAIL_TEXT
332
335
 
333
336
  return list(engagement_data_dict.values())
334
337
 
@@ -75,7 +75,7 @@ class AdvanceAnalyticsCompletionsView(AnalyticsPaginationMixin, ViewSet):
75
75
  )
76
76
 
77
77
  if response_type == ResponseType.CSV.value:
78
- filename = f"""individual_completions, {start_date} - {end_date}.csv"""
78
+ filename = f"""Individual Completions, {start_date} - {end_date}.csv"""
79
79
 
80
80
  return StreamingHttpResponse(
81
81
  IndividualCompletionsCSVRenderer().render(self._stream_serialized_data(
@@ -75,7 +75,7 @@ class AdvanceAnalyticsEngagementView(AnalyticsPaginationMixin, ViewSet):
75
75
  )
76
76
 
77
77
  if response_type == ResponseType.CSV.value:
78
- filename = f"""individual_engagements, {start_date} - {end_date}.csv"""
78
+ filename = f"""Individual Engagements, {start_date} - {end_date}.csv"""
79
79
 
80
80
  return StreamingHttpResponse(
81
81
  IndividualEngagementsCSVRenderer().render(self._stream_serialized_data(
@@ -74,7 +74,7 @@ class AdvanceAnalyticsEnrollmentsView(AnalyticsPaginationMixin, ViewSet):
74
74
  )
75
75
 
76
76
  if response_type == ResponseType.CSV.value:
77
- filename = f"""individual_enrollments, {start_date} - {end_date}.csv"""
77
+ filename = f"""Individual Enrollments, {start_date} - {end_date}.csv"""
78
78
 
79
79
  return StreamingHttpResponse(
80
80
  IndividualEnrollmentsCSVRenderer().render(self._stream_serialized_data(