Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -15,7 +15,7 @@ from fastapi import FastAPI, Form, File, UploadFile
|
|
15 |
from fastapi.middleware.cors import CORSMiddleware
|
16 |
from fastapi.responses import JSONResponse
|
17 |
from fastapi.staticfiles import StaticFiles
|
18 |
-
from dotenv import load_dotenv
|
19 |
|
20 |
# Load environment variables from .env file
|
21 |
load_dotenv()
|
@@ -28,14 +28,14 @@ logger = logging.getLogger(__name__)
|
|
28 |
SALESFORCE_USERNAME = os.getenv("SALESFORCE_USERNAME")
|
29 |
SALESFORCE_PASSWORD = os.getenv("SALESFORCE_PASSWORD")
|
30 |
SALESFORCE_SECURITY_TOKEN = os.getenv("SALESFORCE_SECURITY_TOKEN")
|
31 |
-
SALESFORCE_DOMAIN = os.getenv("SALESFORCE_DOMAIN", "login")
|
32 |
|
33 |
# Validate that credentials are set
|
34 |
if not all([SALESFORCE_USERNAME, SALESFORCE_PASSWORD, SALESFORCE_SECURITY_TOKEN]):
|
35 |
logger.error("Salesforce credentials not set in environment variables. Please set SALESFORCE_USERNAME, SALESFORCE_PASSWORD, and SALESFORCE_SECURITY_TOKEN.")
|
36 |
raise ValueError("Missing Salesforce credentials in environment variables.")
|
37 |
|
38 |
-
logger.debug(
|
39 |
|
40 |
# Function to authenticate with Salesforce
|
41 |
def get_salesforce_connection():
|
@@ -318,7 +318,6 @@ def gradio_interface(boq_file, weather, workforce, location, project_title):
|
|
318 |
if not update_result:
|
319 |
logger.warning("Failed to update record with PDF URL, but record was created")
|
320 |
|
321 |
-
# Upload Gantt chart image to Salesforce for a public URL
|
322 |
image_content_id = upload_file_to_salesforce(file_path, f"{project_title}_Gantt_Chart.png", record_id)
|
323 |
image_url = None
|
324 |
if image_content_id:
|
@@ -351,13 +350,19 @@ app.add_middleware(
|
|
351 |
app.mount("/static", StaticFiles(directory=tempfile.gettempdir()), name="static")
|
352 |
|
353 |
# Mount Gradio's static assets to fix UI rendering issue
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
|
362 |
# Health check endpoint to verify static asset availability
|
363 |
@app.get("/health")
|
@@ -379,7 +384,6 @@ async def api_gradio_interface(
|
|
379 |
try:
|
380 |
logger.info("Starting api_gradio_interface...")
|
381 |
|
382 |
-
# Save uploaded file to temporary path
|
383 |
temp_dir = tempfile.mkdtemp()
|
384 |
boq_file_path = os.path.join(temp_dir, boq_file.filename)
|
385 |
with open(boq_file_path, "wb") as f:
|
|
|
15 |
from fastapi.middleware.cors import CORSMiddleware
|
16 |
from fastapi.responses import JSONResponse
|
17 |
from fastapi.staticfiles import StaticFiles
|
18 |
+
from dotenv import load_dotenv
|
19 |
|
20 |
# Load environment variables from .env file
|
21 |
load_dotenv()
|
|
|
28 |
SALESFORCE_USERNAME = os.getenv("SALESFORCE_USERNAME")
|
29 |
SALESFORCE_PASSWORD = os.getenv("SALESFORCE_PASSWORD")
|
30 |
SALESFORCE_SECURITY_TOKEN = os.getenv("SALESFORCE_SECURITY_TOKEN")
|
31 |
+
SALESFORCE_DOMAIN = os.getenv("SALESFORCE_DOMAIN", "login")
|
32 |
|
33 |
# Validate that credentials are set
|
34 |
if not all([SALESFORCE_USERNAME, SALESFORCE_PASSWORD, SALESFORCE_SECURITY_TOKEN]):
|
35 |
logger.error("Salesforce credentials not set in environment variables. Please set SALESFORCE_USERNAME, SALESFORCE_PASSWORD, and SALESFORCE_SECURITY_TOKEN.")
|
36 |
raise ValueError("Missing Salesforce credentials in environment variables.")
|
37 |
|
38 |
+
logger.debug("Using Salesforce credentials - Username and Security Token loaded from environment variables.")
|
39 |
|
40 |
# Function to authenticate with Salesforce
|
41 |
def get_salesforce_connection():
|
|
|
318 |
if not update_result:
|
319 |
logger.warning("Failed to update record with PDF URL, but record was created")
|
320 |
|
|
|
321 |
image_content_id = upload_file_to_salesforce(file_path, f"{project_title}_Gantt_Chart.png", record_id)
|
322 |
image_url = None
|
323 |
if image_content_id:
|
|
|
350 |
app.mount("/static", StaticFiles(directory=tempfile.gettempdir()), name="static")
|
351 |
|
352 |
# Mount Gradio's static assets to fix UI rendering issue
|
353 |
+
gradio_base_path = gr.__path__[0]
|
354 |
+
gradio_static_path = os.path.join(gradio_base_path, "templates", "frontend", "dist")
|
355 |
+
|
356 |
+
# Fallback to alternative path if dist is not found
|
357 |
+
if not os.path.exists(gradio_static_path):
|
358 |
+
gradio_static_path = os.path.join(gradio_base_path, "templates", "frontend", "build")
|
359 |
+
if not os.path.exists(gradio_static_path):
|
360 |
+
logger.error(f"Gradio static assets directory not found at {gradio_static_path}. Attempted paths: templates/frontend/dist, templates/frontend/build.")
|
361 |
+
logger.error("Please ensure Gradio's frontend assets are built by reinstalling Gradio or manually building the frontend with 'npm run build' in the Gradio frontend directory.")
|
362 |
+
raise FileNotFoundError(f"Gradio static assets not found. Please rebuild Gradio's frontend assets.")
|
363 |
+
|
364 |
+
app.mount("/_app", StaticFiles(directory=gradio_static_path), name="gradio_static")
|
365 |
+
logger.info(f"Mounted Gradio static assets at {gradio_static_path}")
|
366 |
|
367 |
# Health check endpoint to verify static asset availability
|
368 |
@app.get("/health")
|
|
|
384 |
try:
|
385 |
logger.info("Starting api_gradio_interface...")
|
386 |
|
|
|
387 |
temp_dir = tempfile.mkdtemp()
|
388 |
boq_file_path = os.path.join(temp_dir, boq_file.filename)
|
389 |
with open(boq_file_path, "wb") as f:
|