Dineshpopuri commited on
Commit
b11ca30
·
verified ·
1 Parent(s): de230b7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -12
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
- # Query the related object to find a record matching the project_code
137
- # Using 'Name' as the field to match PRJ-001; adjust if the field name is different
138
- query = f"SELECT Id FROM {related_object} WHERE Name = '{project_code}' LIMIT 1"
139
- result = sf.query(query)
140
- logging.debug(f"Project query result: {result}")
141
- if result['totalSize'] == 0:
142
- logging.error(f"No project found with Name: {project_code} in {related_object}")
143
- return None, f"No project found with Name: {project_code} in {related_object}"
144
- record_id = result['records'][0]['Id']
145
- logging.info(f"Found project record ID: {record_id} for Name: {project_code}")
146
- return record_id, "Success"
 
 
 
 
 
 
 
 
 
 
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)}"