Tutor XQueue plugin : XQueue_files link to download

Hi,

I am using Tutor to deploy Open Edx and i would like to use XQueue. I manage to install XQueue via the tutor-xqueue plugin (cf : GitHub - overhangio/tutor-xqueue: Xqueue plugin for Tutor) but i have an issue about the xqueue_files. In the Edx documentation, they said that xqueue_files is a key/value pair where “each key is a file name, and each value is the location of the file”. They gave this example :
"xqueue_files": { "helloworld.c": "http://download.location.com/helloworld.c" }
In my case, instead of a link, i have the name of the docker folder where the files are stored.
Does Tutor allow some configuration to have a direct download link (like a endpoint to get the file easily) ? Or to put the files submissions into an AWS S3 ?

Hi @iammaxence,
This does look like a bug, but I have no idea how to reproduce it, as I have very limited experience with Xqueue. Can you please describe step-by-step how to reproduce the issue?

Hi,
After installing the “tutor-xqueue” plugin like all the other plugins, I activate it.

  1. I create a course in the management studio. In this course, i create a unit where i add a new component (problem). Then i select Blank Advanced Problem. Here is the code that i use to create the bloc problem :
  <h1>EXERCICE 1 </h1>
  <coderesponse queuename="openedx">
    <filesubmission/>
    <codeparam>
      <grader_payload>
        {"mycourse": "exo1"}
      </grader_payload>
    </codeparam>
  </coderesponse>
</problem>

I publish the course.

  1. I select the course and i submit a file.
  2. I make request on the XQueue. Here is my request :
#Login Request : Allow us to get submission from the xqueue
http://xqueue.local.overhang.io/xqueue/login/

#Get Submission in the xqueue
http://xqueue.local.overhang.io/xqueue/get_submission?queue_name=openedx

The response i got from the second request is :

{
"xqueue_header" : {"submission_id": 7, "submission_key": "6cb73ff9c2e65c5beb4cd6ce3aff6801"}, 
"xqueue_body" : { 
                  "grader_payload ": {"gitcourse": "exo3"} ,
                  "xqueue_file" : {
                                   "myfile.zip": "openedx/1574f4c2eca142d0d7da68f1b9111e86"
                                   }
                 }
}

Then, you can see the “XQueue_file” value is compose of {name of the file, location of the file in the docker}.

ps: I dont know if it’s a bug or if i have to make some changes to be able to get the file without doing a “Docker cp” to copy the file to my host.

I had a look at this; I think this may be due to the fact that the MEDIA_URL setting is set to an empty string in xqueue/settings.py. That’s because xqueue_files points to models.Submission.s3_urls, which itself is set by _upload_file_dict, which returns the same url as the standard Django default storage:

https://docs.djangoproject.com/en/3.2/ref/files/storage/#django.core.files.storage.FileSystemStorage
https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-MEDIA_URL

I know that @NeOneSoft is working on the upgrade to Lilac. Would you be interested in testing and fixing this issue? Whatever happens @iammaxence, this warrants the creation of a GitHub issue. Could you please create one in the tutor-xqueue repo? Issues · overhangio/tutor-xqueue · GitHub Remember to add a link to this conversation.

I created an issue on the tutor-xqueue repo : XQueue_files link to download · Issue #2 · overhangio/tutor-xqueue · GitHub.