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()