geethareddy commited on
Commit
1076091
·
verified ·
1 Parent(s): eb332c7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -2
app.py CHANGED
@@ -186,6 +186,54 @@ def generate_checklist_and_suggestions(role, project_id, milestones, reflection)
186
 
187
  return checklist, suggestions
188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  # Gradio interface
190
  def create_interface():
191
  roles = get_roles_from_salesforce() # Get roles from Salesforce dynamically
@@ -216,11 +264,12 @@ def create_interface():
216
  def handle_generate(role, supervisor_name, project_id, milestones, reflection):
217
  checklist, suggestions = generate_checklist_and_suggestions(role, project_id, milestones, reflection)
218
  pdf_path, pdf_name = save_report_as_pdf(role, supervisor_name, project_id, checklist, suggestions)
219
- return checklist, suggestions, pdf_path, pdf_name
 
220
 
221
  generate.click(fn=handle_generate,
222
  inputs=[role, supervisor_name, project_id, milestones, reflection],
223
- outputs=[checklist_output, suggestions_output, download_button, pdf_link])
224
 
225
  clear.click(fn=lambda: ("", "", "", "", ""),
226
  inputs=None,
 
186
 
187
  return checklist, suggestions
188
 
189
+ # Function to upload the report and create the Supervisor AI Coaching record in Salesforce
190
+ def upload_report_and_create_supervisor_ai_coaching(supervisor_name, project_id, checklist, suggestions, pdf_path, pdf_name):
191
+ try:
192
+ sf = Salesforce(
193
+ username=os.getenv('SF_USERNAME'),
194
+ password=os.getenv('SF_PASSWORD'),
195
+ security_token=os.getenv('SF_SECURITY_TOKEN'),
196
+ domain=os.getenv('SF_DOMAIN', 'login')
197
+ )
198
+
199
+ # Upload the PDF file to Salesforce as Content Version
200
+ with open(pdf_path, "rb") as f:
201
+ encoded = base64.b64encode(f.read()).decode()
202
+
203
+ content = sf.ContentVersion.create({
204
+ 'Title': pdf_name,
205
+ 'PathOnClient': pdf_name,
206
+ 'VersionData': encoded
207
+ })
208
+
209
+ content_id = content['id']
210
+ download_url = f"https://{sf.sf_instance}/sfc/servlet.shepherd/version/download/{content_id}"
211
+
212
+ # Create a Supervisor AI Coaching record
213
+ query = sf.query(f"SELECT Id FROM Supervisor__c WHERE Name = '{supervisor_name}' LIMIT 1")
214
+ supervisor_id = query['records'][0]['Id'] if query['totalSize'] > 0 else None
215
+ if not supervisor_id:
216
+ return "Supervisor not found."
217
+
218
+ project_query = sf.query(f"SELECT Id FROM Project__c WHERE Name = '{project_id}' LIMIT 1")
219
+ project_id_sf = project_query['records'][0]['Id'] if project_query['totalSize'] > 0 else None
220
+ if not project_id_sf:
221
+ return "Project not found."
222
+
223
+ # Create Supervisor AI Coaching record with all necessary fields
224
+ sf.Supervisor_AI_Coaching__c.create({
225
+ 'Project_ID__c': project_id_sf,
226
+ 'Supervisor_ID__c': supervisor_id,
227
+ 'Daily_Checklist__c': checklist,
228
+ 'Suggested_Tips__c': suggestions,
229
+ 'Download_Link__c': download_url
230
+ })
231
+
232
+ return "Supervisor AI Coaching record created and report uploaded successfully."
233
+
234
+ except Exception as e:
235
+ return f"Error: {str(e)}"
236
+
237
  # Gradio interface
238
  def create_interface():
239
  roles = get_roles_from_salesforce() # Get roles from Salesforce dynamically
 
264
  def handle_generate(role, supervisor_name, project_id, milestones, reflection):
265
  checklist, suggestions = generate_checklist_and_suggestions(role, project_id, milestones, reflection)
266
  pdf_path, pdf_name = save_report_as_pdf(role, supervisor_name, project_id, checklist, suggestions)
267
+ supervisor_ai_coaching_response = upload_report_and_create_supervisor_ai_coaching(supervisor_name, project_id, checklist, suggestions, pdf_path, pdf_name)
268
+ return checklist, suggestions, pdf_path, pdf_name, supervisor_ai_coaching_response
269
 
270
  generate.click(fn=handle_generate,
271
  inputs=[role, supervisor_name, project_id, milestones, reflection],
272
+ outputs=[checklist_output, suggestions_output, download_button, pdf_link, gr.HTML()])
273
 
274
  clear.click(fn=lambda: ("", "", "", "", ""),
275
  inputs=None,