CI
github-actions:test
5 runs
Average
72 ms
median 75 ms
max 88 ms
max 88 ms
Phases
Setup 0.71 ms
Call 71 ms
Teardown 0.16 ms
Categories
Database 38 ms
Other (Libraries, Templates, Unsampled, pytest) 33 ms
49 database queries per run
Needs 650 KB of memory (max 836 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 18 minutes ago ·
open run
call77 ms98.7%
TestDocsPage.test_linked_from_the_appft/tests.py:82 response = self.client.get(reverse("projects"), follow=True)54 ms69.1%
Client.getdjango/test/client.py:112429 ms37.0%
RequestFactory.getdjango/test/client.py:47529 ms37.0%
RequestFactory.genericdjango/test/client.py:67129 ms37.0%
Client.requestdjango/test/client.py:108229 ms37.0%
ClientHandler.__call__django/test/client.py:17325 ms32.1%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6225 ms32.1%
__init____init__:-125 ms32.1%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10423 ms29.6%
WhiteNoise.add_fileswhitenoise/base.py:10823 ms29.6%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12017 ms22.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13117 ms22.2%
WhiteNoise.get_static_filewhitenoise/base.py:20813 ms17.3%
StaticFile.__init__whitenoise/responders.py:764 ms4.9%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms2.5%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1892 ms2.5%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.5%
Headers.get<stdlib>/wsgiref/headers.py:1042 ms2.5%
StaticFile.__init__whitenoise/responders.py:752 ms2.5%
Headers.__getitem__<stdlib>/wsgiref/headers.py:832 ms2.5%
StaticFile.__init__whitenoise/responders.py:732 ms2.5%
StaticFile.get_headerswhitenoise/responders.py:1762 ms2.5%
formatdate<stdlib>/email/utils.py:2662 ms2.5%
StaticFile.__init__whitenoise/responders.py:772 ms2.5%
StaticFile.get_alternativeswhitenoise/responders.py:2002 ms2.5%
WhiteNoise.get_static_filewhitenoise/base.py:2032 ms2.5%
WhiteNoise.add_cache_headerswhitenoise/base.py:2242 ms2.5%
WhiteNoise.get_static_filewhitenoise/base.py:2022 ms2.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1156 ms7.4%
scantreewhitenoise/base.py:2626 ms7.4%
scantreewhitenoise/base.py:2626 ms7.4%
scantreewhitenoise/base.py:2624 ms4.9%
scantreewhitenoise/base.py:2624 ms4.9%
scantreewhitenoise/base.py:2624 ms4.9%
scantreewhitenoise/base.py:2602 ms2.5%
scantreewhitenoise/base.py:2642 ms2.5%
scantreewhitenoise/base.py:2642 ms2.5%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1112 ms2.5%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms2.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1202 ms2.5%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1312 ms2.5%
WhiteNoise.get_static_filewhitenoise/base.py:2082 ms2.5%
StaticFile.__init__whitenoise/responders.py:722 ms2.5%
StaticFile.get_file_statswhitenoise/responders.py:1612 ms2.5%
ClientHandler.__call__django/test/client.py:1864 ms4.9%
BaseHandler.get_responsedjango/core/handlers/base.py:1414 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1304 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1234 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
MiddlewareMixin.__call__django/utils/deprecation.py:3094 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:344 ms4.9%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:554 ms4.9%
BaseHandler._get_responsedjango/core/handlers/base.py:1984 ms4.9%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:594 ms4.9%
homeapps/orgs/views.py:722 ms2.5%
current_organizationapps/orgs/views.py:542 ms2.5%
ensure_organizationapps/orgs/models.py:126 membership = Membership.objects.filter(user=user).select_related("organization").order_by("id").first()2 ms2.5%
QuerySet.firstdjango/db/models/query.py:11452 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
homeapps/orgs/views.py:78 return redirect(in_organization.select_related("organization").get().url())2 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.5%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms2.5%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:862 ms2.5%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:752 ms2.5%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3002 ms2.5%
SQLCompiler.get_related_selectionsdjango/db/models/sql/compiler.py:12422 ms2.5%
Client.getdjango/test/client.py:113325 ms32.1%
Client._handle_redirectsdjango/test/client.py:138425 ms32.1%
ClientMixin._follow_redirectdjango/test/client.py:100225 ms32.1%
Client.getdjango/test/client.py:112425 ms32.1%
RequestFactory.getdjango/test/client.py:47525 ms32.1%
RequestFactory.genericdjango/test/client.py:67125 ms32.1%
Client.requestdjango/test/client.py:108225 ms32.1%
ClientHandler.__call__django/test/client.py:18625 ms32.1%
BaseHandler.get_responsedjango/core/handlers/base.py:14125 ms32.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms32.1%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13025 ms32.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms32.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30925 ms32.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms32.1%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12325 ms32.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5525 ms32.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3421 ms27.1%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms27.1%
BaseHandler._get_responsedjango/core/handlers/base.py:19821 ms27.1%
project_dashboardapps/projects/urls.py:1328 ms9.9%
find_projectapps/projects/urls.py:526 ms7.4%
can_viewapps/projects/urls.py:336 ms7.4%
can_manage_projectapps/projects/urls.py:38 if not user.is_authenticated:4 ms4.9%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2514 ms4.9%
SimpleLazyObject._setupdjango/utils/functional.py:4044 ms4.9%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:404 ms4.9%
get_userdjango/contrib/auth/middleware.py:204 ms4.9%
get_userdjango/contrib/auth/__init__.py:3112 ms2.5%
_get_user_session_keydjango/contrib/auth/__init__.py:952 ms2.5%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:552 ms2.5%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms2.5%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms2.5%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.5%
get_userdjango/contrib/auth/__init__.py:3182 ms2.5%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.5%
find_projectapps/projects/urls.py:49 project = get_object_or_404(2 ms2.5%
get_object_or_404django/shortcuts.py:902 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms2.5%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:9812 ms2.5%
project_dashboardapps/projects/urls.py:1358 ms9.9%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {6 ms7.4%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
org_shellapps/orgs/views.py:422 ms2.5%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.5%
shellapps/projects/urls.py:732 ms2.5%
can_manageapps/projects/urls.py:442 ms2.5%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
project_dashboardapps/projects/urls.py:136 has_profiles = Profile.objects.filter(project=project).exists()2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
project_dashboardapps/projects/urls.py:137 if not has_profiles and not Run.objects.filter(project=project).exists():2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
project_dashboardapps/projects/urls.py:138 return render(request, "project_setup.html", context)2 ms2.5%
renderdjango/shortcuts.py:252 ms2.5%
render_to_stringdjango/template/loader.py:622 ms2.5%
Template.renderdjango/template/backends/django.py:1072 ms2.5%
Template.renderdjango/template/base.py:1742 ms2.5%
instrumented_test_renderdjango/test/utils.py:1142 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms2.5%
instrumented_test_renderdjango/test/utils.py:1142 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms2.5%
instrumented_test_renderdjango/test/utils.py:1142 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
BlockNode.renderdjango/template/loader_tags.py:662 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
BlockNode.renderdjango/template/loader_tags.py:662 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
IfNode.renderdjango/template/defaulttags.py:3332 ms2.5%
NodeList.renderdjango/template/base.py:10912 ms2.5%
Node.render_annotateddjango/template/base.py:10522 ms2.5%
WithNode.renderdjango/template/defaulttags.py:5792 ms2.5%
FilterExpression.resolvedjango/template/base.py:7882 ms2.5%
Variable.resolvedjango/template/base.py:9282 ms2.5%
Variable._resolve_lookupdjango/template/base.py:10002 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.firstdjango/db/models/query.py:11452 ms2.5%
QuerySet.__iter__django/db/models/query.py:3902 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms2.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3114 ms4.9%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:594 ms4.9%
SessionStore.savedjango/contrib/sessions/backends/db.py:1264 ms4.9%
Atomic.__enter__django/db/transaction.py:2112 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
Atomic.__exit__django/db/transaction.py:2472 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.5%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TestDocsPage.test_linked_from_the_appft/tests.py:796 ms7.4%
make_projectapps/projects/testing.py:622 ms2.5%
unique_slugapps/orgs/models.py:46 while slug in reserved or taken.filter(slug=slug).exists():2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
make_projectapps/projects/testing.py:67 slug=unique_slug(name, organization.project_set.all(), fallback="project", reserved=RESERVED_PROJECT_SLUGS),2 ms2.5%
unique_slugapps/orgs/models.py:46 while slug in reserved or taken.filter(slug=slug).exists():2 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
make_projectapps/projects/testing.py:64 project = Project.objects.create(2 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TestDocsPage.test_linked_from_the_appft/tests.py:81 self.client.force_login(user)6 ms7.4%
ClientMixin.force_logindjango/test/client.py:8556 ms7.4%
ClientMixin._logindjango/test/client.py:8814 ms4.9%
logindjango/contrib/auth/__init__.py:1874 ms4.9%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4342 ms2.5%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms2.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4372 ms2.5%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1752 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:1272 ms2.5%
ClientMixin._logindjango/test/client.py:8762 ms2.5%
ClientMixin.sessiondjango/test/client.py:8122 ms2.5%
SessionStore.savedjango/contrib/sessions/backends/db.py:1212 ms2.5%
SessionStore.createdjango/contrib/sessions/backends/db.py:702 ms2.5%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1982 ms2.5%
SessionStore.existsdjango/contrib/sessions/backends/db.py:632 ms2.5%
QuerySet.existsdjango/db/models/query.py:13372 ms2.5%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TestDocsPage.test_linked_from_the_appft/tests.py:804 ms4.9%
add_memberapps/projects/testing.py:76 membership, _ = Membership.objects.get_or_create(4 ms4.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:874 ms4.9%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms2.5%
QuerySet.getdjango/db/models/query.py:6352 ms2.5%
QuerySet.__len__django/db/models/query.py:3722 ms2.5%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms2.5%
ModelIterable.__iter__django/db/models/query.py:952 ms2.5%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms2.5%
QuerySet.createdjango/db/models/query.py:6692 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()4 ms4.9%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms2.5%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms2.5%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms2.5%
Atomic.__exit__django/db/transaction.py:2862 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms2.5%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()2 ms2.5%
TestCase._fixture_setupdjango/test/testcases.py:14782 ms2.5%
TestCase._enter_atomicsdjango/test/testcases.py:13962 ms2.5%
Atomic.__enter__django/db/transaction.py:2112 ms2.5%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms2.5%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms2.5%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
TestDocsPage.test_linked_from_the_appft/tests.py:78 user = User.objects.create_user("docs-reader")2 ms2.5%
UserManager.create_userdjango/contrib/auth/models.py:1752 ms2.5%
UserManager._create_userdjango/contrib/auth/models.py:1632 ms2.5%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:622 ms2.5%
Model.savedjango/db/models/base.py:8742 ms2.5%
Model.save_basedjango/db/models/base.py:9662 ms2.5%
Model._save_tabledjango/db/models/base.py:11672 ms2.5%
Model._do_insertdjango/db/models/base.py:12182 ms2.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms2.5%
QuerySet._insertdjango/db/models/query.py:19182 ms2.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms2.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.5%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.5%
Cursor.executepsycopg/cursor.py:1132 ms2.5%
Connection.waitpsycopg/connection.py:4952 ms2.5%
Estimated from 40 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
ft/tests.py:82
response = self.client.get(reverse("projects"), follow=True)
TestDocsPage.test_linked_from_the_app
· Libraries
|
29 ms |
|
ft/tests.py:81
self.client.force_login(user)
TestDocsPage.test_linked_from_the_app
· Database
|
6 ms |
|
apps/orgs/models.py:46
while slug in reserved or taken.filter(slug=slug).exists():
unique_slug
· Database
|
4 ms |
|
apps/projects/testing.py:76
membership, _ = Membership.objects.get_or_create(
add_member
· Database
|
4 ms |
|
apps/projects/urls.py:38
if not user.is_authenticated:
can_manage_project
· Database
|
4 ms |
|
apps/projects/urls.py:40
return user.is_superuser or project.organization.membership_set.filter(user=user).exists()
can_manage_project
· Database
|
4 ms |
|
ft/tests.py:78
user = User.objects.create_user("docs-reader")
TestDocsPage.test_linked_from_the_app
· Database
|
2 ms |
|
apps/projects/testing.py:64
project = Project.objects.create(
make_project
· Database
|
2 ms |
|
apps/orgs/models.py:126
membership = Membership.objects.filter(user=user).select_related("organization").order_by("id").first()
ensure_organization
· Database
|
2 ms |
|
apps/orgs/views.py:78
return redirect(in_organization.select_related("organization").get().url())
home
· Database
|
2 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.06 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_db_marker function | 0.04 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
49 queries · 22 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
3×
SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > %s AND "django_session"."session_key" = %s) LIMIT ?
Biggest pieces of work
|
call test body
ft/tests.py:82
|
71 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
4 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
2 ms |
Reliability
5 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 5 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 18 minutes ago | CI github-actions:test | passed | 78 ms | Profile |
| 43 minutes ago | CI github-actions:test | passed | 75 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 88 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 45 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 73 ms | Profile |