from google.cloud import bigquery import functions_framework from queries import queries from google.oauth2 import service_account import json import requests import streamlit as st from app import send_message_via_webhook, Webhook_urls from html_templates import logo, BigQuery_upload_title, table_id_placeholder, uploader, button_styles, tooltip_message_bq, recon_title, channel_member_title, duplicate_count, tooltip_message_recon from utils import check_duplicates, upload_to_bigquery, authenticate_bigquery, load_gcp_credentials import os from queries import queries # Display logo st.markdown(logo, unsafe_allow_html=True) st.logo("alerter_4.jpeg") # Display page title st.markdown(recon_title, unsafe_allow_html=True) st.write("") st.markdown(tooltip_message_recon, unsafe_allow_html = True) st.write("") # Dropdown for channels/members selection webhook_url = list(Webhook_urls.keys()) st.markdown(channel_member_title, unsafe_allow_html=True) st.write('') # Multiselect to select channels selection = st.multiselect("Select channels", webhook_url, label_visibility="hidden", help = ' Select the channel member(s) where you want to Slack the duplicate counts') # Load GCP credentials gcp_credentials = load_gcp_credentials() if gcp_credentials: # Authenticate BigQuery client with the loaded credentials if selection: try: bigquery_creds = authenticate_bigquery() client = bigquery.Client(credentials=bigquery_creds) st.success("BigQuery client authenticated successfully") except Exception as e: st.error(f"Error authenticating BigQuery client: {e}") st.stop() # Stop execution if BigQuery authentication fails # Check for duplicates in the queries results = check_duplicates(client) if results: st.write("") st.write("") # Display the duplicate count st.markdown(duplicate_count, unsafe_allow_html=True) # Prepare the HTML message to display results in the Streamlit UI message_html = "" for query_name, count in results.items(): message_html += f"""