edx-enterprise-data 6.2.3__py3-none-any.whl → 7.0.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: 6.2.3
3
+ Version: 7.0.0
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -1,14 +1,14 @@
1
- enterprise_data/__init__.py,sha256=Cf0lU4ksiviqhFzy4aVtBks4XHnQLxV3WcokMyCQn4Q,123
1
+ enterprise_data/__init__.py,sha256=nWXJGOIMpRKA2rw4gS921qQoQfhaFBo7vGbY0-zVI04,123
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
5
5
  enterprise_data/filters.py,sha256=D2EiK12MMpBoz6eOUmTpoJEhj_sH7bA93NRRAdvkDVo,6163
6
- enterprise_data/models.py,sha256=5QV4efMK1zlRIZZ7MWM5G2yWRgs3yUHHWfj5IWrrbdY,18765
6
+ enterprise_data/models.py,sha256=3VHJ5eWfI0KZxh5u969E7uA2nE5VZqyUnk_VV--UTI4,19154
7
7
  enterprise_data/paginators.py,sha256=YPrC5TeXFt-ymenT2H8H2nCbDCnAzJQlH9kFPElRxWE,269
8
- enterprise_data/renderers.py,sha256=8ZErid5abB1_2QWbWEhdrqnSNa834FBhrLxM6x4_Xv0,1719
8
+ enterprise_data/renderers.py,sha256=WVt0qy9Ippdnl404Zsq-MruB9oQfY6h87ZzpScYBeaw,1770
9
9
  enterprise_data/signals.py,sha256=8eqNPnlvmfsKf19lGWv5xTIuBgQIqR8EZSp9UYzC8Rc,1024
10
10
  enterprise_data/urls.py,sha256=bqtKF5OEWEwrNmHG3os-pZNuNsmjlhxEqp7yM4TbPf4,243
11
- enterprise_data/utils.py,sha256=5GrhqmlC28ogRkvHPFJmVR9xB13bdA2Zt6segUGUEyc,830
11
+ enterprise_data/utils.py,sha256=JdJDCzpbaQgdOrdMR8RqwveIUlB3bN5uZTn1ez9dcqs,952
12
12
  enterprise_data/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  enterprise_data/api/urls.py,sha256=POqc_KATHdnpMf9zHtpO46pKD5KAlAExtx7G6iylLcU,273
14
14
  enterprise_data/api/v0/__init__.py,sha256=1aAzAYU5hk-RW6cKUxa1645cbZMxn7GIZ7OMjWc9MKI,46
@@ -16,7 +16,7 @@ enterprise_data/api/v0/serializers.py,sha256=dngZTk6DhRxApchQKCMp1B_c8aVnQtH0NCq
16
16
  enterprise_data/api/v0/urls.py,sha256=vzJjqIo_S3AXWs9Us8XTaJc3FnxLbYzAkmLyuDQqum0,699
17
17
  enterprise_data/api/v0/views.py,sha256=4RslZ4NZOU-844bnebEQ71ji2utRY7jEijqC45oQQD0,14380
18
18
  enterprise_data/api/v1/__init__.py,sha256=1aAzAYU5hk-RW6cKUxa1645cbZMxn7GIZ7OMjWc9MKI,46
19
- enterprise_data/api/v1/serializers.py,sha256=A-X-XT-ykaMGehrlZquw0TvWB8kwFvY3GEnH6A_tpjA,7484
19
+ enterprise_data/api/v1/serializers.py,sha256=iRPdUnkAVcoJQVWdxQDtIFQJdLftnpjGNJlavMExWmg,7535
20
20
  enterprise_data/api/v1/urls.py,sha256=Vev34sBjvDSqGUuQQGTu-1ft-ISYUPO_GTOpx0RTiEA,1106
21
21
  enterprise_data/api/v1/views.py,sha256=gEPEkWFmS8n_nN5gk_MBRO9pkc2QwhS3OxPAVKxt08Q,22434
