-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
bug 🐛developer experienceAnything that improves the experience for Warehouse devsAnything that improves the experience for Warehouse devs
Description
Describe the bug
When I navigate to manage/organization/<org_name>/history
I get the following error:
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'submitted_by_user_id'
Expected behavior
The page loads as expected
To Reproduce
- Log In
- Navigate to "Your organizations"
- Click "manage" on an organization
- Select "Security history" in the sidebar
My Platform
Dev
Additional context
Traceback:
Traceback (most recent call last):
File "/opt/warehouse/lib/python3.13/site-packages/pyramid_debugtoolbar/panels/performance.py", line 61, in resource_timer_handler
result = handler(request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid_tm/__init__.py", line 179, in tm_tween
raise exc from None
File "/opt/warehouse/lib/python3.13/site-packages/pyramid_tm/__init__.py", line 145, in tm_tween
response = handler(request)
File "/opt/warehouse/src/warehouse/cache/http.py", line 64, in conditional_http_tween
response = handler(request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid_openapi3/tween.py", line 32, in excview_tween
response = handler(request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/tweens.py", line 43, in excview_tween
response = _error_handler(request, exc)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/tweens.py", line 17, in _error_handler
reraise(*exc_info)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/util.py", line 733, in reraise
raise value
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/tweens.py", line 41, in excview_tween
response = handler(request)
File "/opt/warehouse/src/warehouse/sanity.py", line 66, in sanity_tween_egress
return unicode_redirects(handler(request))
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/router.py", line 143, in handle_request
response = _call_view(
File "/opt/warehouse/lib/python3.13/site-packages/sentry_sdk/integrations/pyramid.py", line 92, in sentry_patched_call_view
return old_call_view(registry, request, *args, **kwargs)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/view.py", line 674, in _call_view
response = view_callable(context, request)
File "/opt/warehouse/src/warehouse/cache/http.py", line 23, in wrapped
return view(context, request)
File "/opt/warehouse/src/warehouse/cache/http.py", line 23, in wrapped
return view(context, request)
File "/opt/warehouse/src/warehouse/csrf.py", line 28, in wrapped
return view(context, request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/viewderivers.py", line 512, in csrf_view
return view(context, request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/viewderivers.py", line 319, in secured_view
return view(context, request)
File "/opt/warehouse/src/warehouse/config.py", line 294, in wrapped
return view(context, request)
File "/opt/warehouse/src/warehouse/cache/origin/derivers.py", line 22, in wrapper_view
return view(context, request)
File "/opt/warehouse/src/warehouse/metrics/views.py", line 24, in wrapper_view
return view(context, request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/viewderivers.py", line 450, in rendered_view
response = view_renderer.render_view(
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/renderers.py", line 443, in render_view
return self.render_to_response(response, system, request=request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/renderers.py", line 466, in render_to_response
result = self.render(value, system_values, request=request)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid/renderers.py", line 462, in render
result = renderer(value, system_values)
File "/opt/warehouse/lib/python3.13/site-packages/pyramid_jinja2/__init__.py", line 260, in __call__
return template.render(system)
File "/opt/warehouse/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/opt/warehouse/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/opt/warehouse/src/warehouse/templates/manage/organization/history.html", line 4, in top-level template code
{% set active_tab = "history" %}
File "/opt/warehouse/src/warehouse/templates/manage/organization/manage_organization_base.html", line 5, in top-level template code
{% set active_tab = active_tab|default('collaborators') %}
File "/opt/warehouse/src/warehouse/templates/manage/manage_base.html", line 649, in top-level template code
{{ submit_desc }} <a href="{{ request.route_path('accounts.profile', username=event.additional.submitted_by) }}">{{ event.additional.submitted_by }}</a>
File "/opt/warehouse/src/warehouse/templates/base.html", line 206, in top-level template code
{% block body %}
File "/opt/warehouse/src/warehouse/templates/base.html", line 326, in block 'body'
{% block content %}
File "/opt/warehouse/src/warehouse/templates/manage/organization/manage_organization_base.html", line 51, in block 'content'
{% block main %}{% endblock %}
File "/opt/warehouse/src/warehouse/templates/manage/organization/history.html", line 183, in block 'main'
<td>{{ event_summary(event) }}</td>
File "/opt/warehouse/lib/python3.13/site-packages/jinja2/runtime.py", line 784, in _invoke
rv = self._func(*arguments)
File "/opt/warehouse/src/warehouse/templates/manage/organization/history.html", line 139, in template
{% set submitted_by = get_user(event.additional.submitted_by_user_id).username %}
File "/opt/warehouse/src/warehouse/accounts/services.py", line 110, in get_user
return self.cached_get_user(userid)
File "/opt/warehouse/src/warehouse/accounts/services.py", line 103, in _get_user
select(User).options(joinedload(User.webauthn)).where(User.id == userid)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/operators.py", line 584, in __eq__
return self.operate(eq, other)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 453, in operate
return op(self.comparator, *other, **kwargs) # type: ignore[no-any-return] # noqa: E501
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/operators.py", line 584, in __eq__
return self.operate(eq, other)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/orm/properties.py", line 479, in operate
return op(self.__clause_element__(), *other, **kwargs) # type: ignore[no-any-return] # noqa: E501
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/annotation.py", line 371, in __eq__
return self.__element.__class__.__eq__(self, other)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/operators.py", line 584, in __eq__
return self.operate(eq, other)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 1534, in operate
return op(self.comparator, *other, **kwargs) # type: ignore[no-any-return] # noqa: E501
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/operators.py", line 584, in __eq__
return self.operate(eq, other)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/type_api.py", line 210, in operate
return op_fn(self.expr, op, *other, **addtl_kw)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/default_comparator.py", line 120, in _boolean_compare
obj = coercions.expect(
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/coercions.py", line 395, in expect
resolved = impl._literal_coercion(
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/coercions.py", line 803, in _literal_coercion
return expr._bind_param(operator, element, type_=bindparam_type)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 4633, in _bind_param
return BindParameter(
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/elements.py", line 2054, in __init__
self.type = _compared_to_type.coerce_compared_value(
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/sqltypes.py", line 3720, in coerce_compared_value
return super().coerce_compared_value(op, value)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/type_api.py", line 1065, in coerce_compared_value
_coerced_type = _resolve_value_to_type(value)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/sql/sqltypes.py", line 3903, in _resolve_value_to_type
insp = inspection.inspect(value, False)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/inspection.py", line 140, in inspect
ret = reg(subject)
File "/opt/warehouse/lib/python3.13/site-packages/sqlalchemy/orm/base.py", line 430, in _inspect_mapped_object
return instance_state(instance)
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'submitted_by_user_id'
Metadata
Metadata
Assignees
Labels
bug 🐛developer experienceAnything that improves the experience for Warehouse devsAnything that improves the experience for Warehouse devs