Server Tasks don't render labels (AssertionError)
We observed this in the log:
2025-08-20 13:44:31,028 [debusine/2239921/139644496770752] WARNING: Widget rendering error: Widget <FilterExpression 'paginator'> (<debusine.web.views.table.paginator.Paginator object at 0
x7f01b2a129d0>) failed to render
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/debusine/web/templatetags/debusine.py", line 125, in render
return value.render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/debusine/web/views/table/paginator.py", line 168, in render
return template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 177, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 1005, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/defaulttags.py", line 238, in render
nodelist.append(node.render_annotated(context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 1064, in render
output = self.filter_expression.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 715, in resolve
obj = self.var.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 847, in resolve
value = self._resolve_lookup(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 914, in _resolve_lookup
current = current()
^^^^^^^^^
File "/usr/lib/python3/dist-packages/debusine/db/models/work_requests.py", line 2629, in get_label
return task.get_label()
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/debusine/server/tasks/create_experiment_workspace.py", line 120, in get_label
f" {self.get_experiment_workspace_name()!r}"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/debusine/server/tasks/create_experiment_workspace.py", line 41, in get_experiment_workspace_name
assert self.work_request is not None
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
I'm not exactly sure what page failed to render, but it's not important. There's a logic bug here.
CreateExperimentWorkspace.get_label
assumes that work_request
has been set on the object. That only happens in the celery context, not via WorkRequest.get_task()
which was probably how this got instantiated. Maybe we should adjust WorkRequest.get_task()
to fully instantiate Server tasks?