Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -94,7 +94,7 @@ 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
|
98 |
def upload_file_to_salesforce(file_path, filename, sf_connection, field_name):
|
99 |
try:
|
100 |
# Read file content and encode in base64
|
@@ -117,9 +117,12 @@ def upload_file_to_salesforce(file_path, filename, sf_connection, field_name):
|
|
117 |
)
|
118 |
content_document_id = content_document['records'][0]['ContentDocumentId']
|
119 |
|
120 |
-
|
|
|
|
|
|
|
121 |
except Exception as e:
|
122 |
-
return None, f"Error uploading {filename} to Salesforce for {field_name}: {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,12 +161,14 @@ 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 |
# Upload PDF to Salesforce for Report_PDF__c
|
166 |
-
pdf_content_document_id, pdf_upload_result = upload_file_to_salesforce(
|
167 |
pdf_filepath, pdf_filename, sf, 'Report_PDF__c'
|
168 |
)
|
169 |
salesforce_result += pdf_upload_result + "\n"
|
@@ -171,20 +176,21 @@ def generate_dpr(files):
|
|
171 |
# Upload images to Salesforce for Site_Images__c
|
172 |
for file in files:
|
173 |
image_filename = os.path.basename(file.name)
|
174 |
-
image_content_document_id, image_upload_result = upload_file_to_salesforce(
|
175 |
file.name, image_filename, sf, 'Site_Images__c'
|
176 |
)
|
177 |
-
if image_content_document_id:
|
178 |
image_content_document_ids.append(image_content_document_id)
|
|
|
179 |
salesforce_result += image_upload_result + "\n"
|
180 |
|
181 |
-
# Create Daily_Progress_Reports__c record with file
|
182 |
report_description = "; ".join(captions)[:255] # Concatenate captions, limit to 255 chars
|
183 |
-
|
184 |
dpr_record = sf.Daily_Progress_Reports__c.create({
|
185 |
'Report_Description__c': report_description,
|
186 |
-
'Report_PDF__c':
|
187 |
-
'Site_Images__c':
|
188 |
})
|
189 |
dpr_record_id = dpr_record['id']
|
190 |
salesforce_result += f"Created Daily_Progress_Reports__c record with ID: {dpr_record_id}\n"
|
|
|
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
|
|
|
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 |
# 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"
|
|
|
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"
|