nagasurendra commited on
Commit
6ead281
·
verified ·
1 Parent(s): bf329cc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -40
app.py CHANGED
@@ -94,8 +94,8 @@ def save_dpr_to_pdf(dpr_text, filename):
94
  except Exception as e:
95
  return f"Error saving PDF: {str(e)}", None
96
 
97
- # Function to upload a file to Salesforce as ContentVersion and get its URL
98
- def upload_file_to_salesforce(file_path, filename, sf_connection, field_name):
99
  try:
100
  # Read file content and encode in base64
101
  with open(file_path, 'rb') as f:
@@ -107,7 +107,7 @@ def upload_file_to_salesforce(file_path, filename, sf_connection, field_name):
107
  'Title': filename,
108
  'PathOnClient': filename,
109
  'VersionData': file_content_b64,
110
- 'Description': f'Uploaded for {field_name}'
111
  })
112
 
113
  # Get ContentDocumentId
@@ -117,12 +117,9 @@ def upload_file_to_salesforce(file_path, filename, sf_connection, field_name):
117
  )
118
  content_document_id = content_document['records'][0]['ContentDocumentId']
119
 
120
- # Construct the file download URL
121
- file_url = f"/sfc/servlet.shepherd/document/download/{content_document_id}"
122
-
123
- return content_document_id, file_url, f"File {filename} uploaded successfully for {field_name}"
124
  except Exception as e:
125
- return None, None, f"Error uploading {filename} to Salesforce for {field_name}: {str(e)}"
126
 
127
  # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
128
  def generate_dpr(files):
@@ -161,40 +158,24 @@ def generate_dpr(files):
161
  # Salesforce upload
162
  salesforce_result = ""
163
  pdf_content_document_id = None
164
- pdf_url = None
165
- image_urls = []
166
  image_content_document_ids = []
167
 
168
  if sf and pdf_filepath:
169
  try:
170
- # Upload PDF to Salesforce for Report_PDF__c
171
- pdf_content_document_id, pdf_url, pdf_upload_result = upload_file_to_salesforce(
172
- pdf_filepath, pdf_filename, sf, 'Report_PDF__c'
173
- )
174
- salesforce_result += pdf_upload_result + "\n"
175
-
176
- # Upload images to Salesforce for Site_Images__c
177
- for file in files:
178
- image_filename = os.path.basename(file.name)
179
- image_content_document_id, image_url, image_upload_result = upload_file_to_salesforce(
180
- file.name, image_filename, sf, 'Site_Images__c'
181
- )
182
- if image_content_document_id and image_url:
183
- image_content_document_ids.append(image_content_document_id)
184
- image_urls.append(image_url)
185
- salesforce_result += image_upload_result + "\n"
186
-
187
- # Create Daily_Progress_Reports__c record with file URLs
188
  report_description = "; ".join(captions)[:255] # Concatenate captions, limit to 255 chars
189
- images_urls_str = ";".join(image_urls) # Semicolon-separated image URLs
190
  dpr_record = sf.Daily_Progress_Reports__c.create({
191
- 'Report_Description__c': report_description,
192
- 'Report_PDF__c': pdf_url if pdf_url else '',
193
- 'Site_Images__c': images_urls_str if images_urls_str else ''
194
  })
195
  dpr_record_id = dpr_record['id']
196
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
197
 
 
 
 
 
 
 
198
  # Link PDF to DPR record
199
  if pdf_content_document_id:
200
  sf.ContentDocumentLink.create({
@@ -203,13 +184,23 @@ def generate_dpr(files):
203
  'ShareType': 'V'
204
  })
205
 
206
- # Link images to DPR record
207
- for image_content_document_id in image_content_document_ids:
208
- sf.ContentDocumentLink.create({
209
- 'ContentDocumentId': image_content_document_id,
210
- 'LinkedEntityId': dpr_record_id,
211
- 'ShareType': 'V'
212
- })
 
 
 
 
 
 
 
 
 
 
213
 
