Tests / apps/projects/tests.py
ProjectsPageTest::test_multiple_projects
First seen 2 years, 10 months ago in b9e98d9
CI
github-actions:test
12 runs
Average
83 ms
median 87 ms
max 124 ms
max 124 ms
Phases
Setup 10 ms
Call 72 ms
Teardown 0.17 ms
Categories
Database 58 ms
App code 0.44 ms
Other (Libraries, pytest, Templates, Unsampled, ...) 24 ms
49 database queries per run
Needs 106 KB of memory (max 660 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
setup11 ms13.1%
TestCase.setUpClassdjango/test/testcases.py:1423 cls.cls_atomics = cls._enter_atomics()10 ms11.6%
TestCase._enter_atomicsdjango/test/testcases.py:139610 ms11.6%
Atomic.__enter__django/db/transaction.py:19810 ms11.6%
BaseDatabaseWrapper.get_autocommitdjango/db/backends/base/base.py:45410 ms11.6%
SimpleTestCase.ensure_connection_patch_method.<locals>.patched_ensure_connectiondjango/test/testcases.py:30310 ms11.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms11.6%
BaseDatabaseWrapper.ensure_connectiondjango/db/backends/base/base.py:27910 ms11.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms11.6%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:25610 ms11.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms11.6%
DatabaseWrapper.get_new_connectiondjango/db/backends/postgresql/base.py:33310 ms11.6%
Connection.connectpsycopg/connection.py:1099 ms10.2%
wait_connpsycopg/waiting.py:1415 ms5.8%
EpollSelector.select<stdlib>/selectors.py:4525 ms5.8%
wait_connpsycopg/waiting.py:1454 ms4.4%
BaseConnection._connect_genpsycopg/_connection_base.py:4394 ms4.4%
Connection.connectpsycopg/connection.py:1071 ms1.5%
make_conninfopsycopg/conninfo.py:621 ms1.5%
TestCase.setUpClassdjango/test/testcases.py:1439 cls.setUpTestData()1 ms1.5%
ProjectsPageTest.setUpTestDataapps/projects/tests.py:98 cls.user = User.objects.create_user("testuser")1 ms1.5%
UserManager.create_userdjango/contrib/auth/models.py:1751 ms1.5%
UserManager._create_userdjango/contrib/auth/models.py:1631 ms1.5%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:621 ms1.5%
Model.savedjango/db/models/base.py:8741 ms1.5%
Model.save_basedjango/db/models/base.py:9661 ms1.5%
Model._save_tabledjango/db/models/base.py:11671 ms1.5%
Model._do_insertdjango/db/models/base.py:12181 ms1.5%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.5%
QuerySet._insertdjango/db/models/query.py:19181 ms1.5%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.5%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.5%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.5%
Cursor.executepsycopg/cursor.py:1131 ms1.5%
call75 ms86.8%
ProjectsPageTest.test_multiple_projectsapps/projects/tests.py:131 response = self.client.get("/projects/", follow=True)58 ms66.9%
Client.getdjango/test/client.py:113347 ms54.2%
Client._handle_redirectsdjango/test/client.py:138447 ms54.2%
ClientMixin._follow_redirectdjango/test/client.py:100247 ms54.2%
Client.getdjango/test/client.py:112447 ms54.2%
RequestFactory.getdjango/test/client.py:47547 ms54.2%
RequestFactory.genericdjango/test/client.py:67147 ms54.2%
Client.requestdjango/test/client.py:108247 ms54.2%
ClientHandler.__call__django/test/client.py:18647 ms54.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14147 ms54.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5547 ms54.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13047 ms54.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5547 ms54.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30947 ms54.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5547 ms54.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12347 ms54.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5547 ms54.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30946 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3446 ms52.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5546 ms52.4%
BaseHandler._get_responsedjango/core/handlers/base.py:19846 ms52.4%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:5946 ms52.4%
org_projectsapps/orgs/views.py:96 cards = [{"project": project, **analytics.project_card(project)} for project in projects]36 ms41.6%
QuerySet.__iter__django/db/models/query.py:39031 ms36.1%
QuerySet._fetch_alldjango/db/models/query.py:200031 ms36.1%
ModelIterable.__iter__django/db/models/query.py:9531 ms36.1%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:162420 ms23.5%
CursorWrapper.executedjango/db/backends/utils.py:7920 ms23.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9220 ms23.5%
CursorWrapper._executedjango/db/backends/utils.py:10520 ms23.5%
Cursor.executepsycopg/cursor.py:11320 ms23.5%
Connection.waitpsycopg/connection.py:49520 ms23.5%
BaseCursor._execute_genpsycopg/_cursor_base.py:20619 ms21.7%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:28619 ms21.7%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:7819 ms21.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16119 ms10.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7678 ms9.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:863 ms3.6%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:753 ms3.6%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2552 ms1.8%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10302 ms1.8%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3172 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.8%
Col.as_sqldjango/db/models/expressions.py:13252 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:873 ms3.6%
Col.as_sqldjango/db/models/expressions.py:13252 ms1.8%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:4912 ms1.8%
SQLCompiler._order_by_pairsdjango/db/models/sql/compiler.py:3622 ms1.8%
Expression.__hash__django/db/models/expressions.py:5622 ms1.8%
cached_property.__get__django/utils/functional.py:472 ms1.8%
Expression.identitydjango/db/models/expressions.py:5522 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:932 ms1.8%
SQLCompiler.get_group_bydjango/db/models/sql/compiler.py:1762 ms1.8%
SQLCompiler.collapse_group_bydjango/db/models/sql/compiler.py:2252 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7922 ms1.8%
SQLCompiler.get_from_clausedjango/db/models/sql/compiler.py:11592 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.8%
Join.as_sqldjango/db/models/sql/datastructures.py:882 ms1.8%
DatabaseOperations.prepare_join_on_clausedjango/db/backends/postgresql/operations.py:3992 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16222 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3202 ms1.8%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2982 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
project_cardapps/projects/analytics.py:579 .first()5 ms5.4%
QuerySet.firstdjango/db/models/query.py:11455 ms5.4%
QuerySet.__iter__django/db/models/query.py:3905 ms5.4%
QuerySet._fetch_alldjango/db/models/query.py:20005 ms5.4%
ValuesIterable.__iter__django/db/models/query.py:2225 ms5.4%
SQLCompiler.results_iterdjango/db/models/sql/compiler.py:15733 ms3.6%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16243 ms3.6%
CursorWrapper.executedjango/db/backends/utils.py:793 ms3.6%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms3.6%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
org_projectsapps/orgs/views.py:97 return render(request, "org.html", {**org_shell(request, organization, "projects"), "cards": cards})6 ms7.2%
org_shellapps/orgs/views.py:33 organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))2 ms1.8%
QuerySet.__iter__django/db/models/query.py:3902 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.8%
ModelIterable.__iter__django/db/models/query.py:952 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
org_shellapps/orgs/views.py:40 "org_projects": list(organization.project_set.order_by("name")) if member else [],2 ms1.8%
QuerySet.__iter__django/db/models/query.py:3902 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.8%
ModelIterable.__iter__django/db/models/query.py:952 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
org_shellapps/orgs/views.py:422 ms1.8%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()2 ms1.8%
QuerySet.existsdjango/db/models/query.py:13372 ms1.8%
renderdjango/shortcuts.py:252 ms1.8%
render_to_stringdjango/template/loader.py:622 ms1.8%
Template.renderdjango/template/backends/django.py:1072 ms1.8%
Template.renderdjango/template/base.py:1742 ms1.8%
instrumented_test_renderdjango/test/utils.py:1142 ms1.8%
NodeList.renderdjango/template/base.py:10912 ms1.8%
Node.render_annotateddjango/template/base.py:10522 ms1.8%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms1.8%
instrumented_test_renderdjango/test/utils.py:1142 ms1.8%
NodeList.renderdjango/template/base.py:10912 ms1.8%
Node.render_annotateddjango/template/base.py:10522 ms1.8%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms1.8%
instrumented_test_renderdjango/test/utils.py:1142 ms1.8%
NodeList.renderdjango/template/base.py:10912 ms1.8%
Node.render_annotateddjango/template/base.py:10522 ms1.8%
BlockNode.renderdjango/template/loader_tags.py:662 ms1.8%
NodeList.renderdjango/template/base.py:10912 ms1.8%
Node.render_annotateddjango/template/base.py:10522 ms1.8%
IfNode.renderdjango/template/defaulttags.py:3332 ms1.8%
NodeList.renderdjango/template/base.py:10912 ms1.8%
Node.render_annotateddjango/template/base.py:10522 ms1.8%
CsrfTokenNode.renderdjango/template/defaulttags.py:782 ms1.8%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2512 ms1.8%
SimpleLazyObject._setupdjango/utils/functional.py:4042 ms1.8%
org_projectsapps/orgs/views.py:86 organization.project_set.annotate(3 ms3.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms3.6%
QuerySet.annotatedjango/db/models/query.py:16993 ms3.6%
QuerySet._annotatedjango/db/models/query.py:17513 ms3.6%
Query.add_annotationdjango/db/models/sql/query.py:12422 ms1.8%
Count.resolve_expressiondjango/db/models/aggregates.py:2612 ms1.8%
Aggregate.resolve_expressiondjango/db/models/aggregates.py:1222 ms1.8%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:2972 ms1.8%
Func.copydjango/db/models/expressions.py:11332 ms1.8%
BaseExpression.copydjango/db/models/expressions.py:4442 ms1.8%
copy<stdlib>/copy.py:1002 ms1.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3112 ms1.8%
SessionMiddleware.process_responsedjango/contrib/sessions/middleware.py:592 ms1.8%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms1.8%
Model.savedjango/db/models/base.py:8742 ms1.8%
Model.save_basedjango/db/models/base.py:9662 ms1.8%
Model._save_tabledjango/db/models/base.py:11102 ms1.8%
Model._do_updatedjango/db/models/base.py:12112 ms1.8%
QuerySet._updatedjango/db/models/query.py:13272 ms1.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms1.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
Client.getdjango/test/client.py:112411 ms12.7%
RequestFactory.getdjango/test/client.py:47511 ms12.7%
RequestFactory.genericdjango/test/client.py:67111 ms12.7%
Client.requestdjango/test/client.py:108211 ms12.7%
ClientHandler.__call__django/test/client.py:17311 ms12.7%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6211 ms12.7%
__init____init__:-111 ms12.7%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1048 ms9.0%
WhiteNoise.add_fileswhitenoise/base.py:1088 ms9.0%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1205 ms5.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1315 ms5.4%
WhiteNoise.get_static_filewhitenoise/base.py:2085 ms5.4%
StaticFile.__init__whitenoise/responders.py:762 ms1.8%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms1.8%
StaticFile.__init__whitenoise/responders.py:772 ms1.8%
StaticFile.get_alternativeswhitenoise/responders.py:2012 ms1.8%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms1.8%
Headers.__delitem__<stdlib>/wsgiref/headers.py:722 ms1.8%
<GC>~2 ms1.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1153 ms3.6%
scantreewhitenoise/base.py:2623 ms3.6%
scantreewhitenoise/base.py:2623 ms3.6%
scantreewhitenoise/base.py:2622 ms1.8%
scantreewhitenoise/base.py:2622 ms1.8%
scantreewhitenoise/base.py:2622 ms1.8%
scantreewhitenoise/base.py:2642 ms1.8%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1113 ms3.6%
WhiteNoise.add_fileswhitenoise/base.py:982 ms1.8%
WhiteNoise.add_fileswhitenoise/base.py:1082 ms1.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms1.8%
scantreewhitenoise/base.py:2642 ms1.8%
ProjectsPageTest.test_multiple_projectsapps/projects/tests.py:1298 ms9.0%
make_projectapps/projects/testing.py:713 ms3.6%
add_memberapps/projects/testing.py:76 membership, _ = Membership.objects.get_or_create(3 ms3.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms3.6%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms1.8%
QuerySet.getdjango/db/models/query.py:6352 ms1.8%
QuerySet.__len__django/db/models/query.py:3722 ms1.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms1.8%
ModelIterable.__iter__django/db/models/query.py:952 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
QuerySet.get_or_createdjango/db/models/query.py:9942 ms1.8%
QuerySet.createdjango/db/models/query.py:6692 ms1.8%
Model.savedjango/db/models/base.py:8742 ms1.8%
Model.save_basedjango/db/models/base.py:9662 ms1.8%
Model._save_tabledjango/db/models/base.py:11672 ms1.8%
Model._do_insertdjango/db/models/base.py:12182 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet._insertdjango/db/models/query.py:19182 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
make_projectapps/projects/testing.py:61 organization = Organization.objects.create(2 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet.createdjango/db/models/query.py:6672 ms1.8%
Model.__init__django/db/models/base.py:5692 ms1.8%
make_projectapps/projects/testing.py:67 slug=unique_slug(name, organization.project_set.all(), fallback="project", reserved=RESERVED_PROJECT_SLUGS),2 ms1.8%
unique_slugapps/orgs/models.py:46 while slug in reserved or taken.filter(slug=slug).exists():2 ms1.8%
QuerySet.existsdjango/db/models/query.py:13372 ms1.8%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
make_projectapps/projects/testing.py:64 project = Project.objects.create(2 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet.createdjango/db/models/query.py:6692 ms1.8%
Model.savedjango/db/models/base.py:8742 ms1.8%
Model.save_basedjango/db/models/base.py:9662 ms1.8%
Model._save_tabledjango/db/models/base.py:11672 ms1.8%
Model._do_insertdjango/db/models/base.py:12182 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet._insertdjango/db/models/query.py:19182 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
ProjectsPageTest.setUpapps/projects/tests.py:101 self.client.force_login(self.user)6 ms7.2%
ClientMixin.force_logindjango/test/client.py:8556 ms7.2%
ClientMixin._logindjango/test/client.py:8763 ms3.6%
ClientMixin.sessiondjango/test/client.py:8123 ms3.6%
SessionStore.savedjango/contrib/sessions/backends/db.py:1213 ms3.6%
SessionStore.createdjango/contrib/sessions/backends/db.py:702 ms1.8%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1982 ms1.8%
SessionStore.existsdjango/contrib/sessions/backends/db.py:632 ms1.8%
QuerySet.existsdjango/db/models/query.py:13372 ms1.8%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms1.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
SessionStore.createdjango/contrib/sessions/backends/db.py:742 ms1.8%
SessionStore.savedjango/contrib/sessions/backends/db.py:1272 ms1.8%
Model.savedjango/db/models/base.py:8742 ms1.8%
Model.save_basedjango/db/models/base.py:9662 ms1.8%
Model._save_tabledjango/db/models/base.py:11672 ms1.8%
Model._do_insertdjango/db/models/base.py:12182 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet._insertdjango/db/models/query.py:19182 ms1.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
ClientMixin._logindjango/test/client.py:8813 ms3.6%
logindjango/contrib/auth/__init__.py:1873 ms3.6%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4373 ms3.6%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1753 ms3.6%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet.getdjango/db/models/query.py:6252 ms1.8%
Model.deletedjango/db/models/base.py:12982 ms1.8%
Collector.deletedjango/db/models/deletion.py:4522 ms1.8%
DeleteQuery.delete_batchdjango/db/models/sql/subqueries.py:432 ms1.8%
DeleteQuery.do_querydjango/db/models/sql/subqueries.py:252 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms1.8%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms1.8%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4832 ms1.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms1.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms1.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
Estimated from 57 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/orgs/views.py:96
cards = [{"project": project, **analytics.project_card(project)} for project in projects]
org_projects
· Database
|
31 ms |
|
apps/projects/tests.py:131
response = self.client.get("/projects/", follow=True)
ProjectsPageTest.test_multiple_projects
· Libraries
|
13 ms |
|
apps/projects/tests.py:101
self.client.force_login(self.user)
ProjectsPageTest.setUp
· Database
|
6 ms |
|
apps/projects/analytics.py:579
.first()
project_card
· Database
|
5 ms |
|
apps/projects/testing.py:76
membership, _ = Membership.objects.get_or_create(
add_member
· Database
|
3 ms |
|
apps/orgs/views.py:86
organization.project_set.annotate(
org_projects
· Database
|
3 ms |
|
apps/projects/testing.py:61
organization = Organization.objects.create(
make_project
· Database
|
2 ms |
|
apps/orgs/models.py:46
while slug in reserved or taken.filter(slug=slug).exists():
unique_slug
· Database
|
2 ms |
|
apps/projects/testing.py:64
project = Project.objects.create(
make_project
· Database
|
2 ms |
|
apps/orgs/views.py:33
organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))
org_shell
· Database
|
2 ms |
Fixtures
Exact setup time| _unittest_setUpClass_fixture_ProjectsPageTest class | 10 ms |
| _django_setup_unittest class | 0.24 ms |
| _template_string_if_invalid_marker function | 0.07 ms |
| _dj_autoclear_mailbox function | 0.04 ms |
| _django_db_marker function | 0.03 ms |
| _live_server_helper function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| _django_clear_site_cache function | 0.02 ms |
| monkeypatch function | 0.02 ms |
Database
49 queries · 19 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
apps/projects/tests.py:131
|
66 ms |
|
setup setUpClass
django/test/testcases.py:1423
|
11 ms |
|
call setUp
apps/projects/tests.py:101
|
6 ms |
| call pytest internals | 2 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
Reliability
12 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 12 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 16 hours ago | CI github-actions:test | passed | 87 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 51 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 89 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 66 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 124 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 60 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 87 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 87 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 110 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 100 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 50 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 82 ms | Profile |