summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuchita Lad2025-04-07 15:47:38 +0530
committerSuchita Lad2025-04-07 15:47:38 +0530
commit8ea1cdadc8f9488e973785bff6381183e02be846 (patch)
treed153d6bf1576568a54b554ac89bc17b2f7aaa14a
parentda50dff4e66403996070a5ed1fe00a8e07db9559 (diff)
downloadCommon-Interface-Project-8ea1cdadc8f9488e973785bff6381183e02be846.tar.gz
Common-Interface-Project-8ea1cdadc8f9488e973785bff6381183e02be846.tar.bz2
Common-Interface-Project-8ea1cdadc8f9488e973785bff6381183e02be846.zip
Updated process task to use uploadscript and getscriptoutput
-rw-r--r--blocks/eda-frontend/src/components/SchematicEditor/ToolbarExtension.js30
-rw-r--r--blocks/simulationAPI/tasks.py17
-rw-r--r--blocks/simulationAPI/urls.py1
-rw-r--r--blocks/simulationAPI/views.py33
4 files changed, 21 insertions, 60 deletions
diff --git a/blocks/eda-frontend/src/components/SchematicEditor/ToolbarExtension.js b/blocks/eda-frontend/src/components/SchematicEditor/ToolbarExtension.js
index 4e0633b0..33b7594b 100644
--- a/blocks/eda-frontend/src/components/SchematicEditor/ToolbarExtension.js
+++ b/blocks/eda-frontend/src/components/SchematicEditor/ToolbarExtension.js
@@ -347,24 +347,6 @@ export function ScriptScreen ({ isOpen, onClose }) {
dispatch(setShowDot(true))
}
- const fetchScriptOutput = async (taskId) => {
- console.log('Fetching script output for task:', taskId)
- try {
- const response = await api.get(`simulation/get_script_output/${taskId}`)
- const data = response.data
- console.log('data:', data)
- setResult(data.output || 'No output available.')
-
- if (data.variables && Array.isArray(data.variables)) {
- console.log('Variables:', data.variables)
- setVariables(data.variables)
- }
- return data
- } catch (error) {
- console.error('Error fetching script output:', error)
- setResult('Error fetching script output.')
- }
- }
const prepareScriptNetlist = (scriptDump) => {
const titleA = title.split(' ')[1]
@@ -379,16 +361,14 @@ export function ScriptScreen ({ isOpen, onClose }) {
function sendSriptNetlist (file, type) {
netlistConfig(file, type)
.then((response) => {
- const res = response.data
- const taskId = res.details.task_id
+ const data = response.data
+ const taskId = data.task_id
dispatch(setScriptTaskId(taskId))
- setTimeout(() => {
- fetchScriptOutput(taskId)
- .then(() => {
+ console.log('taskId2:', taskId)
+ setResult(data.output || 'No output available.')
+ setVariables(data.variables)
- })
- }, 3000)
})
.catch(function (error) {
console.error(error)
diff --git a/blocks/simulationAPI/tasks.py b/blocks/simulationAPI/tasks.py
index 7360fcc6..5d18d789 100644
--- a/blocks/simulationAPI/tasks.py
+++ b/blocks/simulationAPI/tasks.py
@@ -41,8 +41,10 @@ def process_task(self, task_id):
if task_type == 'SCRIPT':
output = uploadscript(task.session, task)
- state = 'STREAMING'
- current_process = 'Processed Script, Streaming Output'
+ output = getscriptoutput(task.session, task)
+ state = 'SUCCESS'
+ update_task_status(task_id, state,
+ meta=output)
else:
output = ExecXml(task, self.name, task.workspace_file)
if output == "Streaming":
@@ -52,8 +54,9 @@ def process_task(self, task_id):
state = 'SUCCESS'
current_process = 'Processed Xml, Loading Output'
- update_task_status(task_id, state,
+ update_task_status(task_id, state,
meta={'current_process': current_process})
+
return output
except Exception as e:
@@ -68,11 +71,3 @@ def process_task(self, task_id):
finally:
release_lock(lock) # Ensure lock is always released
-
-@shared_task
-def process_task_script(task_id):
- task = Task.objects.get(task_id=task_id)
- session = task.session
- result = getscriptoutput(session, task)
- update_task_status(task_id, 'SUCCESS', meta=result)
- return result
diff --git a/blocks/simulationAPI/urls.py b/blocks/simulationAPI/urls.py
index 04d91a2e..1714a768 100644
--- a/blocks/simulationAPI/urls.py
+++ b/blocks/simulationAPI/urls.py
@@ -19,5 +19,4 @@ urlpatterns = [
path('get_session', simulationAPI_views.get_session, name='get_session'),
- path('get_script_output/<uuid:task_id>', simulationAPI_views.GetScriptOutputView.as_view(), name='get_script_output'),
]
diff --git a/blocks/simulationAPI/views.py b/blocks/simulationAPI/views.py
index 03494c46..625aa774 100644
--- a/blocks/simulationAPI/views.py
+++ b/blocks/simulationAPI/views.py
@@ -16,7 +16,7 @@ from blocks.celery_tasks import app
from simulationAPI.models import Task, Session
from simulationAPI.negotiation import IgnoreClientContentNegotiation
from simulationAPI.serializers import TaskSerializer
-from simulationAPI.tasks import process_task, process_task_script
+from simulationAPI.tasks import process_task
from simulationAPI.helpers.ngspice_helper import CreateXcos, update_task_status
@@ -84,10 +84,15 @@ class XmlUploader(APIView):
task_id = serializer.data['task_id']
celery_task = process_task.apply_async(
kwargs={'task_id': str(task_id)}, task_id=str(task_id))
- response_data = {
- 'state': celery_task.state,
- 'details': serializer.data,
- }
+ if task_type == 'XCOS':
+ response_data = {
+ 'state': celery_task.state,
+ 'details': serializer.data,
+ }
+ else:
+ rv = celery_task.get(timeout=10)
+ response_data = {**rv, 'task_id':task_id}
+
return Response(response_data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@@ -370,24 +375,6 @@ class StreamView(APIView):
yield "event: DONE\ndata: None\n\n"
-class GetScriptOutputView(APIView):
- """
- API endpoint to get the output of a script execution.
- """
-
- def get(self, request, task_id, *args, **kwargs):
-
- try:
- celery_task = process_task_script.apply_async(kwargs={'task_id': str(task_id)}, task_id=str(uuid.uuid4()))
- result = celery_task.get(timeout=30)
- update_task_status(celery_task.id, 'SUCCESS', meta=result)
- print("RESULT:", result)
- return Response(result, status=status.HTTP_200_OK)
- except Exception as e:
- logger.error(f"Error calling getscriptoutput (Task_id: {task_id}): {str(e)}")
- return Response({"error": "Internal server error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-
-
def get_session(request):
if not request.session.session_key:
request.session.save() # Create a new session if not already exists