Update app.py
Browse files
app.py
CHANGED
|
@@ -6,13 +6,13 @@ import bleach
|
|
| 6 |
from simple_salesforce import Salesforce, SalesforceError
|
| 7 |
import os
|
| 8 |
|
| 9 |
-
# Salesforce configuration (loaded from environment variables for
|
| 10 |
SF_USERNAME = os.getenv("SF_USERNAME")
|
| 11 |
SF_PASSWORD = os.getenv("SF_PASSWORD")
|
| 12 |
SF_SECURITY_TOKEN = os.getenv("SF_SECURITY_TOKEN")
|
| 13 |
SF_INSTANCE_URL = os.getenv("SF_INSTANCE_URL")
|
| 14 |
|
| 15 |
-
# Initialize Salesforce connection
|
| 16 |
def init_salesforce():
|
| 17 |
try:
|
| 18 |
sf = Salesforce(
|
|
@@ -25,7 +25,7 @@ def init_salesforce():
|
|
| 25 |
except SalesforceError as e:
|
| 26 |
return None, f"Salesforce connection failed: {str(e)}"
|
| 27 |
|
| 28 |
-
# Create Salesforce record
|
| 29 |
def create_salesforce_record(score, checklist_summary, missing_summary, status):
|
| 30 |
sf, connection_message = init_salesforce()
|
| 31 |
if not sf:
|
|
@@ -37,12 +37,13 @@ def create_salesforce_record(score, checklist_summary, missing_summary, status):
|
|
| 37 |
sf_status = "Closed"
|
| 38 |
|
| 39 |
try:
|
|
|
|
| 40 |
record = {
|
| 41 |
"Subject": "Project Readiness Evaluation",
|
| 42 |
"Description": f"Readiness Score: {score}%\nChecklist Summary:\n{checklist_summary}\nMissing Items: {missing_summary}",
|
| 43 |
"Status": sf_status,
|
| 44 |
-
"Origin": "Web",
|
| 45 |
-
"Priority": "Medium"
|
| 46 |
}
|
| 47 |
result = sf.Case.create(record)
|
| 48 |
return f"Case record created successfully in Salesforce. Case ID: {result['id']}"
|
|
@@ -133,7 +134,7 @@ with gr.Blocks(css="""progress { background-color: #f0f0f0; } .red { background-
|
|
| 133 |
gr.Markdown(
|
| 134 |
"""
|
| 135 |
# Project Closure Readiness Evaluator
|
| 136 |
-
Evaluate project readiness and generate a PDF report.
|
| 137 |
"""
|
| 138 |
)
|
| 139 |
with gr.Row():
|
|
@@ -148,6 +149,8 @@ with gr.Blocks(css="""progress { background-color: #f0f0f0; } .red { background-
|
|
| 148 |
status_output = gr.Textbox(label="Overall Status")
|
| 149 |
checklist_output = gr.Textbox(label="Checklist Summary")
|
| 150 |
missing_output = gr.Textbox(label="Missing Items")
|
|
|
|
|
|
|
| 151 |
pdf_btn = gr.Button("Download PDF Report")
|
| 152 |
pdf_output = gr.File(label="PDF Report")
|
| 153 |
|
|
@@ -158,6 +161,13 @@ with gr.Blocks(css="""progress { background-color: #f0f0f0; } .red { background-
|
|
| 158 |
outputs=[score_output, checklist_output, missing_output, status_output, progress_output]
|
| 159 |
)
|
| 160 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
# Connect PDF button to generate_pdf
|
| 162 |
pdf_btn.click(
|
| 163 |
fn=generate_pdf,
|
|
|
|
| 6 |
from simple_salesforce import Salesforce, SalesforceError
|
| 7 |
import os
|
| 8 |
|
| 9 |
+
# Salesforce configuration (loaded from environment variables for security)
|
| 10 |
SF_USERNAME = os.getenv("SF_USERNAME")
|
| 11 |
SF_PASSWORD = os.getenv("SF_PASSWORD")
|
| 12 |
SF_SECURITY_TOKEN = os.getenv("SF_SECURITY_TOKEN")
|
| 13 |
SF_INSTANCE_URL = os.getenv("SF_INSTANCE_URL")
|
| 14 |
|
| 15 |
+
# Initialize Salesforce connection
|
| 16 |
def init_salesforce():
|
| 17 |
try:
|
| 18 |
sf = Salesforce(
|
|
|
|
| 25 |
except SalesforceError as e:
|
| 26 |
return None, f"Salesforce connection failed: {str(e)}"
|
| 27 |
|
| 28 |
+
# Create Salesforce record using Case object
|
| 29 |
def create_salesforce_record(score, checklist_summary, missing_summary, status):
|
| 30 |
sf, connection_message = init_salesforce()
|
| 31 |
if not sf:
|
|
|
|
| 37 |
sf_status = "Closed"
|
| 38 |
|
| 39 |
try:
|
| 40 |
+
# Create a Case record in Salesforce with required fields
|
| 41 |
record = {
|
| 42 |
"Subject": "Project Readiness Evaluation",
|
| 43 |
"Description": f"Readiness Score: {score}%\nChecklist Summary:\n{checklist_summary}\nMissing Items: {missing_summary}",
|
| 44 |
"Status": sf_status,
|
| 45 |
+
"Origin": "Web", # Required field in many Salesforce orgs
|
| 46 |
+
"Priority": "Medium" # Required field in many Salesforce orgs
|
| 47 |
}
|
| 48 |
result = sf.Case.create(record)
|
| 49 |
return f"Case record created successfully in Salesforce. Case ID: {result['id']}"
|
|
|
|
| 134 |
gr.Markdown(
|
| 135 |
"""
|
| 136 |
# Project Closure Readiness Evaluator
|
| 137 |
+
Evaluate project readiness, save to Salesforce, and generate a PDF report.
|
| 138 |
"""
|
| 139 |
)
|
| 140 |
with gr.Row():
|
|
|
|
| 149 |
status_output = gr.Textbox(label="Overall Status")
|
| 150 |
checklist_output = gr.Textbox(label="Checklist Summary")
|
| 151 |
missing_output = gr.Textbox(label="Missing Items")
|
| 152 |
+
sf_create_btn = gr.Button("Save to Salesforce")
|
| 153 |
+
sf_output = gr.Textbox(label="Salesforce Status")
|
| 154 |
pdf_btn = gr.Button("Download PDF Report")
|
| 155 |
pdf_output = gr.File(label="PDF Report")
|
| 156 |
|
|
|
|
| 161 |
outputs=[score_output, checklist_output, missing_output, status_output, progress_output]
|
| 162 |
)
|
| 163 |
|
| 164 |
+
# Connect Salesforce create button to create_salesforce_record
|
| 165 |
+
sf_create_btn.click(
|
| 166 |
+
fn=create_salesforce_record,
|
| 167 |
+
inputs=[score_output, checklist_output, missing_output, status_output],
|
| 168 |
+
outputs=sf_output
|
| 169 |
+
)
|
| 170 |
+
|
| 171 |
# Connect PDF button to generate_pdf
|
| 172 |
pdf_btn.click(
|
| 173 |
fn=generate_pdf,
|