Rammohan0504 commited on
Commit
bd14ff7
·
verified ·
1 Parent(s): 8286229

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -39
app.py CHANGED
@@ -111,48 +111,41 @@ 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 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
 
125
- content_version_data = {
126
- "Title": f"{project_title} - Gantt Chart PDF",
127
- "PathOnClient": f"{project_title}_Gantt_Chart.pdf",
128
- "VersionData": encoded_pdf_data,
129
- }
130
-
131
- if record_id:
132
- content_version_data["FirstPublishLocationId"] = record_id
133
-
134
- content_version = sf.ContentVersion.create(content_version_data)
135
- content_version_id = content_version["id"]
136
- print(f"PDF uploaded to Salesforce with ContentVersion ID: {content_version_id}")
137
-
138
- # Query the ContentDocumentId
139
- result = sf.query(f"SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'")
140
- if not result['records']:
141
- print("No records returned for ContentVersion query")
142
- return content_version_id, None
143
-
144
- content_document_id = result['records'][0]['ContentDocumentId']
145
 
146
- # Correctly generate Salesforce URL (use the correct instance and format)
147
- instance_url = sf.sf_instance # Get Salesforce instance (e.g., na1, eu2)
148
- file_url = f"https://{instance_url}.salesforce.com/sfc/servlet.shepherd/document/download/{content_document_id}"
149
- print(f"Generated PDF URL: {file_url}")
150
- return content_version_id, file_url
 
 
 
 
 
 
 
151
  except Exception as e:
152
- print(f"Error uploading PDF to Salesforce: {str(e)}", exc_info=True)
153
- return None, None
154
 
155
- # Function to upload files and generate the daily progress report (DPR), save as PDF, and upload to Salesforce
156
  def generate_dpr(files):
157
  dpr_text = []
158
  captions = []
@@ -205,8 +198,8 @@ def generate_dpr(files):
205
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
206
 
207
  # Upload PDF to Salesforce
208
- pdf_content_document_id, pdf_url, pdf_upload_result = upload_pdf_to_salesforce(
209
- pdf_filepath, project_title=pdf_filename # Pass project title as the title
210
  )
211
  salesforce_result += pdf_upload_result + "\n"
212
 
 
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
+ def upload_file_to_salesforce(file_path, filename, sf_connection, file_type):
116
  try:
117
+ # Read file content and encode in base64
118
+ with open(file_path, 'rb') as f:
119
+ file_content = f.read()
120
+ file_content_b64 = base64.b64encode(file_content).decode('utf-8')
 
 
 
121
 
122
+ # Set description based on file type
123
+ description = "Daily Progress Report PDF" if file_type == "pdf" else "Site Image"
124
+
125
+ # Create ContentVersion
126
+ content_version = sf_connection.ContentVersion.create({
127
+ 'Title': filename,
128
+ 'PathOnClient': filename,
129
+ 'VersionData': file_content_b64,
130
+ 'Description': description
131
+ })
 
 
 
 
 
 
 
 
 
 
132
 
133
+ # Get ContentDocumentId
134
+ content_version_id = content_version['id']
135
+ content_document = sf_connection.query(
136
+ f"SELECT ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'"
137
+ )
138
+ content_document_id = content_document['records'][0]['ContentDocumentId']
139
+
140
+ # Generate a valid Salesforce URL for the ContentDocument
141
+ content_document_url = f"https://{sf_connection.sf_instance}.salesforce.com/{content_document_id}"
142
+
143
+ # Ensure the link is valid
144
+ return content_document_id, content_document_url, f"File {filename} uploaded successfully"
145
  except Exception as e:
146
+ return None, None, f"Error uploading {filename} to Salesforce: {str(e)}"
 
147
 
148
+ # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
149
  def generate_dpr(files):
150
  dpr_text = []
151
  captions = []
 
198
  salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
199
 
200
  # Upload PDF to Salesforce
201
+ pdf_content_document_id, pdf_url, pdf_upload_result = upload_file_to_salesforce(
202
+ pdf_filepath, pdf_filename, sf, "pdf"
203
  )
204
  salesforce_result += pdf_upload_result + "\n"
205