ms-salesforce-api 3.1.1__tar.gz → 3.3.0__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.
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/PKG-INFO +4 -2
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/__init__.py +55 -0
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/constants.py +25 -0
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/dto/AddTechOnboarding.py +161 -0
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/export_data/Bigquery.py +85 -0
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/project/export_data/__tests__/__init__.py +0 -0
- ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/helpers/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/pyproject.toml +1 -1
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/LICENSE +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/README.md +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/Auth.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/JWTGenerator.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/SalesforceQueryExecutor.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__tests__/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__tests__/test_Auth.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__tests__/test_JWTGenerator.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__tests__/test_SalesforceRequester.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/dto/AccountDTO.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/dto/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/account/export_data/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/contact → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding}/dto/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/contact → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding}/export_data/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/contact/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/contact/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/contact/dto/ContactDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/lead → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/contact}/dto/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/contact/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/lead → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/contact}/export_data/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/lead/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/lead/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/lead/dto/LeadDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/lead}/dto/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/lead/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/lead}/export_data/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/dto/OpportunityDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity/export_data/__tests__ → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity/dto}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/export_data/CloudSQL.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity_contact_role/dto → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity/export_data}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity_contact_role/export_data → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity/export_data/__tests__}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/export_data/__tests__/test_CloudSQL.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity/helpers.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_contact_role/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_contact_role/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_contact_role/dto/OpportunityContactDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity_history → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity_contact_role}/dto/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_contact_role/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/opportunity_history → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity_contact_role}/export_data/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_history/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_history/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_history/dto/OpportunityDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/product/__tests__ → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity_history/dto}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/opportunity_history/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/product/dto → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/opportunity_history/export_data}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/product/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/product/export_data → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/product/__tests__}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/product/__tests__/test_Product.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/product/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/product/dto/ProductDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/profit_center/__tests__ → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/product/dto}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/product/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/profit_center/dto → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/product/export_data}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/profit_center/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/profit_center/export_data → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/profit_center/__tests__}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/profit_center/__tests__/test_ProfitCenter.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/profit_center/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/profit_center/dto/ProfitCenterDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/project/__tests__ → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/profit_center/dto}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/profit_center/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/project/dto → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/profit_center/export_data}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/__init__.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/project/export_data → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/project/__tests__}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/__tests__/test_Project.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/constants.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/dto/BillingLineDTO.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/dto/OpportunityDTO.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/dto/ProjectLineItemDTO.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/api/project/export_data/__tests__ → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/project/dto}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/export_data/Bigquery.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/export_data/CloudSQL.py +0 -0
- {ms_salesforce_api-3.1.1/ms_salesforce_api/salesforce/helpers → ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/project/export_data}/__init__.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/project/export_data/__tests__/test_CloudSQL.py +0 -0
- {ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/helpers/string.py +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: ms-salesforce-api
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: Python library used to extract data from Salesforce API and migrate it to Bigquery and Postgres.
|
|
5
|
+
License-File: LICENSE
|
|
5
6
|
Author: Making Science
|
|
6
7
|
Requires-Python: >=3.8.1,<4.0.0
|
|
7
8
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -10,6 +11,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
15
|
Requires-Dist: flake8 (>=6.0.0,<7.0.0)
|
|
14
16
|
Requires-Dist: gc-google-services-api (>=1.2.7,<2.0.0)
|
|
15
17
|
Requires-Dist: isort (>=5.12.0,<6.0.0)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from ms_salesforce_api.salesforce.api.addtech_onboarding.constants import (
|
|
4
|
+
DEFAULT_ADDTECH_ONBOARDING_QUERY,
|
|
5
|
+
)
|
|
6
|
+
from ms_salesforce_api.salesforce.api.addtech_onboarding.dto.AddTechOnboarding import ( # noqa: E501
|
|
7
|
+
AddTechOnboardingDTO,
|
|
8
|
+
)
|
|
9
|
+
from ms_salesforce_api.salesforce.SalesforceQueryExecutor import (
|
|
10
|
+
SalesforceQueryExecutor,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
logging.basicConfig(
|
|
14
|
+
level=logging.INFO,
|
|
15
|
+
format="%(asctime)s - %(levelname)s - %(message)s",
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AddTechOboarding(SalesforceQueryExecutor):
|
|
20
|
+
def get_batches(self, lst, n):
|
|
21
|
+
"""Yield successive n-sized chunks from lst."""
|
|
22
|
+
for i in range(0, len(lst), n):
|
|
23
|
+
yield lst[i : i + n] # noqa: E203
|
|
24
|
+
|
|
25
|
+
def get_all(
|
|
26
|
+
self,
|
|
27
|
+
query: str = DEFAULT_ADDTECH_ONBOARDING_QUERY,
|
|
28
|
+
format: str = "json",
|
|
29
|
+
):
|
|
30
|
+
data = self.fetch_data(query)
|
|
31
|
+
if data is None:
|
|
32
|
+
logging.error(
|
|
33
|
+
"[ERROR - SalesforceAPI]: No addtech onboarding data return from Salesforce API" # noqa: E501
|
|
34
|
+
)
|
|
35
|
+
return []
|
|
36
|
+
|
|
37
|
+
addtech_onboarding = [
|
|
38
|
+
AddTechOnboardingDTO.from_salesforce_record(record)
|
|
39
|
+
for record in data
|
|
40
|
+
]
|
|
41
|
+
addtech_onboarding_list = list(addtech_onboarding)
|
|
42
|
+
|
|
43
|
+
if format == "json":
|
|
44
|
+
addtech_onboarding_list = [
|
|
45
|
+
addtech.to_dict() for addtech in addtech_onboarding_list
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
return addtech_onboarding_list
|
|
49
|
+
try:
|
|
50
|
+
pass
|
|
51
|
+
except Exception as e:
|
|
52
|
+
logging.error(
|
|
53
|
+
f"[ERROR - get_all]: Failed to get all addtech_onboarding: {e}"
|
|
54
|
+
)
|
|
55
|
+
return []
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
DEFAULT_ADDTECH_ONBOARDING_QUERY = """
|
|
2
|
+
SELECT
|
|
3
|
+
Id,
|
|
4
|
+
Account_Id__c,
|
|
5
|
+
Advertiser_Id__c,
|
|
6
|
+
Name,
|
|
7
|
+
FRM_ProductName__c,
|
|
8
|
+
FRM_Name__c,
|
|
9
|
+
Opportunity__c,
|
|
10
|
+
Opportunity__r.AccountId,
|
|
11
|
+
Opportunity__r.FRM_ProjectCode__c,
|
|
12
|
+
Opportunity__r.FRM_ProjectName__c,
|
|
13
|
+
Opportunity_Product__r.FRM_ProductName__c,
|
|
14
|
+
Opportunity_Product__r.ProductCode,
|
|
15
|
+
Opportunity_Product__r.CurrencyIsoCode,
|
|
16
|
+
Opportunity_Product__r.Quantity,
|
|
17
|
+
Opportunity_Product__r.FRM_ProfitCenterName__c,
|
|
18
|
+
Partner_Id__c,
|
|
19
|
+
Status__c,
|
|
20
|
+
TXT_EntityID__c,
|
|
21
|
+
TXT_GMPOrgID__c,
|
|
22
|
+
TXT_ManagerId__c,
|
|
23
|
+
TXT_PlatformAccName__c
|
|
24
|
+
FROM Yangtse__c
|
|
25
|
+
"""
|
ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/dto/AddTechOnboarding.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
from ms_salesforce_api.salesforce.helpers.string import normalize_value
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class AddTechOnboardingDTO(object):
|
|
5
|
+
def __init__(
|
|
6
|
+
self,
|
|
7
|
+
id,
|
|
8
|
+
account_id,
|
|
9
|
+
advertiser_id,
|
|
10
|
+
name,
|
|
11
|
+
opportunity,
|
|
12
|
+
opportunity_account_id,
|
|
13
|
+
opportunity_project_code,
|
|
14
|
+
opportunity_project_name,
|
|
15
|
+
opportunity_product_name,
|
|
16
|
+
opportunity_product_code,
|
|
17
|
+
opportunity_product_currency_iso_code,
|
|
18
|
+
opportunity__product_quantity,
|
|
19
|
+
opportunity__product_profit_center_name,
|
|
20
|
+
partner_id,
|
|
21
|
+
status,
|
|
22
|
+
txt_entity_id,
|
|
23
|
+
txt_gmp_org_id,
|
|
24
|
+
txt_manager_id,
|
|
25
|
+
txt_platform_acc_name,
|
|
26
|
+
adtech_propduct_name,
|
|
27
|
+
yangtse_name,
|
|
28
|
+
):
|
|
29
|
+
self.id = id
|
|
30
|
+
self.account_id = account_id
|
|
31
|
+
self.advertiser_id = advertiser_id
|
|
32
|
+
self.name = name
|
|
33
|
+
self.opportunity = opportunity
|
|
34
|
+
self.opportunity_account_id = opportunity_account_id
|
|
35
|
+
self.opportunity_project_code = opportunity_project_code
|
|
36
|
+
self.opportunity_project_name = opportunity_project_name
|
|
37
|
+
self.opportunity_product_name = opportunity_product_name
|
|
38
|
+
self.opportunity_product_code = opportunity_product_code
|
|
39
|
+
self.opportunity_product_currency_iso_code = (
|
|
40
|
+
opportunity_product_currency_iso_code
|
|
41
|
+
)
|
|
42
|
+
self.opportunity__product_quantity = opportunity__product_quantity
|
|
43
|
+
self.opportunity__product_profit_center_name = (
|
|
44
|
+
opportunity__product_profit_center_name
|
|
45
|
+
)
|
|
46
|
+
self.partner_id = partner_id
|
|
47
|
+
self.status = status
|
|
48
|
+
self.txt_entity_id = txt_entity_id
|
|
49
|
+
self.txt_gmp_org_id = txt_gmp_org_id
|
|
50
|
+
self.txt_manager_id = txt_manager_id
|
|
51
|
+
self.txt_platform_acc_name = txt_platform_acc_name
|
|
52
|
+
self.adtech_propduct_name = adtech_propduct_name
|
|
53
|
+
self.yangtse_name = yangtse_name
|
|
54
|
+
|
|
55
|
+
@staticmethod
|
|
56
|
+
def from_salesforce_record(record: dict):
|
|
57
|
+
|
|
58
|
+
def _get_opportunity_account_id():
|
|
59
|
+
try:
|
|
60
|
+
return record["Opportunity__r"]["AccountId"]
|
|
61
|
+
except (KeyError, TypeError):
|
|
62
|
+
return None
|
|
63
|
+
|
|
64
|
+
def _get_opportunity_project_code():
|
|
65
|
+
try:
|
|
66
|
+
return record["Opportunity__r"]["FRM_ProjectCode__c"]
|
|
67
|
+
except (KeyError, TypeError):
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
def _get_opportunity_project_name():
|
|
71
|
+
try:
|
|
72
|
+
return normalize_value(
|
|
73
|
+
record["Opportunity__r"]["FRM_ProjectName__c"]
|
|
74
|
+
)
|
|
75
|
+
except (KeyError, TypeError):
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
def _get_opportunity_product_name():
|
|
79
|
+
try:
|
|
80
|
+
return normalize_value(
|
|
81
|
+
record["Opportunity_Product__r"]["FRM_ProductName__c"]
|
|
82
|
+
)
|
|
83
|
+
except (KeyError, TypeError):
|
|
84
|
+
return None
|
|
85
|
+
|
|
86
|
+
def _get_opportunity_product_code():
|
|
87
|
+
try:
|
|
88
|
+
return record["Opportunity_Product__r"]["ProductCode"]
|
|
89
|
+
except (KeyError, TypeError):
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
def _get_opportunity_product_currency_iso_code():
|
|
93
|
+
try:
|
|
94
|
+
return record["Opportunity_Product__r"]["CurrencyIsoCode"]
|
|
95
|
+
except (KeyError, TypeError):
|
|
96
|
+
return None
|
|
97
|
+
|
|
98
|
+
def _get_opportunity_product_quantity():
|
|
99
|
+
try:
|
|
100
|
+
return record["Opportunity_Product__r"]["Quantity"]
|
|
101
|
+
except (KeyError, TypeError):
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
def _get_opportunity_product_profit_center_name():
|
|
105
|
+
try:
|
|
106
|
+
return record["Opportunity_Product__r"][
|
|
107
|
+
"FRM_ProfitCenterName__c"
|
|
108
|
+
]
|
|
109
|
+
except (KeyError, TypeError):
|
|
110
|
+
return None
|
|
111
|
+
|
|
112
|
+
return AddTechOnboardingDTO(
|
|
113
|
+
id=record["Id"],
|
|
114
|
+
account_id=record["Account_Id__c"],
|
|
115
|
+
advertiser_id=record["Advertiser_Id__c"],
|
|
116
|
+
name=normalize_value(record["Name"]),
|
|
117
|
+
opportunity=record["Opportunity__c"],
|
|
118
|
+
adtech_propduct_name=record["FRM_ProductName__c"],
|
|
119
|
+
yangtse_name=record["FRM_Name__c"],
|
|
120
|
+
opportunity_account_id=_get_opportunity_account_id(),
|
|
121
|
+
opportunity_project_code=_get_opportunity_project_code(),
|
|
122
|
+
opportunity_project_name=_get_opportunity_project_name(),
|
|
123
|
+
opportunity_product_name=_get_opportunity_product_name(),
|
|
124
|
+
opportunity_product_code=_get_opportunity_product_code(),
|
|
125
|
+
opportunity_product_currency_iso_code=_get_opportunity_product_currency_iso_code(), # noqa: E501
|
|
126
|
+
opportunity__product_quantity=_get_opportunity_product_quantity(),
|
|
127
|
+
opportunity__product_profit_center_name=_get_opportunity_product_profit_center_name(), # noqa: E501
|
|
128
|
+
partner_id=record["Partner_Id__c"],
|
|
129
|
+
status=normalize_value(record["Status__c"]),
|
|
130
|
+
txt_entity_id=record["TXT_EntityID__c"],
|
|
131
|
+
txt_gmp_org_id=record["TXT_GMPOrgID__c"],
|
|
132
|
+
txt_manager_id=record["TXT_ManagerId__c"],
|
|
133
|
+
txt_platform_acc_name=normalize_value(
|
|
134
|
+
record["TXT_PlatformAccName__c"]
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
def to_dict(self):
|
|
139
|
+
return {
|
|
140
|
+
"id": self.id,
|
|
141
|
+
"account_id": self.account_id,
|
|
142
|
+
"advertiser_id": self.advertiser_id,
|
|
143
|
+
"name": self.name,
|
|
144
|
+
"opportunity": self.opportunity,
|
|
145
|
+
"opportunity_account_id": self.opportunity_account_id,
|
|
146
|
+
"opportunity_project_code": self.opportunity_project_code,
|
|
147
|
+
"opportunity_project_name": self.opportunity_project_name,
|
|
148
|
+
"opportunity_product_name": self.opportunity_product_name,
|
|
149
|
+
"opportunity_product_code": self.opportunity_product_code,
|
|
150
|
+
"opportunity_product_currency_iso_code": self.opportunity_product_currency_iso_code, # noqa: E501
|
|
151
|
+
"opportunity__product_quantity": self.opportunity__product_quantity, # noqa: E501
|
|
152
|
+
"opportunity__product_profit_center_name": self.opportunity__product_profit_center_name, # noqa: E501
|
|
153
|
+
"partner_id": self.partner_id,
|
|
154
|
+
"status": self.status,
|
|
155
|
+
"txt_entity_id": self.txt_entity_id,
|
|
156
|
+
"txt_gmp_org_id": self.txt_gmp_org_id,
|
|
157
|
+
"txt_manager_id": self.txt_manager_id,
|
|
158
|
+
"txt_platform_acc_name": self.txt_platform_acc_name,
|
|
159
|
+
"adtech_propduct_name": self.adtech_propduct_name,
|
|
160
|
+
"yangtse_name": self.yangtse_name,
|
|
161
|
+
}
|
ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/addtech_onboarding/export_data/Bigquery.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from gc_google_services_api.bigquery import BigQueryManager
|
|
4
|
+
|
|
5
|
+
logging.basicConfig(
|
|
6
|
+
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BigQueryExporter:
|
|
11
|
+
"""
|
|
12
|
+
Initializes the Bigquery exporter with the given project ID and dataset ID.
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
project_id (str): The ID of the Google Cloud project.
|
|
16
|
+
dataset_id (str): The ID of the BigQuery dataset.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
def __init__(self, project_id, dataset_id):
|
|
20
|
+
self.project_id = project_id
|
|
21
|
+
self.dataset_id = dataset_id
|
|
22
|
+
self.client = BigQueryManager(
|
|
23
|
+
project_id=project_id,
|
|
24
|
+
dataset_id=dataset_id,
|
|
25
|
+
)
|
|
26
|
+
self.batch_size = 200
|
|
27
|
+
self.schemas = {
|
|
28
|
+
"addtech_onboarding": {
|
|
29
|
+
"id": "STRING",
|
|
30
|
+
"account_id": "STRING",
|
|
31
|
+
"advertiser_id": "STRING",
|
|
32
|
+
"name": "STRING",
|
|
33
|
+
"opportunity": "STRING",
|
|
34
|
+
"opportunity_account_id": "STRING",
|
|
35
|
+
"opportunity_project_code": "STRING",
|
|
36
|
+
"opportunity_project_name": "STRING",
|
|
37
|
+
"opportunity_product_name": "STRING",
|
|
38
|
+
"opportunity_product_code": "STRING",
|
|
39
|
+
"opportunity_product_currency_iso_code": "STRING",
|
|
40
|
+
"opportunity__product_quantity": "STRING",
|
|
41
|
+
"opportunity__product_profit_center_name": "STRING",
|
|
42
|
+
"partner_id": "STRING",
|
|
43
|
+
"status": "STRING",
|
|
44
|
+
"txt_entity_id": "STRING",
|
|
45
|
+
"txt_gmp_org_id": "STRING",
|
|
46
|
+
"txt_manager_id": "STRING",
|
|
47
|
+
"txt_platform_acc_name": "STRING",
|
|
48
|
+
"adtech_propduct_name": "STRING",
|
|
49
|
+
"yangtse_name": "STRING",
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
for table_name, table_schema in self.schemas.items():
|
|
54
|
+
self.client.create_table_if_not_exists(table_name, table_schema)
|
|
55
|
+
|
|
56
|
+
def _execute_query(self, query, log_id, default_error_value=None):
|
|
57
|
+
custom_error_value = f"{log_id}_custom_error"
|
|
58
|
+
|
|
59
|
+
result = self.client.execute_query(
|
|
60
|
+
query,
|
|
61
|
+
custom_error_value,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if result == custom_error_value:
|
|
65
|
+
logging.error(
|
|
66
|
+
f"[ERROR - _execute_query]: Error executing query for {log_id} in BigQuery." # noqa: E501
|
|
67
|
+
)
|
|
68
|
+
result = default_error_value
|
|
69
|
+
|
|
70
|
+
return result
|
|
71
|
+
|
|
72
|
+
def export_data(self, profit_centers):
|
|
73
|
+
self.client.load_massive_data(
|
|
74
|
+
rows_to_insert=profit_centers,
|
|
75
|
+
table_name="addtech_onboarding",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def delete_all_rows(self):
|
|
79
|
+
table_names = self.schemas.keys()
|
|
80
|
+
for table_name in table_names:
|
|
81
|
+
delete_query_table = f"DELETE FROM `{self.project_id}.{self.dataset_id}.{table_name}` WHERE true" # noqa: E501
|
|
82
|
+
self._execute_query(
|
|
83
|
+
query=delete_query_table,
|
|
84
|
+
log_id=f"delete_table_{table_name}",
|
|
85
|
+
)
|
ms_salesforce_api-3.3.0/ms_salesforce_api/salesforce/api/project/export_data/__tests__/__init__.py
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/JWTGenerator.py
RENAMED
|
File without changes
|
|
File without changes
|
{ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/api/__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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_salesforce_api-3.1.1 → ms_salesforce_api-3.3.0}/ms_salesforce_api/salesforce/helpers/string.py
RENAMED
|
File without changes
|