Rammohan0504 commited on
Commit
ee25197
·
verified ·
1 Parent(s): 3304a9f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -20
app.py CHANGED
@@ -111,16 +111,18 @@ 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
- 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({
@@ -130,20 +132,34 @@ def upload_file_to_salesforce(file_path, filename, sf_connection, file_type):
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_version_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):
 
111
  except Exception as e:
112
  return f"Error saving PDF: {str(e)}", None
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({
 
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_data)
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_document_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):