22
22
  enterprise_data/fixtures/enterprise_enrollment.json,sha256=6onPXXR29pMdTdbl_mn81sDi3Re5jkLUZz2TPMB_1IY,5786
@@ -76,6 +76,7 @@ enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_di
76
76
  enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py,sha256=MF9-RRhCR1efO51UPgSn746V5EnymdwNYrL8dA_P7Q8,471
77
77
  enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py,sha256=8St3DsKb-VI3LGGC-Mc7OvmFn67kVob0HKCPGKcjvu4,436
78
78
  enterprise_data/migrations/0039_auto_20240212_1403.py,sha256=rMiJcYx26ZGqPdQzgiWkUgbcRhD-tp9BgXdgt67vC2Q,1002
79
+ enterprise_data/migrations/0040_auto_20240712_0740.py,sha256=BgY4RoXAIgPqufwCFkOgi38fbTPwcjMPXMTypebAgKY,1492
79
80
  enterprise_data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
81
  enterprise_data/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
82
  enterprise_data/settings/test.py,sha256=RR6qIff09dgzx-Csj2U6oM2j4gwUfOXGwyss_WcN6CY,4018
@@ -133,8 +134,8 @@ enterprise_reporting/tests/test_send_enterprise_reports.py,sha256=WtL-RqGgu2x5PP
133
134
  enterprise_reporting/tests/test_utils.py,sha256=7Y5GmeibiC8Q5kIpYuIAkFpeyIDRs2U3ItxsabhR1zM,9493
134
135
  enterprise_reporting/tests/test_vertica_client.py,sha256=-R2yNCGUjRtoXwLMBloVFQkFYrJoo613VCr61gwI3kQ,140
135
136
  enterprise_reporting/tests/utils.py,sha256=xms2LM7DV3wczXEfctOK1ddel1EE0J_YSr17UzbCDy4,1401
136
- edx_enterprise_data-6.2.3.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
137
- edx_enterprise_data-6.2.3.dist-info/METADATA,sha256=jCCIOYZnvZp5FFOmB_zi7w6cel7BFSJMTofPpg2AS7Q,1486
138
- edx_enterprise_data-6.2.3.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
139
- edx_enterprise_data-6.2.3.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
140
- edx_enterprise_data-6.2.3.dist-info/RECORD,,
137
+ edx_enterprise_data-7.0.0.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
138
+ edx_enterprise_data-7.0.0.dist-info/METADATA,sha256=gOOPz06b4b_xSeT-KAF2liB-knu90YX9eTgo3enG-mk,1486
139
+ edx_enterprise_data-7.0.0.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
140
+ edx_enterprise_data-7.0.0.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
141
+ edx_enterprise_data-7.0.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__ = "6.2.3"
5
+ __version__ = "7.0.0"
@@ -41,7 +41,7 @@ class EnterpriseLearnerEnrollmentSerializer(serializers.ModelSerializer):
41
41
  'letter_grade', 'enterprise_user_id', 'user_email', 'user_account_creation_date',
42
42
  'user_country_code', 'user_username', 'enterprise_name', 'enterprise_customer_uuid',
43
43
  'enterprise_sso_uid', 'created', 'course_api_url', 'total_learning_time_hours', 'is_subsidy',
44
- 'course_product_line', 'budget_id'
44
+ 'course_product_line', 'budget_id', 'enterprise_group_name', 'enterprise_group_uuid',
45
45
  )
46
46
 
47
47
  def get_course_api_url(self, obj):
