geethareddy commited on
Commit
a67b709
·
verified ·
1 Parent(s): 313acaa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -12
app.py CHANGED
@@ -159,6 +159,32 @@ def get_supervisor_name_by_role(role):
159
  print(f"⚠️ Error fetching names: {e}")
160
  return []
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  # Generate AI output
163
  def generate_outputs(role, supervisor_name, project_id, milestones, reflection):
164
  if not all([role, supervisor_name, project_id, milestones, reflection]):
@@ -202,15 +228,6 @@ def generate_outputs(role, supervisor_name, project_id, milestones, reflection):
202
 
203
  return checklist, suggestions, pdf_path, f'<a href="{pdf_url}" target="_blank">Download PDF</a>' if pdf_url else ""
204
 
205
- # Function to generate Salesforce dashboard URL
206
- def generate_salesforce_dashboard_url(supervisor_name, project_id):
207
- return f"https://aicoachforsitesupervisors-dev-ed--c.develop.vf.force.com/apex/DashboardPage?supervisorName={supervisor_name}&projectId={project_id}"
208
-
209
- # Function to open dashboard
210
- def open_dashboard(role, supervisor_name, project_id):
211
- url = generate_salesforce_dashboard_url(supervisor_name, project_id)
212
- return f'<a href="{url}" target="_blank">Open Salesforce Dashboard</a>'
213
-
214
  # Gradio Interface
215
  def create_interface():
216
  roles = get_roles_from_salesforce()
@@ -238,10 +255,10 @@ def create_interface():
238
  dashboard_link = gr.HTML()
239
 
240
  role.change(fn=lambda r: gr.update(choices=get_supervisor_name_by_role(r)), inputs=role, outputs=supervisor_name)
 
241
 
242
  def handle_generate(role, supervisor_name, project_id, milestones, reflection):
243
  checklist, suggestions, pdf_path, html = generate_outputs(role, supervisor_name, project_id, milestones, reflection)
244
- download_button.value = pdf_path
245
  return checklist, suggestions, pdf_path, html
246
 
247
  generate.click(fn=handle_generate,
@@ -254,7 +271,6 @@ def create_interface():
254
 
255
  refresh.click(fn=lambda: gr.update(choices=get_roles_from_salesforce()), outputs=role)
256
 
257
- # Fix: Added the function for the button to work
258
  dashboard_btn.click(fn=open_dashboard,
259
  inputs=[role, supervisor_name, project_id],
260
  outputs=dashboard_link)
@@ -263,4 +279,4 @@ def create_interface():
263
 
264
  if __name__ == "__main__":
265
  app = create_interface()
266
- app.launch()
 
159
  print(f"⚠️ Error fetching names: {e}")
160
  return []
161
 
162
+ def get_projects_for_supervisor(supervisor_name):
163
+ try:
164
+ sf = Salesforce(
165
+ username=os.getenv('SF_USERNAME'),
166
+ password=os.getenv('SF_PASSWORD'),
167
+ security_token=os.getenv('SF_SECURITY_TOKEN'),
168
+ domain=os.getenv('SF_DOMAIN', 'login')
169
+ )
170
+ result = sf.query(f"SELECT Id FROM Supervisor__c WHERE Name = '{supervisor_name}' LIMIT 1")
171
+ if result['totalSize'] == 0:
172
+ return ""
173
+ supervisor_id = result['records'][0]['Id']
174
+ project_result = sf.query(f"SELECT Name FROM Project__c WHERE Supervisor_ID__c = '{supervisor_id}' LIMIT 1")
175
+ return project_result['records'][0]['Name'] if project_result['totalSize'] > 0 else ""
176
+ except Exception as e:
177
+ print(f"⚠️ Error fetching project: {e}")
178
+ return ""
179
+
180
+ # Generate Salesforce dashboard URL
181
+ def generate_salesforce_dashboard_url(supervisor_name, project_id):
182
+ return f"https://aicoachforsitesupervisors-dev-ed--c.develop.vf.force.com/apex/DashboardPage?supervisorName={supervisor_name}&projectId={project_id}"
183
+
184
+ def open_dashboard(role, supervisor_name, project_id):
185
+ url = generate_salesforce_dashboard_url(supervisor_name, project_id)
186
+ return f'<a href="{url}" target="_blank">Open Salesforce Dashboard</a>'
187
+
188
  # Generate AI output
189
  def generate_outputs(role, supervisor_name, project_id, milestones, reflection):
190
  if not all([role, supervisor_name, project_id, milestones, reflection]):
 
228
 
229
  return checklist, suggestions, pdf_path, f'<a href="{pdf_url}" target="_blank">Download PDF</a>' if pdf_url else ""
230
 
 
 
 
 
 
 
 
 
 
231
  # Gradio Interface
232
  def create_interface():
233
  roles = get_roles_from_salesforce()
 
255
  dashboard_link = gr.HTML()
256
 
257
  role.change(fn=lambda r: gr.update(choices=get_supervisor_name_by_role(r)), inputs=role, outputs=supervisor_name)
258
+ supervisor_name.change(fn=get_projects_for_supervisor, inputs=supervisor_name, outputs=project_id)
259
 
260
  def handle_generate(role, supervisor_name, project_id, milestones, reflection):
261
  checklist, suggestions, pdf_path, html = generate_outputs(role, supervisor_name, project_id, milestones, reflection)
 
262
  return checklist, suggestions, pdf_path, html
263
 
264
  generate.click(fn=handle_generate,
 
271
 
272
  refresh.click(fn=lambda: gr.update(choices=get_roles_from_salesforce()), outputs=role)
273
 
 
274
  dashboard_btn.click(fn=open_dashboard,
275
  inputs=[role, supervisor_name, project_id],
276
  outputs=dashboard_link)
 
279
 
280
  if __name__ == "__main__":
281
  app = create_interface()
282
+ app.launch()