1
1
import os
2
2
3
- from sqlalchemy . orm import sessionmaker
3
+ import structlog
4
4
from simple_salesforce import Salesforce
5
+ from sqlalchemy .orm import sessionmaker
6
+
5
7
from config import engine
6
8
from models import SalesForceContacts
7
9
8
- import structlog
9
10
logger = structlog .get_logger ()
10
11
12
+ TEST_MODE = os .getenv ("TEST_MODE" ) # if not present, has value None
13
+
11
14
def store_contacts_all ():
12
15
Session = sessionmaker (engine )
13
16
with Session () as session :
@@ -16,12 +19,21 @@ def store_contacts_all():
16
19
session .execute ("TRUNCATE TABLE salesforcecontacts" )
17
20
18
21
logger .debug ("retrieving the latest salesforce contacts data" )
19
- sf = Salesforce (domain = os .getenv ('SALESFORCE_DOMAIN' ), password = os .getenv ('SALESFORCE_PW' ), username = os .getenv ('SALESFORCE_USERNAME' ), security_token = os .getenv ('SALESFORCE_SECURITY_TOKEN' ))
22
+
23
+ if not os .path .exists ('bin/connected-app-secrets.pem' ):
24
+ logger .warn ("missing salesforce jwt private key, skipping data pull" )
25
+ return
26
+
27
+ sf = Salesforce (username = os .getenv ('SALESFORCE_USERNAME' ), consumer_key = os .getenv ('SALESFORCE_CONSUMER_KEY' ),
28
+ privatekey_file = 'bin/connected-app-secrets.pem' )
20
29
results = sf .query ("SELECT Contact_ID_18__c, FirstName, LastName, Contact.Account.Name, MailingCountry, MailingStreet, MailingCity, MailingState, MailingPostalCode, Phone, MobilePhone, Email FROM Contact" )
21
- logger .debug ("Query returned %d Salesforce contact records" , len (results ['records' ]) )
22
-
30
+ logger .debug ("%d total Salesforce contact records" , results ['totalSize' ])
31
+ if TEST_MODE :
32
+ logger .debug ("running in test mode so only downloading first page of Salesforce contacts" )
33
+
23
34
done = False
24
35
while not done :
36
+ logger .debug ("Query returned %d Salesforce contact records" , len (results ['records' ]))
25
37
for row in results ['records' ]:
26
38
account_name = row ['Account' ]['Name' ] if row ['Account' ] is not None else None
27
39
contact = SalesForceContacts (contact_id = row ['Contact_ID_18__c' ],
@@ -35,10 +47,11 @@ def store_contacts_all():
35
47
mailing_zip_postal_code = row ['MailingPostalCode' ],
36
48
phone = row ['Phone' ],
37
49
mobile = row ['MobilePhone' ],
38
- email = ['Email' ])
50
+ email = row ['Email' ])
39
51
session .add (contact )
40
- done = results ['done' ]
41
- if not done :
42
- results = sf .query_more (results ['nextRecordsUrl' ])
52
+ # if in test mode only return first page of results
53
+ done = results ['done' ] if not TEST_MODE else True
54
+ if not done :
55
+ results = sf .query_more (results ['nextRecordsUrl' ], True )
43
56
session .commit ()
44
- logger .debug ("finished downloading latest salesforce contacts data" )
57
+ logger .debug ("finished downloading latest salesforce contacts data" )
0 commit comments