Spaces:
Sleeping
Sleeping
File size: 2,762 Bytes
d0258ad b3f239a d0258ad 443de81 dd31151 443de81 d0258ad 7ab2503 443de81 d0258ad 5a81c5a d0258ad 5a81c5a d0258ad 5a81c5a d0258ad 7ab2503 d0258ad 5a81c5a d0258ad 5a81c5a d0258ad 5a81c5a d0258ad 7ab2503 d0258ad f94f139 d0258ad d4367a8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import streamlit as st
import requests
import pandas as pd
# ---------------------- CONFIG ----------------------
CLIENT_ID = "3MVG9VMBZCsTL9hnfx2eVMOHa56mwSZnvuAnPr3kVVBEQfeLYvrSfJNRRjjSlKWPLy99XM6kefg=="
CLIENT_SECRET = "6F7E9C95CE20CC07FC1EBD39B34909739D99975A0EEB548240926EA0686E428E"
USERNAME = "greenenergy@vedavathi.com"
PASSWORD = "Vedavathi@04" # Ensure this is correct without the security token
SECURITY_TOKEN = "qe4His8AcuFJucZz5NBHfGU" # Your Salesforce Security Token
TOKEN_URL = "https://login.salesforce.com/services/oauth2/token" # Use for production; change to test.salesforce.com for sandbox
API_VERSION = "v60.0"
# ---------------------- AUTH ----------------------
@st.cache_data
def get_salesforce_token():
data = {
"grant_type": "password", # Corrected grant_type
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"username": USERNAME,
"password": PASSWORD + SECURITY_TOKEN # Concatenate password and security token correctly
}
response = requests.post(TOKEN_URL, data=data)
if response.status_code != 200:
# Log detailed error message for better debugging
error_message = response.json() if response.status_code != 200 else "No error message"
st.error(f"Authentication failed! Status code: {response.status_code}, Message: {error_message}")
return None, None
res = response.json()
return res["access_token"], res["instance_url"]
# ---------------------- FETCH DATA ----------------------
def fetch_pole_data(instance_url, access_token):
headers = {
"Authorization": f"Bearer {access_token}"
}
query = "SELECT Name, Location_Latitude__c, Location_Longitude__c, Camera_Status__c FROM Pole__c LIMIT 100"
url = f"{instance_url}/services/data/{API_VERSION}/query?q={query}"
response = requests.get(url, headers=headers)
if response.status_code != 200:
st.error(f"Failed to fetch Pole data! Status code: {response.status_code}, Message: {response.json()}")
return pd.DataFrame()
records = response.json().get("records", [])
df = pd.DataFrame(records)
return df[["Name", "Location_Latitude__c", "Location_Longitude__c", "Camera_Status__c"]]
# ---------------------- UI ----------------------
st.title("🚦Vedavathi Smart Poles Viewer")
token, instance_url = get_salesforce_token()
if token:
if st.button("🔄 Refresh Pole Data"):
df = fetch_pole_data(instance_url, token)
if not df.empty:
st.success("Pole data loaded successfully!")
st.dataframe(df, use_container_width=True)
else:
st.warning("No data found.")
else:
st.error("Salesforce authentication failed. Check credentials.") |