edx-enterprise-data 5.4.1__py3-none-any.whl → 5.5.1__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: 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,9 +1,9 @@
1
- enterprise_data/__init__.py,sha256=vowx0vqntZ5qvS4mcq1yafEqJDZ-jKFZGii6eTVnm6M,123
1
+ enterprise_data/__init__.py,sha256=dC_EnL5TAyJtgKEiiE010yYxoMn6H4OL7KrAtv41FHo,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=pS65L4mimz7hd_cLml_mXdU0GJ7hs0X8UQ8MNjC5hCU,234
5
5
  enterprise_data/filters.py,sha256=SsDCfD6YTBPySUqGphJ8ZtuswTafTvsYt4JI93DFRX4,5686
6
- enterprise_data/models.py,sha256=cX9rO0k2tVFHaH0TiGUH3Egstw7lpIW032rm5zuRtfA,18321
6
+ enterprise_data/models.py,sha256=oDnvuQ-XlFTLaZNSiv5aviStpeQrEgALtlB63jVZKcA,18376
7
7
  enterprise_data/paginators.py,sha256=YPrC5TeXFt-ymenT2H8H2nCbDCnAzJQlH9kFPElRxWE,269
8
8
  enterprise_data/signals.py,sha256=8eqNPnlvmfsKf19lGWv5xTIuBgQIqR8EZSp9UYzC8Rc,1024
9
9
  enterprise_data/urls.py,sha256=bqtKF5OEWEwrNmHG3os-pZNuNsmjlhxEqp7yM4TbPf4,243
@@ -73,6 +73,7 @@ enterprise_data/migrations/0034_auto_20230907_0834.py,sha256=30davBk2QD9tZCoSCHl
73
73
  enterprise_data/migrations/0035_auto_20230907_1154.py,sha256=nVz53sDLzygo0wR8E1dMaedEdGsUdc6LkdOVnH8FiZk,743
74
74
  enterprise_data/migrations/0036_enterprisesubsidybudget_subsidy_access_policy_display_name.py,sha256=KqMw3rcVshujU-bYVXnAHCRF-l_Gtd5EYemakFQGE2U,450
75
75
  enterprise_data/migrations/0037_alter_enterpriseenrollment_consent_granted.py,sha256=MF9-RRhCR1efO51UPgSn746V5EnymdwNYrL8dA_P7Q8,471
76
+ enterprise_data/migrations/0038_enterpriseoffer_export_timestamp.py,sha256=8St3DsKb-VI3LGGC-Mc7OvmFn67kVob0HKCPGKcjvu4,436
76
77
  enterprise_data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
78
  enterprise_data/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
79
  enterprise_data/settings/test.py,sha256=Ei2K4fCCIdeKh9VSRoW7yivMlyoxY1Vbvu5I-Rk7rL0,3988
@@ -110,7 +111,7 @@ enterprise_data_roles/tests/test_models.py,sha256=wJv7ywk0BSbjlW_U142h0aFxZleAHy
110
111
  enterprise_reporting/__init__.py,sha256=yQO9ureIxFnl-1a_34H53elDwuAzXrSmhLlzqqD2SJ0,112
111
112
  enterprise_reporting/delivery_method.py,sha256=bG-JCGhrK3nuC3P6D88zBRSwDJCbaDxN35nNlXzvoRM,4813
112
113
  enterprise_reporting/external_resource_link_report.py,sha256=-KEB8jLkx4KFTTcoB1eznKte38XoAkya_VoFGUORz6o,8066
113
- enterprise_reporting/reporter.py,sha256=LNUsQr_uToVT1PM4ckTOhWAFdidpKleLQ1bhpLKJbV4,13707
114
+ enterprise_reporting/reporter.py,sha256=3wI46qH-CNCUC5r9-Eme1mQdMjwEsFk9myRb-ajzJkM,13807
114
115
  enterprise_reporting/send_enterprise_reports.py,sha256=usseqP7tG0oyG7goaBA-kz2nQnU6wGLOIv0jlfq_4Lg,4753
115
116
  enterprise_reporting/utils.py,sha256=7t0IUeaLVxHmunLhYU6EVKrmizY_fquwUf3xdHWlkAE,13860
116
117
  enterprise_reporting/clients/__init__.py,sha256=Y2XqHWyEfgHBWnfwdO1P-MWLVqCivzWIJFm_lQFUMyI,5122
@@ -130,8 +131,8 @@ enterprise_reporting/tests/test_send_enterprise_reports.py,sha256=WtL-RqGgu2x5PP
130
131
  enterprise_reporting/tests/test_utils.py,sha256=7Y5GmeibiC8Q5kIpYuIAkFpeyIDRs2U3ItxsabhR1zM,9493
131
132
  enterprise_reporting/tests/test_vertica_client.py,sha256=-R2yNCGUjRtoXwLMBloVFQkFYrJoo613VCr61gwI3kQ,140
132
133
  enterprise_reporting/tests/utils.py,sha256=xms2LM7DV3wczXEfctOK1ddel1EE0J_YSr17UzbCDy4,1401
133
- edx_enterprise_data-5.4.1.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
134
- edx_enterprise_data-5.4.1.dist-info/METADATA,sha256=kk74BesG-_H83crhJ0PU-yVX3hphGTYyI1kjxmyZMUY,1475
135
- edx_enterprise_data-5.4.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
136
- edx_enterprise_data-5.4.1.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
137
- edx_enterprise_data-5.4.1.dist-info/RECORD,,
134
+ edx_enterprise_data-5.5.1.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
135
+ edx_enterprise_data-5.5.1.dist-info/METADATA,sha256=PCX9-g2TUh3yRC4MaiPPAWFquLMPTyUuNnVH-mMckNo,1474
136
+ edx_enterprise_data-5.5.1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
137
+ edx_enterprise_data-5.5.1.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
138
+ edx_enterprise_data-5.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.2)
2
+ Generator: bdist_wheel (0.41.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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
+ ]
enterprise_data/models.py CHANGED
@@ -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}')