@@ -0,0 +1,45 @@
1
+ # Generated by Django 3.2.23 on 2024-07-12 07:40
2
+
3
+ from django.db import migrations, models
4
+
5
+ import enterprise_data.utils
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ('enterprise_data', '0039_auto_20240212_1403'),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.AddField(
16
+ model_name='enterpriselearnerenrollment',
17
+ name='enterprise_group_name',
18
+ field=models.CharField(max_length=25, null=True),
19
+ ),
20
+ migrations.AddField(
21
+ model_name='enterpriselearnerenrollment',
22
+ name='enterprise_group_uuid',
23
+ field=models.UUIDField(null=True),
24
+ ),
25
+ migrations.AddField(
26
+ model_name='enterpriselearnerenrollment',
27
+ name='is_included_in_utilization',
28
+ field=models.BooleanField(default=False),
29
+ ),
30
+ migrations.AddField(
31
+ model_name='enterpriselearnerenrollment',
32
+ name='lpr_unique_id',
33
+ field=models.PositiveBigIntegerField(default=enterprise_data.utils.get_unique_id, primary_key=True, serialize=False),
34
+ ),
35
+ migrations.AddField(
36
+ model_name='enterpriselearnerenrollment',
37
+ name='subscription_license_uuid',
38
+ field=models.UUIDField(null=True),
39
+ ),
40
+ migrations.AlterField(
41
+ model_name='enterpriselearnerenrollment',
42
+ name='enterprise_enrollment_id',
43
+ field=models.PositiveIntegerField(null=True),
44
+ ),
45
+ ]
enterprise_data/models.py CHANGED
@@ -9,6 +9,8 @@ from django.conf import settings
9
9
  from django.db import models
10
10
  from django.utils.translation import gettext_lazy as _
11
11
 
12
+ from enterprise_data.utils import get_unique_id
13
+
12
14
  LOGGER = getLogger(__name__)
13
15
 
14
16
 
@@ -78,7 +80,7 @@ class EnterpriseLearnerEnrollment(models.Model):
78
80
  ]),
79
81
  ]
80
82
 
81
- enterprise_enrollment_id = models.PositiveIntegerField(primary_key=True)
83
+ enterprise_enrollment_id = models.PositiveIntegerField(null=True)
82
84
  enrollment_id = models.PositiveIntegerField(null=True)
83
85
  is_consent_granted = models.BooleanField(default=False)
84
86
  paid_by = models.CharField(max_length=255, null=True)
@@ -133,6 +135,11 @@ class EnterpriseLearnerEnrollment(models.Model):
133
135
  is_subsidy = models.BooleanField(default=False)
134
136
  course_product_line = models.CharField(max_length=64, null=True)
135
137
  budget_id = models.UUIDField(db_index=True, null=True)
138
+ is_included_in_utilization = models.BooleanField(default=False)
139
+ lpr_unique_id = models.PositiveBigIntegerField(primary_key=True, default=get_unique_id)
140
+ subscription_license_uuid = models.UUIDField(null=True)
141
+ enterprise_group_name = models.CharField(max_length=25, null=True)
142
+ enterprise_group_uuid = models.UUIDField(null=True)
136
143
 
137
144
 
138
145
  class EnterpriseAdminLearnerProgress(models.Model):
@@ -27,5 +27,5 @@ class EnrollmentsCSVRenderer(CSVStreamingRenderer):
27
27
  'letter_grade', 'enterprise_user_id', 'user_email', 'user_account_creation_date',
28
28
  'user_country_code', 'user_username', 'enterprise_name', 'enterprise_customer_uuid',
29
29
  'enterprise_sso_uid', 'created', 'course_api_url', 'total_learning_time_hours', 'is_subsidy',
30
- 'course_product_line', 'budget_id'
30
+ 'course_product_line', 'budget_id', 'enterprise_group_name', 'enterprise_group_uuid',
31
31
  ]
enterprise_data/utils.py CHANGED
@@ -2,8 +2,8 @@
2
2
  Utility functions for Enterprise Data app.
3
3
  """
4
4
 
5
-
6
5
  import hashlib
6
+ import random
7
7
 
8
8
 
9
9
  def get_cache_key(**kwargs):
@@ -28,3 +28,10 @@ def get_cache_key(**kwargs):
28
28
  key = '__'.join([f'{item}:{value}' for item, value in kwargs.items()])
29
29
 
30
30
  return hashlib.md5(key.encode('utf-8')).hexdigest()
31
+
32
+
33
+ def get_unique_id():
34
+ """
35
+ Return a unique 32 bit integer.
36
+ """
37
+ return random.getrandbits(32)