CoolFace
Apppublic

insly/GraphQL_Example

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py131 linesDownload Raw Back to root
1import streamlit as st2import requests3from dotenv import load_dotenv4import os5from datetime import datetime6 7# Load environment variables8load_dotenv()9 10# Microsoft Graph API settings11ACCESS_TOKEN = os.getenv('ACCESS_TOKEN')12FILE_ID = "A57BDBC1CDEC2768!282563"13WORKSHEET_ID = "{00000000-0001-0000-0000-000000000000}"14 15def update_sum_insured(sum_insured):16    """Update Sum Insured cell value"""17    if not ACCESS_TOKEN:18        st.error("Access token not found. Please check your .env file.")19        return None20    21    headers = {22        'Authorization': f'Bearer {ACCESS_TOKEN}',23        'Content-Type': 'application/json',24    }25    26    url = f"https://graph.microsoft.com/beta/me/drive/items/{FILE_ID}/workbook/worksheets/{WORKSHEET_ID}/range(address='SUM_INSURED')"27    28    data = {29        "values": [[sum_insured]]30    }31    32    try:33        response = requests.patch(url, headers=headers, json=data)34        response.raise_for_status()35        return response.json()36    except requests.exceptions.RequestException as e:37        st.error(f"Error updating Sum Insured: {str(e)}")38        return None39 40def update_year_built(year_built):41    """Update Year Built cell value"""42    if not ACCESS_TOKEN:43        st.error("Access token not found. Please check your .env file.")44        return None45    46    headers = {47        'Authorization': f'Bearer {ACCESS_TOKEN}',48        'Content-Type': 'application/json',49    }50    51    url = f"https://graph.microsoft.com/beta/me/drive/items/{FILE_ID}/workbook/worksheets/{WORKSHEET_ID}/range(address='YEAR_BUILT')"52    53    data = {54        "values": [[year_built]]55    }56    57    try:58        response = requests.patch(url, headers=headers, json=data)59        response.raise_for_status()60        return response.json()61    except requests.exceptions.RequestException as e:62        st.error(f"Error updating Year Built: {str(e)}")63        return None64 65def get_insurance_premium():66    """Get insurance premium value from Excel"""67    if not ACCESS_TOKEN:68        st.error("Access token not found. Please check your .env file.")69        return None70    71    headers = {72        'Authorization': f'Bearer {ACCESS_TOKEN}',73        'Content-Type': 'application/json',74    }75    76    url = f"https://graph.microsoft.com/beta/me/drive/items/{FILE_ID}/workbook/worksheets/{WORKSHEET_ID}/range(address='INSURANCE_PREMIUM')"77    78    try:79        response = requests.get(url, headers=headers)80        response.raise_for_status()81        return response.json()82    except requests.exceptions.RequestException as e:83        st.error(f"Error getting insurance premium: {str(e)}")84        return None85 86def main():87    st.title("Insurance Calculator")88    st.write("Update Excel values and calculate insurance premium")89    90    # Input form91    with st.form("excel_update_form"):92        sum_insured = st.number_input("Sum Insured", min_value=0, value=1000000)93        year_built = st.number_input("Year Built", min_value=1900, max_value=datetime.now().year, value=2000)94        submitted = st.form_submit_button("Calculate Premium")95        96        if submitted:97            # Update Sum Insured98            sum_insured_result = update_sum_insured(sum_insured)99            if sum_insured_result:100                st.success("Sum Insured updated successfully!")101            else:102                st.error("Failed to update Sum Insured")103                return104            105            # Update Year Built106            year_built_result = update_year_built(year_built)107            if year_built_result:108                st.success("Year Built updated successfully!")109            else:110                st.error("Failed to update Year Built")111                return112            113            # Get calculated premium114            premium_result = get_insurance_premium()115            116            if premium_result and 'values' in premium_result:117                premium = premium_result['values'][0][0]118                st.header("Calculation Result")119                st.write(f"**Insurance Premium:** {premium:,.2f}")120                121                # Display summary122                st.subheader("Summary")123                st.write(f"**Sum Insured:** {sum_insured:,.2f}")124                st.write(f"**Year Built:** {year_built}")125                st.write(f"**Annual Premium:** {premium:,.2f}")126            else:127                st.error("Failed to get insurance premium")128 129if __name__ == "__main__":130    main()131