Rammohan0504 commited on
Commit
f5b14a7
·
verified ·
1 Parent(s): 184d591

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -35
app.py CHANGED
@@ -111,43 +111,43 @@ def save_dpr_to_pdf(dpr_text, image_paths, captions, filename):
111
  except Exception as e:
112
  return f"Error saving PDF: {str(e)}", None
113
 
114
- # Function to upload a file to Salesforce as ContentVersion
115
- # Function to upload a file to Salesforce as ContentVersion
116
- def upload_file_to_salesforce(file_path, file_name, sf_connection, file_type):
117
  try:
118
- # Read file content and encode in base64
119
- with open(file_path, 'rb') as f:
120
- file_content = f.read()
121
- file_content_b64 = base64.b64encode(file_content).decode('utf-8')
122
-
123
- # Set description based on file type
124
- description = "Daily Progress Report PDF" if file_type == "pdf" else "Site Image"
125
-
126
- # Create ContentVersion
127
- content_version = sf_connection.ContentVersion.create({
128
- 'Title': file_name,
129
- 'PathOnClient': file_name,
130
- 'VersionData': file_content_b64,
131
- 'Description': description
132
- })
133
-
134
- # Get ContentDocumentId
135
- content_version_id = content_version['id']
136
- content_document = sf_connection.query(
137
- f"SELECT ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'"
138
- )
139
- content_document_id = content_document['records'][0]['ContentDocumentId']
140
-
141
- # Correctly generate Salesforce URL (use the correct instance and format)
142
- instance_url = sf_connection.sf_instance # Salesforce instance (e.g., na1, eu2)
143
- content_document_url = f"https://{instance_url}.salesforce.com/sfc/servlet.shepherd/document/download/{content_document_id}"
144
 
145
- # Ensure the link is valid
146
- return content_document_id, content_document_url, f"File {file_name} uploaded successfully"
 
 
 
 
 
 
 
 
 
 
 
147
  except Exception as e:
148
- return None, None, f"Error uploading {file_name} to Salesforce: {str(e)}"
 
149
 
150
- # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
151
  def generate_dpr(files):
152
  dpr_text = []
153
  captions = []
@@ -200,7 +200,7 @@ def generate_dpr(files):
200
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
201
 
202
  # Upload PDF to Salesforce
203
- pdf_content_document_id, pdf_url, pdf_upload_result = upload_file_to_salesforce(
204
  pdf_filepath, pdf_filename, sf, "pdf"
205
  )
206
  salesforce_result += pdf_upload_result + "\n"
@@ -270,4 +270,3 @@ iface = gr.Interface(
270
 
271
  if __name__ == "__main__":
272
  iface.launch()
273
-
 
111
  except Exception as e:
112
  return f"Error saving PDF: {str(e)}", None
113
 
114
+ # Function to upload a file to Salesforce as ContentVersion and get its download URL
115
+ def upload_pdf_to_salesforce(pdf_file, project_title, record_id=None):
 
116
  try:
117
+ sf = get_salesforce_connection()
118
+ if not sf:
119
+ print("Salesforce connection failed. Cannot upload PDF.")
120
+ return None, None
121
+
122
+ encoded_pdf_data = base64.b64encode(pdf_file.getvalue()).decode('utf-8')
123
+ print(f"Uploading PDF for project: {project_title}, record ID: {record_id}")
124
+ content_version_data = {
125
+ "Title": f"{project_title} - Gantt Chart PDF",
126
+ "PathOnClient": f"{project_title}_Gantt_Chart.pdf",
127
+ "VersionData": encoded_pdf_data,
128
+ }
129
+
130
+ if record_id:
131
+ content_version_data["FirstPublishLocationId"] = record_id
 
 
 
 
 
 
 
 
 
 
 
132
 
133
+ content_version = sf.ContentVersion.create(content_version_data)
134
+ content_version_id = content_version["id"]
135
+ print(f"PDF uploaded to Salesforce with ContentVersion ID: {content_version_id}")
136
+
137
+ result = sf.query(f"SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'")
138
+ if not result['records']:
139
+ print("No records returned for ContentVersion query")
140
+ return content_version_id, None
141
+
142
+ content_document_id = result['records'][0]['ContentDocumentId']
143
+ file_url = f"https://{sf.sf_instance}.salesforce.com/sfc/servlet.shepherd/document/download/{content_document_id}"
144
+ print(f"Generated PDF URL: {file_url}")
145
+ return content_version_id, file_url
146
  except Exception as e:
147
+ print(f"Error uploading PDF to Salesforce: {str(e)}", exc_info=True)
148
+ return None, None
149
 
150
+ # Function to upload files and generate the daily progress report (DPR), save as PDF, and upload to Salesforce
151
  def generate_dpr(files):
152
  dpr_text = []
153
  captions = []
 
200
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
201
 
202
  # Upload PDF to Salesforce
203
+ pdf_content_document_id, pdf_url, pdf_upload_result = upload_pdf_to_salesforce(
204
  pdf_filepath, pdf_filename, sf, "pdf"
205
  )
206
  salesforce_result += pdf_upload_result + "\n"
 
270
 
271
  if __name__ == "__main__":
272
  iface.launch()