Skip to content

Commit 730eb43

Browse files
authored
Merge pull request #536 from CodeForPhilly/534-jwt-flow
534-jwt-flow
2 parents 106254f + 78f12f4 commit 730eb43

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed
Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import os
22

3-
from sqlalchemy.orm import sessionmaker
3+
import structlog
44
from simple_salesforce import Salesforce
5+
from sqlalchemy.orm import sessionmaker
6+
57
from config import engine
68
from models import SalesForceContacts
79

8-
import structlog
910
logger = structlog.get_logger()
1011

12+
TEST_MODE = os.getenv("TEST_MODE") # if not present, has value None
13+
1114
def store_contacts_all():
1215
Session = sessionmaker(engine)
1316
with Session() as session:
@@ -16,12 +19,27 @@ def store_contacts_all():
1619
session.execute("TRUNCATE TABLE salesforcecontacts")
1720

1821
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 os.path.exists('server/bin/connected-app-secrets.pem'):
24+
pem_file = 'server/bin/connected-app-secrets.pem'
25+
elif os.path.exists('bin/connected-app-secrets.pem'):
26+
pem_file = 'bin/connected-app-secrets.pem'
27+
else:
28+
logger.error("Missing salesforce jwt private key pem file, skipping data pull")
29+
return
30+
31+
sf = Salesforce(username=os.getenv('SALESFORCE_USERNAME'), consumer_key=os.getenv('SALESFORCE_CONSUMER_KEY'),
32+
privatekey_file=pem_file)
2033
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-
34+
logger.debug("%d total Salesforce contact records", results['totalSize'])
35+
if TEST_MODE:
36+
logger.debug("running in test mode so only downloading first page of Salesforce contacts")
37+
38+
total_records = 0
2339
done = False
2440
while not done:
41+
total_records += len(results['records'])
42+
logger.debug("Query returned %d Salesforce contact records, total %d", len(results['records']), total_records)
2543
for row in results['records']:
2644
account_name = row['Account']['Name'] if row['Account'] is not None else None
2745
contact = SalesForceContacts(contact_id=row['Contact_ID_18__c'],
@@ -35,10 +53,12 @@ def store_contacts_all():
3553
mailing_zip_postal_code=row['MailingPostalCode'],
3654
phone=row['Phone'],
3755
mobile=row['MobilePhone'],
38-
email=['Email'])
56+
email=row['Email'])
3957
session.add(contact)
40-
done = results['done']
41-
if not done:
42-
results = sf.query_more(results['nextRecordsUrl'])
58+
# if in test mode only return first page of results
59+
done = results['done'] if not TEST_MODE else True
60+
if not done:
61+
results = sf.query_more(results['nextRecordsUrl'], True)
62+
logger.debug("Committing downloaded contact records")
4363
session.commit()
44-
logger.debug("finished downloading latest salesforce contacts data")
64+
logger.debug("finished downloading latest salesforce contacts data")

0 commit comments

Comments
 (0)