awacke1 commited on
Commit
5449761
·
verified ·
1 Parent(s): 5102a13

Delete backup1013-2.app.py

Browse files
Files changed (1) hide show
  1. backup1013-2.app.py +0 -216
backup1013-2.app.py DELETED
@@ -1,216 +0,0 @@
1
- import os
2
- import streamlit as st
3
- import requests
4
- import msal
5
-
6
- # 🤓 Load environment variables (Ensure these are set!)
7
- APPLICATION_ID_KEY = os.getenv('APPLICATION_ID_KEY')
8
- CLIENT_SECRET_KEY = os.getenv('CLIENT_SECRET_KEY')
9
- AUTHORITY_URL = 'https://login.microsoftonline.com/common' # Use 'common' for multi-tenant apps
10
- REDIRECT_URI = 'http://localhost:8501' # 👈 Make sure this matches your app's redirect URI
11
-
12
- # 🎯 Define the scopes your app will need
13
- SCOPES = ['User.Read', 'Calendars.ReadWrite']
14
-
15
- # 🛠️ Initialize the MSAL client
16
- def get_msal_app():
17
- return msal.ConfidentialClientApplication(
18
- client_id=APPLICATION_ID_KEY,
19
- client_credential=CLIENT_SECRET_KEY,
20
- authority=AUTHORITY_URL
21
- )
22
-
23
- # 🔐 Acquire access token using authorization code
24
- def get_access_token(code):
25
- client_instance = get_msal_app()
26
- result = client_instance.acquire_token_by_authorization_code(
27
- code=code,
28
- scopes=SCOPES,
29
- redirect_uri=REDIRECT_URI
30
- )
31
- if 'access_token' in result:
32
- return result['access_token']
33
- else:
34
- st.error('Error acquiring token: ' + str(result.get('error_description')))
35
- st.stop()
36
-
37
- # 🏃‍♂️ Main application function
38
- def main():
39
- st.title("🦄 Simple Streamlit App with MS Graph API")
40
-
41
- # 🚀 Sidebar navigation
42
- st.sidebar.title("Navigation")
43
- menu = st.sidebar.radio("Go to", [
44
- "1️⃣ Dashboard with Widgets",
45
- "🏠 Landing Page",
46
- "📅 Upcoming Events",
47
- "📆 Schedule",
48
- "📝 Agenda",
49
- "🔍 Event Details",
50
- "➕ Add Event",
51
- "🔎 Filter By"
52
- ])
53
-
54
- # 🔑 Authentication
55
- if 'access_token' not in st.session_state:
56
- # 🕵️‍♂️ Check for authorization code in query parameters
57
- query_params = st.get_query_params()
58
- if 'code' in query_params:
59
- code = query_params['code'][0]
60
- st.write('🔑 Acquiring access token...')
61
- access_token = get_access_token(code)
62
- st.session_state['access_token'] = access_token
63
- st.rerun() # Reload the app to clear the code from URL
64
- else:
65
- # 📢 Prompt user to log in
66
- client_instance = get_msal_app()
67
- authorization_url = client_instance.get_authorization_request_url(
68
- scopes=SCOPES,
69
- redirect_uri=REDIRECT_URI
70
- )
71
- st.write('👋 Please [click here]({}) to log in and authorize the app.'.format(authorization_url))
72
- st.stop()
73
- else:
74
- # 🥳 User is authenticated, proceed with the app
75
- access_token = st.session_state['access_token']
76
- headers = {'Authorization': 'Bearer ' + access_token}
77
-
78
- # 🤗 Greet the user
79
- response = requests.get('https://graph.microsoft.com/v1.0/me', headers=headers)
80
- if response.status_code == 200:
81
- user_info = response.json()
82
- st.sidebar.write(f"👋 Hello, {user_info['displayName']}!")
83
- else:
84
- st.error('Failed to fetch user info.')
85
- st.write(response.text)
86
-
87
- # 🎛️ Handle menu options
88
- if menu == "1️⃣ Dashboard with Widgets":
89
- st.header("1️⃣ Dashboard with Widgets")
90
- st.write("Widgets will be displayed here. 🎛️")
91
- # Add your widgets here
92
-
93
- elif menu == "🏠 Landing Page":
94
- st.header("🏠 Landing Page")
95
- st.write("Welcome to the app! 🥳")
96
- # Add landing page content here
97
-
98
- elif menu == "📅 Upcoming Events":
99
- st.header("📅 Upcoming Events")
100
- events = get_upcoming_events(access_token)
101
- for event in events:
102
- st.write(f"📆 {event['subject']} on {event['start']['dateTime']}")
103
- # Display upcoming events
104
-
105
- elif menu == "📆 Schedule":
106
- st.header("📆 Schedule")
107
- schedule = get_schedule(access_token)
108
- st.write(schedule)
109
- # Display schedule
110
-
111
- elif menu == "📝 Agenda":
112
- st.header("📝 Agenda")
113
- st.write("Your agenda for today. 📋")
114
- # Display agenda
115
-
116
- elif menu == "🔍 Event Details":
117
- st.header("🔍 Event Details")
118
- event_id = st.text_input("Enter Event ID")
119
- if event_id:
120
- event_details = get_event_details(access_token, event_id)
121
- st.write(event_details)
122
- # Display event details based on ID
123
-
124
- elif menu == "➕ Add Event":
125
- st.header("➕ Add Event")
126
- event_subject = st.text_input("Event Subject")
127
- event_start = st.date_input("Event Start Date")
128
- event_start_time = st.time_input("Event Start Time")
129
- event_end = st.date_input("Event End Date")
130
- event_end_time = st.time_input("Event End Time")
131
- if st.button("Add Event"):
132
- event_details = {
133
- "subject": event_subject,
134
- "start": {
135
- "dateTime": f"{event_start}T{event_start_time}",
136
- "timeZone": "UTC"
137
- },
138
- "end": {
139
- "dateTime": f"{event_end}T{event_end_time}",
140
- "timeZone": "UTC"
141
- }
142
- }
143
- add_event(access_token, event_details)
144
- st.success("Event added successfully! 🎉")
145
- # Form to add new event
146
-
147
- elif menu == "🔎 Filter By":
148
- st.header("🔎 Filter Events")
149
- filter_criteria = st.text_input("Enter filter criteria")
150
- if filter_criteria:
151
- filtered_events = filter_events(access_token, filter_criteria)
152
- for event in filtered_events:
153
- st.write(f"📅 {event['subject']} on {event['start']['dateTime']}")
154
- # Filter events based on criteria
155
-
156
- else:
157
- st.write("Please select a menu option.")
158
-
159
- # 📅 Function to get upcoming events
160
- def get_upcoming_events(access_token):
161
- headers = {'Authorization': 'Bearer ' + access_token}
162
- response = requests.get('https://graph.microsoft.com/v1.0/me/events?$orderby=start/dateTime&$top=10', headers=headers)
163
- if response.status_code == 200:
164
- events = response.json().get('value', [])
165
- return events
166
- else:
167
- st.error('Failed to fetch upcoming events.')
168
- st.write(response.text)
169
- return []
170
-
171
- # 📆 Function to get schedule (Placeholder)
172
- def get_schedule(access_token):
173
- # Implement API call to get schedule
174
- return "📆 Your schedule goes here."
175
-
176
- # ➕ Function to add a new event
177
- def add_event(access_token, event_details):
178
- headers = {
179
- 'Authorization': 'Bearer ' + access_token,
180
- 'Content-Type': 'application/json'
181
- }
182
- response = requests.post('https://graph.microsoft.com/v1.0/me/events', headers=headers, json=event_details)
183
- if response.status_code == 201:
184
- st.success('Event created successfully! 🎉')
185
- else:
186
- st.error('Failed to create event.')
187
- st.write(response.text)
188
-
189
- # 🔍 Function to get event details
190
- def get_event_details(access_token, event_id):
191
- headers = {'Authorization': 'Bearer ' + access_token}
192
- response = requests.get(f'https://graph.microsoft.com/v1.0/me/events/{event_id}', headers=headers)
193
- if response.status_code == 200:
194
- event = response.json()
195
- return event
196
- else:
197
- st.error('Failed to fetch event details.')
198
- st.write(response.text)
199
- return {}
200
-
201
- # 🔎 Function to filter events
202
- def filter_events(access_token, filter_criteria):
203
- headers = {'Authorization': 'Bearer ' + access_token}
204
- # Implement filtering logic based on criteria
205
- response = requests.get(f"https://graph.microsoft.com/v1.0/me/events?$filter=startswith(subject,'{filter_criteria}')", headers=headers)
206
- if response.status_code == 200:
207
- events = response.json().get('value', [])
208
- return events
209
- else:
210
- st.error('Failed to filter events.')
211
- st.write(response.text)
212
- return []
213
-
214
- # 🚀 Run the main function
215
- if __name__ == "__main__":
216
- main()