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.
- {edx_enterprise_data-6.2.3.dist-info → edx_enterprise_data-7.0.0.dist-info}/METADATA +1 -1
- {edx_enterprise_data-6.2.3.dist-info → edx_enterprise_data-7.0.0.dist-info}/RECORD +11 -10
- enterprise_data/__init__.py +1 -1
- enterprise_data/api/v1/serializers.py +1 -1
- enterprise_data/migrations/0040_auto_20240712_0740.py +45 -0
- enterprise_data/models.py +8 -1
- enterprise_data/renderers.py +1 -1
- enterprise_data/utils.py +8 -1
- {edx_enterprise_data-6.2.3.dist-info → edx_enterprise_data-7.0.0.dist-info}/LICENSE +0 -0
- {edx_enterprise_data-6.2.3.dist-info → edx_enterprise_data-7.0.0.dist-info}/WHEEL +0 -0
- {edx_enterprise_data-6.2.3.dist-info → edx_enterprise_data-7.0.0.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,14 @@
|
|
1
|
-
enterprise_data/__init__.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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-
|
137
|
-
edx_enterprise_data-
|
138
|
-
edx_enterprise_data-
|
139
|
-
edx_enterprise_data-
|
140
|
-
edx_enterprise_data-
|
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,,
|
enterprise_data/__init__.py
CHANGED
@@ -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(
|
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):
|
enterprise_data/renderers.py
CHANGED
@@ -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)
|
File without changes
|
File without changes
|
File without changes
|