Tests / apps/projects/tests.py
ProjectEditPage::test_slug_unique_in_organization
First seen 3 weeks ago in 78a4357
CI
github-actions:test
12 runs
Average
71 ms
median 76 ms
max 91 ms
max 91 ms
Phases
Setup 0.78 ms
Call 69 ms
Teardown 0.99 ms
Categories
Database 39 ms
Test code 0.37 ms
Other (Libraries, Templates, Unsampled, pytest, ...) 31 ms
50 database queries per run
Needs 5 KB of memory (max 60 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
setup0.75 ms0.9%
call86 ms98.4%
ProjectEditPage.test_slug_unique_in_organizationapps/projects/tests.py:175 response = self.client.post(self.project.url("project_edit"), {"name": "Test Project", "slug": "taken"})54 ms62.0%
Client.postdjango/test/client.py:115354 ms62.0%
RequestFactory.postdjango/test/client.py:49954 ms62.0%
RequestFactory.genericdjango/test/client.py:67154 ms62.0%
Client.requestdjango/test/client.py:108254 ms62.0%
ClientHandler.__call__django/test/client.py:18643 ms49.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14143 ms49.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms49.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13043 ms49.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms49.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30943 ms49.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms49.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12343 ms49.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5543 ms49.2%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
MiddlewareMixin.__call__django/utils/deprecation.py:30942 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3442 ms47.4%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5542 ms47.4%
BaseHandler._get_responsedjango/core/handlers/base.py:19842 ms47.4%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:5942 ms47.4%
project_editapps/projects/urls.py:64524 ms27.3%
BaseForm.is_validdjango/forms/forms.py:20624 ms27.3%
BaseForm.errorsdjango/forms/forms.py:20124 ms27.3%
BaseForm.full_cleandjango/forms/forms.py:33724 ms27.3%
BaseForm._clean_fieldsdjango/forms/forms.py:34724 ms27.3%
ProjectSettingsForm.clean_slugapps/projects/urls.py:636 if Project.objects.filter(organization=self.instance.organization, slug=slug).exclude(pk=self.instance.pk):24 ms27.3%
QuerySet.__bool__django/db/models/query.py:40421 ms23.7%
QuerySet._fetch_alldjango/db/models/query.py:200021 ms23.7%
ModelIterable.__iter__django/db/models/query.py:9521 ms23.7%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:162419 ms21.9%
CursorWrapper.executedjango/db/backends/utils.py:7919 ms21.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9219 ms21.9%
CursorWrapper._executedjango/db/backends/utils.py:10519 ms21.9%
Cursor.executepsycopg/cursor.py:11319 ms21.9%
Connection.waitpsycopg/connection.py:49519 ms21.9%
BaseCursor._execute_genpsycopg/_cursor_base.py:20618 ms20.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:28618 ms20.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:7818 ms20.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms1.8%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms1.8%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms1.8%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms1.8%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet.filterdjango/db/models/query.py:15422 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.8%
QuerySet.excludedjango/db/models/query.py:15502 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.8%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15682 ms1.8%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.8%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.8%
Query.build_filterdjango/db/models/sql/query.py:16112 ms1.8%
Query._get_coldjango/db/models/sql/query.py:4512 ms1.8%
project_editapps/projects/urls.py:649 return render(request, "project.html", {**shell(request, project, "settings"), "form": form})6 ms7.3%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {3 ms3.6%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2572 ms1.8%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2222 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%
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%
renderdjango/shortcuts.py:253 ms3.6%
render_to_stringdjango/template/loader.py:623 ms3.6%
Template.renderdjango/template/backends/django.py:1073 ms3.6%
Template.renderdjango/template/base.py:1743 ms3.6%
instrumented_test_renderdjango/test/utils.py:1143 ms3.6%
NodeList.renderdjango/template/base.py:10913 ms3.6%
Node.render_annotateddjango/template/base.py:10523 ms3.6%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms3.6%
instrumented_test_renderdjango/test/utils.py:1143 ms3.6%
NodeList.renderdjango/template/base.py:10913 ms3.6%
Node.render_annotateddjango/template/base.py:10523 ms3.6%
ExtendsNode.renderdjango/template/loader_tags.py:1603 ms3.6%
instrumented_test_renderdjango/test/utils.py:1143 ms3.6%
NodeList.renderdjango/template/base.py:10913 ms3.6%
Node.render_annotateddjango/template/base.py:10523 ms3.6%
BlockNode.renderdjango/template/loader_tags.py:663 ms3.6%
NodeList.renderdjango/template/base.py:10913 ms3.6%
Node.render_annotateddjango/template/base.py:10523 ms3.6%
IncludeNode.renderdjango/template/loader_tags.py:2002 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%
SimpleNode.renderdjango/template/library.py:3252 ms1.8%
heroicon_miniheroicons/templatetags/heroicons.py:182 ms1.8%
_render_iconheroicons/templatetags/heroicons.py:392 ms1.8%
_render_iconheroicons/__init__.py:632 ms1.8%
tostring<stdlib>/xml/etree/ElementTree.py:11062 ms1.8%
ElementTree.write<stdlib>/xml/etree/ElementTree.py:7432 ms1.8%
_namespaces<stdlib>/xml/etree/ElementTree.py:8552 ms1.8%
project_editapps/projects/urls.py:6435 ms5.5%
managed_projectapps/projects/urls.py:645 ms5.5%
can_manageapps/projects/urls.py:445 ms5.5%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).exists()5 ms5.5%
QuerySet.existsdjango/db/models/query.py:13375 ms5.5%
Query.has_resultsdjango/db/models/sql/query.py:6815 ms5.5%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15925 ms5.5%
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:1053 ms3.6%
Cursor.executepsycopg/cursor.py:1133 ms3.6%
Connection.waitpsycopg/connection.py:4953 ms3.6%
BaseCursor._execute_genpsycopg/_cursor_base.py:2052 ms1.8%
BaseCursor._convert_querypsycopg/_cursor_base.py:4652 ms1.8%
PostgresClientQuery.convertpsycopg/_queries.py:2892 ms1.8%
PostgresClientQuery.dumppsycopg/_queries.py:2992 ms1.8%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3002 ms1.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms1.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms1.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16112 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7952 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.8%
WhereNode.as_sqldjango/db/models/sql/where.py:1512 ms1.8%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5782 ms1.8%
RelatedLookupMixin.as_sqldjango/db/models/fields/related_lookups.py:1282 ms1.8%
Exact.as_sqldjango/db/models/lookups.py:4072 ms1.8%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2382 ms1.8%
BuiltinLookup.process_lhsdjango/db/models/lookups.py:2302 ms1.8%
project_editapps/projects/urls.py:644 form = ProjectSettingsForm(request.POST or None, instance=project)5 ms5.5%
WSGIRequest._get_postdjango/core/handlers/wsgi.py:933 ms3.6%
HttpRequest._load_post_and_filesdjango/http/request.py:4323 ms3.6%
HttpRequest.parse_file_uploaddjango/http/request.py:3773 ms3.6%
MultiPartParser.parsedjango/http/multipartparser.py:1253 ms3.6%
MultiPartParser._parsedjango/http/multipartparser.py:1882 ms1.8%
Parser.__iter__django/http/multipartparser.py:7542 ms1.8%
parse_boundary_streamdjango/http/multipartparser.py:7292 ms1.8%
MultiPartParser._parsedjango/http/multipartparser.py:2382 ms1.8%
LazyStream.readdjango/http/multipartparser.py:4682 ms1.8%
BaseModelForm.__init__django/forms/models.py:3812 ms1.8%
BaseForm.__init__django/forms/forms.py:1062 ms1.8%
deepcopy<stdlib>/copy.py:1302 ms1.8%
_deepcopy_dict<stdlib>/copy.py:2012 ms1.8%
deepcopy<stdlib>/copy.py:1372 ms1.8%
Field.__deepcopy__django/forms/fields.py:2652 ms1.8%
deepcopy<stdlib>/copy.py:1372 ms1.8%
project_editapps/projects/urls.py:648 project.refresh_from_db() # an invalid form changed it in memory2 ms1.8%
Model.refresh_from_dbdjango/db/models/base.py:7432 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms1.8%
QuerySet.filterdjango/db/models/query.py:15422 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.8%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 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:1262 ms1.8%
Atomic.__exit__django/db/transaction.py:2472 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms1.8%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 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%
ClientHandler.__call__django/test/client.py:17311 ms12.8%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6211 ms12.8%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10411 ms12.8%
WhiteNoise.add_fileswhitenoise/base.py:10811 ms12.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12010 ms10.9%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13110 ms10.9%
WhiteNoise.get_static_filewhitenoise/base.py:2086 ms7.3%
StaticFile.__init__whitenoise/responders.py:735 ms5.5%
StaticFile.get_headerswhitenoise/responders.py:1672 ms1.8%
StaticFile.get_headerswhitenoise/responders.py:1782 ms1.8%
parsedate<stdlib>/email/_parseaddr.py:1852 ms1.8%
parsedate_tz<stdlib>/email/_parseaddr.py:502 ms1.8%
_parsedate_tz<stdlib>/email/_parseaddr.py:1802 ms1.8%
StaticFile.get_headerswhitenoise/responders.py:1812 ms1.8%
StaticFile.__init__whitenoise/responders.py:762 ms1.8%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1882 ms1.8%
Headers.__contains__<stdlib>/wsgiref/headers.py:872 ms1.8%
Headers.get<stdlib>/wsgiref/headers.py:1062 ms1.8%
WhiteNoise.get_static_filewhitenoise/base.py:2023 ms3.6%
WhiteNoise.add_mime_headerswhitenoise/base.py:2212 ms1.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1152 ms1.8%
scantreewhitenoise/base.py:2642 ms1.8%
ProjectEditPage.test_slug_unique_in_organizationapps/projects/tests.py:177 response = self.client.post(self.project.url("project_edit"), {"name": "Test Project", "slug": "settings"})22 ms25.5%
Client.postdjango/test/client.py:115322 ms25.5%
RequestFactory.postdjango/test/client.py:49922 ms25.5%
RequestFactory.genericdjango/test/client.py:67122 ms25.5%
Client.requestdjango/test/client.py:108222 ms25.5%
ClientHandler.__call__django/test/client.py:18622 ms25.5%
BaseHandler.get_responsedjango/core/handlers/base.py:14122 ms25.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms25.5%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13022 ms25.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms25.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30922 ms25.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms25.5%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12322 ms25.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5522 ms25.5%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
MiddlewareMixin.__call__django/utils/deprecation.py:30921 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:3421 ms23.7%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5521 ms23.7%
BaseHandler._get_responsedjango/core/handlers/base.py:19821 ms23.7%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:5918 ms20.0%
project_editapps/projects/urls.py:649 return render(request, "project.html", {**shell(request, project, "settings"), "form": form})10 ms10.9%
shellapps/projects/urls.py:71 return org_shell(request, project.organization if project else None, section) | {8 ms9.1%
ForwardManyToOneDescriptor.__get__django/db/models/fields/related_descriptors.py:2573 ms3.6%
ForwardManyToOneDescriptor.get_objectdjango/db/models/fields/related_descriptors.py:2223 ms3.6%
QuerySet.getdjango/db/models/query.py:6353 ms3.6%
QuerySet.__len__django/db/models/query.py:3723 ms3.6%
QuerySet._fetch_alldjango/db/models/query.py:20003 ms3.6%
ModelIterable.__iter__django/db/models/query.py:953 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:1053 ms3.6%
Cursor.executepsycopg/cursor.py:1133 ms3.6%
Connection.waitpsycopg/connection.py:4953 ms3.6%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3182 ms1.8%
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:16112 ms1.8%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7672 ms1.8%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:872 ms1.8%
SQLCompiler.get_order_bydjango/db/models/sql/compiler.py:4912 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%
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%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms1.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms1.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 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%
SimpleNode.renderdjango/template/library.py:3252 ms1.8%
heroicon_miniheroicons/templatetags/heroicons.py:182 ms1.8%
_render_iconheroicons/templatetags/heroicons.py:392 ms1.8%
_render_iconheroicons/__init__.py:632 ms1.8%
tostring<stdlib>/xml/etree/ElementTree.py:11062 ms1.8%
project_editapps/projects/urls.py:6433 ms3.6%
managed_projectapps/projects/urls.py:61 project = get_object_or_404(2 ms1.8%
get_object_or_404django/shortcuts.py:902 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%
managed_projectapps/projects/urls.py:642 ms1.8%
can_manageapps/projects/urls.py:442 ms1.8%
can_manage_projectapps/projects/urls.py:40 return user.is_superuser or project.organization.membership_set.filter(user=user).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%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms1.8%
Cursor.executepsycopg/cursor.py:1132 ms1.8%
Connection.waitpsycopg/connection.py:4952 ms1.8%
project_editapps/projects/urls.py:644 form = ProjectSettingsForm(request.POST or None, instance=project)2 ms1.8%
BaseModelForm.__init__django/forms/models.py:3812 ms1.8%
project_editapps/projects/urls.py:6452 ms1.8%
BaseForm.is_validdjango/forms/forms.py:2062 ms1.8%
BaseForm.errorsdjango/forms/forms.py:2012 ms1.8%
BaseForm.full_cleandjango/forms/forms.py:3372 ms1.8%
BaseForm._clean_fieldsdjango/forms/forms.py:3472 ms1.8%
ProjectSettingsForm.clean_slugapps/projects/urls.py:636 if Project.objects.filter(organization=self.instance.organization, slug=slug).exclude(pk=self.instance.pk):2 ms1.8%
QuerySet.__bool__django/db/models/query.py:4042 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%
project_editapps/projects/urls.py:648 project.refresh_from_db() # an invalid form changed it in memory2 ms1.8%
Model.refresh_from_dbdjango/db/models/base.py:7582 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%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:563 ms3.6%
login_required.<locals>.<lambda>django/contrib/auth/decorators.py:793 ms3.6%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2513 ms3.6%
SimpleLazyObject._setupdjango/utils/functional.py:4043 ms3.6%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:403 ms3.6%
get_userdjango/contrib/auth/middleware.py:203 ms3.6%
get_userdjango/contrib/auth/__init__.py:3112 ms1.8%
_get_user_session_keydjango/contrib/auth/__init__.py:952 ms1.8%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:552 ms1.8%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms1.8%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms1.8%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 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%
get_userdjango/contrib/auth/__init__.py:3182 ms1.8%
ModelBackend.get_userdjango/contrib/auth/backends.py:2322 ms1.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 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%
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:1262 ms1.8%
Atomic.__enter__django/db/transaction.py:2112 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms1.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 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%
ProjectEditPage.setUpapps/projects/tests.py:143 self.client.force_login(self.user)5 ms5.5%
ClientMixin.force_logindjango/test/client.py:8555 ms5.5%
ClientMixin._logindjango/test/client.py:8813 ms3.6%
logindjango/contrib/auth/__init__.py:1752 ms1.8%
SessionBase.__contains__django/contrib/sessions/backends/base.py:522 ms1.8%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms1.8%
SessionStore.loaddjango/contrib/sessions/backends/db.py:552 ms1.8%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:342 ms1.8%
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%
QuerySet.filterdjango/db/models/query.py:15422 ms1.8%
QuerySet._filter_or_excludedjango/db/models/query.py:15602 ms1.8%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15702 ms1.8%
Query.add_qdjango/db/models/sql/query.py:16712 ms1.8%
Query._add_qdjango/db/models/sql/query.py:17032 ms1.8%
Query.build_filterdjango/db/models/sql/query.py:15772 ms1.8%
Query.setup_joinsdjango/db/models/sql/query.py:19272 ms1.8%
logindjango/contrib/auth/__init__.py:1872 ms1.8%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4342 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%
ClientMixin._logindjango/test/client.py:8832 ms1.8%
SessionStore.savedjango/contrib/sessions/backends/db.py:1232 ms1.8%
SessionStore.create_model_instancedjango/contrib/sessions/backends/db.py:1022 ms1.8%
SessionBase.encodedjango/contrib/sessions/backends/base.py:1262 ms1.8%
dumpsdjango/core/signing.py:1512 ms1.8%
Signer.sign_objectdjango/core/signing.py:2392 ms1.8%
TimestampSigner.signdjango/core/signing.py:2612 ms1.8%
Signer.signdjango/core/signing.py:2052 ms1.8%
Signer.signaturedjango/core/signing.py:2022 ms1.8%
base64_hmacdjango/core/signing.py:1012 ms1.8%
salted_hmacdjango/utils/crypto.py:452 ms1.8%
new<stdlib>/hmac.py:2372 ms1.8%
__init____init__:-12 ms1.8%
HMAC.__init__<stdlib>/hmac.py:1082 ms1.8%
HMAC.__init<stdlib>/hmac.py:1132 ms1.8%
HMAC._init_openssl_hmac<stdlib>/hmac.py:1282 ms1.8%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()2 ms1.8%
TestCase._fixture_setupdjango/test/testcases.py:14782 ms1.8%
TestCase._enter_atomicsdjango/test/testcases.py:13962 ms1.8%
Atomic.__enter__django/db/transaction.py:2112 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4002 ms1.8%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3672 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%
ProjectEditPage.test_slug_unique_in_organizationapps/projects/tests.py:178 self.assertContains(response, "is reserved")2 ms1.8%
SimpleTestCase.assertContainsdjango/test/testcases.py:6032 ms1.8%
SimpleTestCase._assert_containsdjango/test/testcases.py:5782 ms1.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms1.8%
TestCase._fixture_teardowndjango/test/testcases.py:14972 ms1.8%
TestCase._rollback_atomicsdjango/test/testcases.py:14052 ms1.8%
Atomic.__exit__django/db/transaction.py:2862 ms1.8%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:262 ms1.8%
BaseDatabaseWrapper.savepoint_commitdjango/db/backends/base/base.py:4312 ms1.8%
BaseDatabaseWrapper._savepoint_commitdjango/db/backends/base/base.py:3752 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 55 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/projects/urls.py:636
if Project.objects.filter(organization=self.instance.organization, slug=slug).exclude(pk=self.instance.pk):
ProjectSettingsForm.clean_slug
· Database
|
26 ms |
|
apps/projects/tests.py:175
response = self.client.post(self.project.url("project_edit"), {"name": "Test Project", "slug": "taken"})
ProjectEditPage.test_slug_unique_in_organization
· Libraries
|
13 ms |
|
apps/projects/urls.py:40
return user.is_superuser or project.organization.membership_set.filter(user=user).exists()
can_manage_project
· Database
|
6 ms |
|
apps/projects/urls.py:644
form = ProjectSettingsForm(request.POST or None, instance=project)
project_edit
· Libraries
|
6 ms |
|
apps/projects/tests.py:143
self.client.force_login(self.user)
ProjectEditPage.setUp
· Database
|
5 ms |
|
apps/projects/urls.py:71
return org_shell(request, project.organization if project else None, section) | {
shell
· Database
|
5 ms |
|
apps/projects/urls.py:649
return render(request, "project.html", {**shell(request, project, "settings"), "form": form})
project_edit
· Templates
|
5 ms |
|
apps/projects/tests.py:177
response = self.client.post(self.project.url("project_edit"), {"name": "Test Project", "slug": "settings"})
ProjectEditPage.test_slug_unique_in_organization
· Database
|
5 ms |
|
apps/projects/urls.py:648
project.refresh_from_db() # an invalid form changed it in memory
project_edit
· Database
|
3 ms |
|
apps/orgs/views.py:33
organizations = [] if user.is_anonymous else list(Organization.objects.filter(membership__user=user))
org_shell
· Database
|
3 ms |
Fixtures
Exact setup time| _django_set_urlconf function | 0.06 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _live_server_helper function | 0.04 ms |
| _template_string_if_invalid_marker function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
50 queries · 18 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
6×
SELECT "projects_project"."id", "projects_project"."organization_id", "projects_project"."name", "projects_project"."slug", "projects_project"."public", "projects_project"."description", "projects_project"."date_created", "projects_project"."date_updated", "projects_project"."created_by_id" FROM "p…
4×
SELECT %s AS "a" FROM "orgs_membership" WHERE ("orgs_membership"."organization_id" = %s AND "orgs_membership"."user_id" = %s) LIMIT ?
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 ?
3×
UPDATE "django_session" SET "session_data" = %s, "expire_date" = %s WHERE "django_session"."session_key" = %s
Biggest pieces of work
|
call test body
apps/projects/tests.py:175
|
78 ms |
|
call setUp
apps/projects/tests.py:143
|
5 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
2 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
2 ms |
| setup pytest internals | 0.75 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 | 88 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 41 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 76 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 68 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 91 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 50 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 81 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 75 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 76 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 86 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 43 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 78 ms | Profile |