Update app.py
Browse files
app.py
CHANGED
|
@@ -79,7 +79,7 @@ def init_salesforce():
|
|
| 79 |
|
| 80 |
# Test read access on Project_Closure_Handover__c
|
| 81 |
test_query = sf.query("SELECT Id FROM Project_Closure_Handover__c LIMIT 1")
|
| 82 |
-
logging.info(f"Test query result (read access): {test_query}")
|
| 83 |
|
| 84 |
# Describe Project_Closure_Handover__c to find the related object for Project_ID__c
|
| 85 |
object_description = sf.Project_Closure_Handover__c.describe()
|
|
@@ -110,6 +110,10 @@ def init_salesforce():
|
|
| 110 |
related_fields = [field['name'] for field in related_object_description['fields']]
|
| 111 |
logging.info(f"Fields on {related_object}: {related_fields}")
|
| 112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
# Test object permissions for Project_Closure_Handover__c
|
| 114 |
permissions = {
|
| 115 |
"createable": object_description.get("createable", False),
|
|
@@ -133,17 +137,27 @@ def init_salesforce():
|
|
| 133 |
# Function to get the Salesforce record ID for a project based on its custom identifier
|
| 134 |
def get_project_record_id(sf, related_object, project_code):
|
| 135 |
try:
|
| 136 |
-
#
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
except SalesforceError as e:
|
| 148 |
logging.error(f"Failed to query project record: {str(e)}")
|
| 149 |
return None, f"Salesforce query error: {str(e)}"
|
|
|
|
| 79 |
|
| 80 |
# Test read access on Project_Closure_Handover__c
|
| 81 |
test_query = sf.query("SELECT Id FROM Project_Closure_Handover__c LIMIT 1")
|
| 82 |
+
logging.info(f"Test query result (read access on Project_Closure_Handover__c): {test_query}")
|
| 83 |
|
| 84 |
# Describe Project_Closure_Handover__c to find the related object for Project_ID__c
|
| 85 |
object_description = sf.Project_Closure_Handover__c.describe()
|
|
|
|
| 110 |
related_fields = [field['name'] for field in related_object_description['fields']]
|
| 111 |
logging.info(f"Fields on {related_object}: {related_fields}")
|
| 112 |
|
| 113 |
+
# Log some sample data from the related object to confirm records exist
|
| 114 |
+
sample_data_query = sf.query(f"SELECT Id, Name FROM {related_object} LIMIT 5")
|
| 115 |
+
logging.info(f"Sample data from {related_object}: {sample_data_query['records']}")
|
| 116 |
+
|
| 117 |
# Test object permissions for Project_Closure_Handover__c
|
| 118 |
permissions = {
|
| 119 |
"createable": object_description.get("createable", False),
|
|
|
|
| 137 |
# Function to get the Salesforce record ID for a project based on its custom identifier
|
| 138 |
def get_project_record_id(sf, related_object, project_code):
|
| 139 |
try:
|
| 140 |
+
# Sanitize the project_code to prevent SOQL injection
|
| 141 |
+
project_code = bleach.clean(project_code.strip())
|
| 142 |
+
|
| 143 |
+
# Try multiple fields to match the project_code
|
| 144 |
+
fields_to_try = ['Name', 'Project_Code__c', 'External_ID__c']
|
| 145 |
+
record_id = None
|
| 146 |
+
for field in fields_to_try:
|
| 147 |
+
query = f"SELECT Id FROM {related_object} WHERE {field} = '{project_code}' LIMIT 1"
|
| 148 |
+
logging.info(f"Trying query: {query}")
|
| 149 |
+
result = sf.query(query)
|
| 150 |
+
logging.debug(f"Query result for {field}: {result}")
|
| 151 |
+
if result['totalSize'] > 0:
|
| 152 |
+
record_id = result['records'][0]['Id']
|
| 153 |
+
logging.info(f"Found project record ID: {record_id} for {field}: {project_code} in {related_object}")
|
| 154 |
+
return record_id, "Success"
|
| 155 |
+
else:
|
| 156 |
+
logging.info(f"No project found with {field}: {project_code} in {related_object}")
|
| 157 |
+
|
| 158 |
+
# If no record is found after trying all fields
|
| 159 |
+
logging.error(f"No project found with {project_code} in {related_object} after trying fields: {fields_to_try}")
|
| 160 |
+
return None, f"No project found with {project_code} in {related_object} after trying fields: {fields_to_try}"
|
| 161 |
except SalesforceError as e:
|
| 162 |
logging.error(f"Failed to query project record: {str(e)}")
|
| 163 |
return None, f"Salesforce query error: {str(e)}"
|