Implement adhoc submissions option #378
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We experienced many issues with Turnitin's API response time affecting our servers during periods of high numbers of submissions. Back in 2015 I implemented this system to shift the submission logic over to an adhoc task, allowing it to run in parallel (unlike scheduled tasks) and in the background.
The system has been rock solid and massively helped us. I'd like to propose its inclusion into core, with the option of enabling or disabling it. By default this PR will not change the behaviour of the plugin at all, but if an administrator chose to turn on adhoc submissions, the submitting user would be redirected to a waiting page which polls the backend for a result. When the backend has processed the submission, the receipt is then shown to the user as it is now.
This adds one step to the user experience, the waiting page, rather than the blank white page they currently see while the backend does its submitty bit.
This could help solve issues like #290, and it would allow more logic to be added pre-submit to assist with other issues (document conversion/checking using the new core document systems for example) without significantly affecting the user experience & frontend servers.
If you like the idea but feel the code needs altering I'd be happy to do so, I strongly believe this could significantly benefit others as it has us.