Image upload workflowΒΆ

  • User uploads the image using web interface

  • The upload progress is shown on the client side as the chunks of the image are uploaded into gridfs

  • After the last chunk is processed

    • A celery task is submitted to deal with newly uploaded imagefile
    • Update the “status” in the metadata of the imagefile in gridfs to “pending”
  • When celery worker picks up this task, following sub-tasks are executed in sequence

    • Copy file from gridfs into a temporary location
    • Update the “status” in the metadata of the imagefile in gridfs to “processing”
    • Choose the uploader based on file extention
    • Update the image metadata in imagestore
    • Dice the image to a multiresolution pyramid
    • Create a view in corresponding session
    • Update the “status” in the metadata of the imagefile in gridfs to “ready”
    • Cleanup the temporary download location
  • If something goes wrong, the status of imagefile is updated to “failed” with some reason.

  • Now when the user sees imagefile item, the user sees either “finish”, or “retry” buttons. At this time a view is also visible in the session.

  • Finish button will hide the imagefile entry (or delete ?). The imagefile will now be only accessible through imagestore interface (Not ready)