Heat_map_pole_001 / salesforce_integration.py
DSatishchandra's picture
Update salesforce_integration.py
bef2fc1 verified
raw
history blame contribute delete
2.28 kB
# salesforce_integration.py
from simple_salesforce import Salesforce
import streamlit as st
@st.cache_data(ttl=3600)
def fetch_salesforce_data(site_name):
try:
sf = Salesforce(
username=st.secrets["salesforce"]["username"],
password=st.secrets["salesforce"]["password"],
security_token=st.secrets["salesforce"]["security_token"],
#client_id=st.secrets["salesforce"]["consumer_key"],
#client_secret=st.secrets["salesforce"]["consumer_secret"]
)
query = f"""
SELECT Id, Name, Solar_Generation__c, Wind_Generation__c, Power_Required__c, Power_Sufficient__c,
Camera_Status__c, Alert_Level__c, Health_Score__c, LastModifiedDate,
Site__c, Location_Latitude__c, Location_Longitude__c
FROM Pole__c
WHERE Site__c = '{site_name}'
"""
result = sf.query_all(query) # Line 19 - IndentationError here
data = []
for record in result['records']:
solar = record['Solar_Generation__c'] or 0.0
wind = record['Wind_Generation__c'] or 0.0
total_power = solar + wind
power_status = 'Sufficient' if record['Power_Sufficient__c'] == 'Yes' else 'Insufficient'
data.append({
'Pole ID': record['Name'],
'Site': record['Site__c'],
'Latitude': record['Location_Latitude__c'] or 0.0,
'Longitude': record['Location_Longitude__c'] or 0.0,
'Solar (kWh)': solar,
'Wind (kWh)': wind,
'Power Required (kWh)': record['Power_Required__c'] or 0.0,
'Total Power (kWh)': total_power,
'Power Status': power_status,
'Tilt Angle (°)': 0.0,
'Vibration (g)': 0.0,
'Camera Status': record['Camera_Status__c'] or 'Unknown',
'Health Score': record['Health_Score__c'] or 0.0,
'Alert Level': record['Alert_Level__c'] or 'Green',
'Anomalies': '',
'Last Checked': record['LastModifiedDate'] or ''
})
return data
except Exception as e:
st.error(f"Error connecting to Salesforce: {str(e)}")
return []