diff options
author | Suchita Lad | 2025-04-07 15:47:38 +0530 |
---|---|---|
committer | Suchita Lad | 2025-04-07 15:47:38 +0530 |
commit | 8ea1cdadc8f9488e973785bff6381183e02be846 (patch) | |
tree | d153d6bf1576568a54b554ac89bc17b2f7aaa14a | |
parent | da50dff4e66403996070a5ed1fe00a8e07db9559 (diff) | |
download | Common-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.js | 30 | ||||
-rw-r--r-- | blocks/simulationAPI/tasks.py | 17 | ||||
-rw-r--r-- | blocks/simulationAPI/urls.py | 1 | ||||
-rw-r--r-- | blocks/simulationAPI/views.py | 33 |
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 |