Long-running async tasks: Expose running state

This commit is contained in:
Raphael Michel
2020-07-23 21:39:13 +02:00
parent b5dca762f0
commit d58c8559fc
2 changed files with 29 additions and 11 deletions

View File

@@ -77,7 +77,8 @@ class AsyncAction:
data = self._ajax_response_data()
data.update({
'async_id': res.id,
'ready': ready
'ready': ready,
'started': False,
})
if ready:
if res.successful() and not isinstance(res.info, Exception):
@@ -102,8 +103,13 @@ class AsyncAction:
})
elif res.state == 'PROGRESS':
data.update({
'started': True,
'percentage': res.result.get('value', 0)
})
elif res.state == 'STARTED':
data.update({
'started': True,
})
return data
def get_result(self, request):

View File

@@ -38,11 +38,17 @@ function async_task_check_callback(data, jqXHR, status) {
async_task_timeout = window.setTimeout(async_task_check, 250);
if (async_task_is_long) {
$("#loadingmodal p.status").text(gettext(
'Your request has been queued on the server and will now be ' +
'processed. Depending on the size of your event, this might take up to a ' +
'few minutes.'
));
if (data.started) {
$("#loadingmodal p.status").text(gettext(
'Your request is currently being processed. Depending on the size of your event, this might take up to ' +
'a few minutes.'
));
} else {
$("#loadingmodal p.status").text(gettext(
'Your request has been queued on the server and will soon be ' +
'processed.'
));
}
} else {
$("#loadingmodal p.status").text(gettext(
'Your request arrived on the server but we still wait for it to be ' +
@@ -105,11 +111,17 @@ function async_task_callback(data, jqXHR, status) {
async_task_timeout = window.setTimeout(async_task_check, 100);
if (async_task_is_long) {
$("#loadingmodal p.status").text(gettext(
'Your request has been queued on the server and will now be ' +
'processed. Depending on the size of your event, this might take up to a ' +
'few minutes.'
));
if (data.started) {
$("#loadingmodal p.status").text(gettext(
'Your request is currently being processed. Depending on the size of your event, this might take up to ' +
'a few minutes.'
));
} else {
$("#loadingmodal p.status").text(gettext(
'Your request has been queued on the server and will soon be ' +
'processed.'
));
}
} else {
$("#loadingmodal p.status").text(gettext(
'Your request arrived on the server but we still wait for it to be ' +