fix(plugin): pending upload status not updated
This commit is contained in:
		
							parent
							
								
									e13a863af7
								
							
						
					
					
						commit
						824ce16b4e
					
				@ -206,15 +206,19 @@ async def send_json_override(self, event, data, sid=None):
 | 
			
		||||
        update_run(prompt_id, Status.RUNNING)
 | 
			
		||||
 | 
			
		||||
    # the last executing event is none, then the workflow is finished
 | 
			
		||||
    if event == 'executing' and data.get('node') is None and not have_pending_upload(prompt_id):
 | 
			
		||||
    if event == 'executing' and data.get('node') is None:
 | 
			
		||||
        mark_prompt_done(prompt_id=prompt_id)
 | 
			
		||||
        if not have_pending_upload(prompt_id):
 | 
			
		||||
            update_run(prompt_id, Status.SUCCESS)
 | 
			
		||||
 | 
			
		||||
    if event == 'execution_error':
 | 
			
		||||
        update_run(prompt_id, Status.FAILED)
 | 
			
		||||
        asyncio.create_task(update_run_with_output(prompt_id, data))
 | 
			
		||||
        # await update_run_with_output(prompt_id, data)
 | 
			
		||||
 | 
			
		||||
    if event == 'executed' and 'node' in data and 'output' in data:
 | 
			
		||||
        asyncio.create_task(update_run_with_output(prompt_id, data.get('output'), node_id=data.get('node')))
 | 
			
		||||
        # await update_run_with_output(prompt_id, data.get('output'), node_id=data.get('node'))
 | 
			
		||||
        # update_run_with_output(prompt_id, data.get('output'))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -302,7 +306,22 @@ async def upload_file(prompt_id, filename, subfolder=None, content_type="image/p
 | 
			
		||||
 | 
			
		||||
def have_pending_upload(prompt_id):
 | 
			
		||||
    if 'prompt_id' in prompt_metadata and 'uploading_nodes' in prompt_metadata[prompt_id] and len(prompt_metadata[prompt_id]['uploading_nodes']) > 0:
 | 
			
		||||
        print("have pending upload ", len(prompt_metadata[prompt_id]['uploading_nodes']))
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
    print("no pending upload")
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
def mark_prompt_done(prompt_id):
 | 
			
		||||
    if prompt_id in prompt_metadata:
 | 
			
		||||
        prompt_metadata[prompt_id]["done"] = True
 | 
			
		||||
        print("Prompt done")
 | 
			
		||||
 | 
			
		||||
def is_prompt_done(prompt_id):
 | 
			
		||||
    if prompt_id in prompt_metadata and "done" in prompt_metadata[prompt_id]:
 | 
			
		||||
        if prompt_metadata[prompt_id]["done"] == True:
 | 
			
		||||
            return True
 | 
			
		||||
    
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
async def update_file_status(prompt_id, data, uploading, have_error=False, node_id=None):
 | 
			
		||||
@ -315,7 +334,7 @@ async def update_file_status(prompt_id, data, uploading, have_error=False, node_
 | 
			
		||||
        else:
 | 
			
		||||
            prompt_metadata[prompt_id]['uploading_nodes'].discard(node_id)
 | 
			
		||||
 | 
			
		||||
    # print(prompt_metadata[prompt_id])
 | 
			
		||||
    print(prompt_metadata[prompt_id]['uploading_nodes'])
 | 
			
		||||
    # Update the remote status
 | 
			
		||||
 | 
			
		||||
    if have_error:
 | 
			
		||||
@ -326,16 +345,18 @@ async def update_file_status(prompt_id, data, uploading, have_error=False, node_
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    # if there are still nodes that are uploading, then we set the status to uploading
 | 
			
		||||
    if uploading and have_pending_upload(prompt_id):
 | 
			
		||||
    if uploading:
 | 
			
		||||
        if prompt_metadata[prompt_id]['status'] != Status.UPLOADING:
 | 
			
		||||
            update_run(prompt_id, Status.UPLOADING)
 | 
			
		||||
            print("Status: UPLOADING")
 | 
			
		||||
            await send("uploading", {
 | 
			
		||||
                "prompt_id": prompt_id,
 | 
			
		||||
            })
 | 
			
		||||
    
 | 
			
		||||
    # if there are no nodes that are uploading, then we set the status to success
 | 
			
		||||
    elif not uploading:
 | 
			
		||||
    elif not uploading and not have_pending_upload(prompt_id) and is_prompt_done(prompt_id=prompt_id):
 | 
			
		||||
        update_run(prompt_id, Status.SUCCESS)
 | 
			
		||||
        print("Status: SUCCUSS")
 | 
			
		||||
        await send("success", {
 | 
			
		||||
            "prompt_id": prompt_id,
 | 
			
		||||
        })
 | 
			
		||||
@ -352,7 +373,7 @@ async def update_run_with_output(prompt_id, data, node_id=None):
 | 
			
		||||
        try:
 | 
			
		||||
            have_upload = 'images' in data or 'files' in data
 | 
			
		||||
 | 
			
		||||
            print("have_upload", have_upload)
 | 
			
		||||
            print("\nhave_upload", have_upload, node_id)
 | 
			
		||||
 | 
			
		||||
            if have_upload:
 | 
			
		||||
                await update_file_status(prompt_id, data, True, node_id=node_id)
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,11 @@ export function LiveStatus({
 | 
			
		||||
  //   status = "success";
 | 
			
		||||
  // } else
 | 
			
		||||
  if (data?.json.event == "executing") {
 | 
			
		||||
    if (data?.json?.data?.node == undefined) {
 | 
			
		||||
      status = "success";
 | 
			
		||||
    } else {
 | 
			
		||||
      status = "running";
 | 
			
		||||
    }
 | 
			
		||||
  } else if (data?.json.event == "uploading") {
 | 
			
		||||
    status = "uploading";
 | 
			
		||||
  } else if (data?.json.event == "success") {
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@ export function StatusBadge({
 | 
			
		||||
  status: Awaited<ReturnType<typeof findAllRuns>>[0]["status"];
 | 
			
		||||
}) {
 | 
			
		||||
  switch (status) {
 | 
			
		||||
    case "uploading":
 | 
			
		||||
    case "running":
 | 
			
		||||
      return (
 | 
			
		||||
        <Badge variant="secondary" className="gap-2 w-fit">
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user