AsyncFormView/AsyncPostView: Allow to report status back

This commit is contained in:
Raphael Michel
2022-09-30 13:58:07 +02:00
parent f14d031de4
commit b1c8efa33f

View File

@@ -215,6 +215,13 @@ class AsyncFormView(AsyncMixin, FormView):
expected_exceptions = (ValidationError,)
task_base = ProfiledEventTask
def async_set_progress(self, percentage):
if not self._task_self.request.called_directly:
self._task_self.update_state(
state='PROGRESS',
meta={'value': percentage}
)
def __init_subclass__(cls):
def async_execute(self, *, request_path, query_string, form_kwargs, locale, tz, url_kwargs=None, url_args=None,
organizer=None, event=None, user=None, session_key=None):
@@ -240,6 +247,9 @@ class AsyncFormView(AsyncMixin, FormView):
self.SessionStore = engine.SessionStore
view_instance.request.session = self.SessionStore(session_key)
task_self = self
view_instance._task_self = task_self
with translation.override(locale), timezone.override(pytz.timezone(tz)):
form_class = view_instance.get_form_class()
if form_kwargs.get('instance'):
@@ -331,6 +341,13 @@ class AsyncPostView(AsyncMixin, View):
expected_exceptions = (ValidationError,)
task_base = ProfiledEventTask
def async_set_progress(self, percentage):
if not self._task_self.request.called_directly:
self._task_self.update_state(
state='PROGRESS',
meta={'value': percentage}
)
def __init_subclass__(cls):
def async_execute(self, *, request_path, url_args, url_kwargs, query_string, post_data, locale, tz,
organizer=None, event=None, user=None, session_key=None):
@@ -355,6 +372,9 @@ class AsyncPostView(AsyncMixin, View):
self.SessionStore = engine.SessionStore
view_instance.request.session = self.SessionStore(session_key)
task_self = self
view_instance._task_self = task_self
with translation.override(locale), timezone.override(pytz.timezone(tz)):
return view_instance.async_post(view_instance.request, *url_args, **url_kwargs)