214
  except Exception as e:
215
  salesforce_result += f"Error interacting with Salesforce: {str(e)}\n"
@@ -231,7 +222,7 @@ iface = gr.Interface(
231
  gr.File(label="Download PDF")
232
  ],
233
  title="Daily Progress Report Generator",
234
- description="Upload up to 10 site photos. The AI model will generate a text-based Daily Progress Report (DPR), save it as a PDF, and upload the PDF to Report_PDF__c and images to Site_Images__c in Salesforce under Daily_Progress_Reports__c. Download the PDF locally if needed.",
235
  allow_flagging="never"
236
  )
237
 
 
94
  except Exception as e:
95
  return f"Error saving PDF: {str(e)}", None
96
 
97
+ # Function to upload a file to Salesforce as ContentVersion
98
+ def upload_file_to_salesforce(file_path, filename, sf_connection):
99
  try:
100
  # Read file content and encode in base64
101
  with open(file_path, 'rb') as f:
 
107
  'Title': filename,
108
  'PathOnClient': filename,
109
  'VersionData': file_content_b64,
110
+ 'Description': f'Uploaded for Daily Progress Report'
111
  })
112
 
113
  # Get ContentDocumentId
 
117
  )
118
  content_document_id = content_document['records'][0]['ContentDocumentId']
119
 
120
+ return content_document_id, f"File {filename} uploaded successfully"
 
 
 
121
  except Exception as e:
122
+ return None, f"Error uploading {filename} to Salesforce: {str(e)}"
123
 
124
  # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
125
  def generate_dpr(files):
 
158
  # Salesforce upload
159
  salesforce_result = ""
160
  pdf_content_document_id = None
 
 
161
  image_content_document_ids = []
162
 
163
  if sf and pdf_filepath:
164
  try:
165
+ # Create Daily_Progress_Reports__c record
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  report_description = "; ".join(captions)[:255] # Concatenate captions, limit to 255 chars
 
167
  dpr_record = sf.Daily_Progress_Reports__c.create({
168
+ 'Report_Description__c': report_description
 
 
169
  })
170
  dpr_record_id = dpr_record['id']
171
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
172
 
173
+ # Upload PDF to Salesforce
174
+ pdf_content_document_id, pdf_upload_result = upload_file_to_salesforce(
175
+ pdf_filepath, pdf_filename, sf
176
+ )
177
+ salesforce_result += pdf_upload_result + "\n"
178
+
179
  # Link PDF to DPR record
180
  if pdf_content_document_id:
181
  sf.ContentDocumentLink.create({
 
184
  'ShareType': 'V'
185
  })
186
 
187
+ # Upload images to Salesforce
188
+ for file in files:
189
+ image_filename = os.path.basename(file.name)
190
+ image_content_document_id, image_upload_result = upload_file_to_salesforce(
191
+ file.name, image_filename, sf
192
+ )
193
+ if image_content_document_id:
194
+ image_content_document_ids.append(image_content_document_id)
195
+ salesforce_result += image_upload_result + "\n"
196
+
197
+ # Link image to DPR record
198
+ if image_content_document_id:
199
+ sf.ContentDocumentLink.create({
200
+ 'ContentDocumentId': image_content_document_id,
201
+ 'LinkedEntityId': dpr_record_id,
202
+ 'ShareType': 'V'
203
+ })
204
 
205
  except Exception as e:
206
  salesforce_result += f"Error interacting with Salesforce: {str(e)}\n"
 
222
  gr.File(label="Download PDF")
223
  ],
224
  title="Daily Progress Report Generator",
225
+ description="Upload up to 10 site photos. The AI model will generate a text-based Daily Progress Report (DPR), save it as a PDF, and upload the PDF and images to Salesforce under Daily_Progress_Reports__c in the Files related list. Download the PDF locally if needed.",
226
  allow_flagging="never"
227
  )
228