Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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()
|