Rammohan0504 commited on
Commit
ba5f8ba
·
verified ·
1 Parent(s): 11c72f7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -24
app.py CHANGED
@@ -113,54 +113,58 @@ def save_dpr_to_pdf(dpr_text, image_paths, captions, filename):
113
 
114
 
115
 
116
- def upload_pdf_to_salesforce(pdf_file, project_title, record_id=None):
 
 
117
  try:
118
- sf = get_salesforce_connection() # Ensure Salesforce connection
119
- if not sf:
120
  logger.error("Salesforce connection failed. Cannot upload PDF.")
121
  return None, None
122
 
123
- # Encode PDF data in base64
124
  encoded_pdf_data = base64.b64encode(pdf_file.getvalue()).decode('utf-8')
125
  logger.debug(f"Uploading PDF for project: {project_title}, record ID: {record_id}")
126
-
127
- # Create ContentVersion
128
- content_version = sf_connection.ContentVersion.create({
129
- 'Title': filename,
130
- 'PathOnClient': filename,
131
- 'VersionData': file_content_b64,
132
- 'Description': description
133
- })
134
-
135
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  if record_id:
137
  content_version_data["FirstPublishLocationId"] = record_id
138
 
139
- # Upload the PDF file to Salesforce
140
- content_version = sf.ContentVersion.create(content_version)
141
  content_version_id = content_version["id"]
142
  logger.info(f"PDF uploaded to Salesforce with ContentVersion ID: {content_version_id}")
143
 
144
- # Query to get the ContentDocumentId
145
- result = sf.query(f"SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'")
146
  if not result['records']:
147
  logger.error("No records returned for ContentVersion query")
148
  return content_version_id, None
149
 
 
150
  content_document_id = result['records'][0]['ContentDocumentId']
151
 
152
- # Correct URL format for downloading the file from Salesforce
153
- file_url = f"https://{sf.sf_instance}.salesforce.com/sfc/servlet.shepherd/document/download/{content_version_id}"
 
 
154
  logger.debug(f"Generated PDF URL: {file_url}")
155
-
156
  return content_version_id, file_url
157
-
158
  except Exception as e:
159
  logger.error(f"Error uploading PDF to Salesforce: {str(e)}", exc_info=True)
160
  return None, None
161
-
162
-
163
-
164
  # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
165
  def generate_dpr(files):
166
  dpr_text = []
 
113
 
114
 
115
 
116
+ import base64
117
+
118
+ def upload_pdf_to_salesforce(pdf_file, project_title, record_id=None, sf_connection=None):
119
  try:
120
+ if not sf_connection:
 
121
  logger.error("Salesforce connection failed. Cannot upload PDF.")
122
  return None, None
123
 
124
+ # Read file content and encode in base64
125
  encoded_pdf_data = base64.b64encode(pdf_file.getvalue()).decode('utf-8')
126
  logger.debug(f"Uploading PDF for project: {project_title}, record ID: {record_id}")
 
 
 
 
 
 
 
 
 
127
 
128
+ # Set description based on file type
129
+ description = "Daily Progress Report PDF" if pdf_file.name.endswith(".pdf") else "Site Image"
130
+
131
+ # Prepare ContentVersion data
132
+ content_version_data = {
133
+ "Title": filename,
134
+ "PathOnClient": filename,
135
+ "VersionData": encoded_pdf_data,
136
+ "Description": description
137
+ }
138
+
139
+ # If a record ID is provided, associate the file with a Salesforce record
140
  if record_id:
141
  content_version_data["FirstPublishLocationId"] = record_id
142
 
143
+ # Create ContentVersion in Salesforce
144
+ content_version = sf_connection.ContentVersion.create(content_version_data)
145
  content_version_id = content_version["id"]
146
  logger.info(f"PDF uploaded to Salesforce with ContentVersion ID: {content_version_id}")
147
 
148
+ # Query to get ContentDocumentId from the ContentVersion record
149
+ result = sf_connection.query(f"SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = '{content_version_id}'")
150
  if not result['records']:
151
  logger.error("No records returned for ContentVersion query")
152
  return content_version_id, None
153
 
154
+ # Retrieve ContentDocumentId
155
  content_document_id = result['records'][0]['ContentDocumentId']
156
 
157
+ # Generate a valid Salesforce URL for the file (Download link)
158
+ instance_url = sf_connection.base_url.split('/')[2] # Extract instance URL (e.g., 'na1', 'ap1', etc.)
159
+ file_url = f"https://{instance_url}.salesforce.com/sfc/servlet.shepherd/version/download/{content_version_id}"
160
+
161
  logger.debug(f"Generated PDF URL: {file_url}")
 
162
  return content_version_id, file_url
163
+
164
  except Exception as e:
165
  logger.error(f"Error uploading PDF to Salesforce: {str(e)}", exc_info=True)
166
  return None, None
167
+
 
 
168
  # Function to generate the daily progress report (DPR), save as PDF, and upload to Salesforce
169
  def generate_dpr(files):
170
  dpr_text = []