Tests / starter_packs/tests.py
TestOwnerManagement::test_invite_twice_does_not_duplicate
First seen 3 weeks ago in 0c23747
CI
github-actions:test
11 runs
Average
168 ms
median 145 ms
max 282 ms
max 282 ms
Phases
Setup 1 ms
Call 166 ms
Teardown 0.37 ms
Categories
Database 64 ms
App code 0.33 ms
Test code 0.15 ms
Other (Libraries, Unsampled, Templates, pytest, ...) 103 ms
40 database queries per run
Needs 122 KB of memory (max 860 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 7 hours ago ·
open run
call142 ms98.0%
TestOwnerManagement.test_invite_twice_does_not_duplicatestarter_packs/tests.py:513 self.client.force_login(self.owner)88 ms60.9%
ClientMixin.force_logindjango/test/client.py:85888 ms60.9%
ClientMixin._logindjango/test/client.py:88477 ms53.3%
ClientMixin.sessiondjango/test/client.py:81577 ms53.3%
SessionStore.savedjango/contrib/sessions/backends/db.py:12177 ms53.3%
SessionStore.createdjango/contrib/sessions/backends/db.py:7076 ms52.3%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:20176 ms52.3%
SessionStore.existsdjango/contrib/sessions/backends/db.py:6376 ms52.3%
QuerySet.existsdjango/db/models/query.py:145876 ms52.3%
Query.has_resultsdjango/db/models/sql/query.py:68776 ms52.3%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:159376 ms52.3%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:162575 ms51.4%
CursorWrapper.executedjango/db/backends/utils.py:7975 ms51.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:9275 ms51.4%
CursorWrapper._executedjango/db/backends/utils.py:10575 ms51.4%
Cursor.executepsycopg/cursor.py:11375 ms51.4%
Connection.waitpsycopg/connection.py:49575 ms51.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16121 ms1.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7961 ms1.0%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms1.0%
WhereNode.as_sqldjango/db/models/sql/where.py:1511 ms1.0%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms1.0%
Exact.as_sqldjango/db/models/lookups.py:4071 ms1.0%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2461 ms1.0%
BuiltinLookup.get_rhs_opdjango/db/models/lookups.py:2501 ms1.0%
SessionStore.createdjango/contrib/sessions/backends/db.py:741 ms1.0%
SessionStore.savedjango/contrib/sessions/backends/db.py:1261 ms1.0%
Atomic.__enter__django/db/transaction.py:2231 ms1.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.0%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4001 ms1.0%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3671 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
ClientMixin._logindjango/test/client.py:8898 ms5.7%
logindjango/contrib/auth/__init__.py:1896 ms3.8%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4374 ms2.9%
SessionStore.createdjango/contrib/sessions/backends/db.py:703 ms1.9%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:2013 ms1.9%
SessionStore.existsdjango/contrib/sessions/backends/db.py:633 ms1.9%
QuerySet.existsdjango/db/models/query.py:14583 ms1.9%
Query.has_resultsdjango/db/models/sql/query.py:6851 ms1.0%
Query.existsdjango/db/models/sql/query.py:6631 ms1.0%
Query.clonedjango/db/models/sql/query.py:4021 ms1.0%
WhereNode.clonedjango/db/models/sql/where.py:2221 ms1.0%
Query.has_resultsdjango/db/models/sql/query.py:6871 ms1.0%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15931 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
SessionStore.createdjango/contrib/sessions/backends/db.py:741 ms1.0%
SessionStore.savedjango/contrib/sessions/backends/db.py:1261 ms1.0%
Atomic.__enter__django/db/transaction.py:2231 ms1.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.0%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4001 ms1.0%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3671 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4401 ms1.0%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1751 ms1.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.0%
QuerySet.getdjango/db/models/query.py:7021 ms1.0%
QuerySet.__len__django/db/models/query.py:4211 ms1.0%
QuerySet._fetch_alldjango/db/models/query.py:22621 ms1.0%
ModelIterable.__iter__django/db/models/query.py:1031 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
logindjango/contrib/auth/__init__.py:1771 ms1.0%
SessionBase.__contains__django/contrib/sessions/backends/base.py:521 ms1.0%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2541 ms1.0%
SessionStore.loaddjango/contrib/sessions/backends/db.py:551 ms1.0%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:341 ms1.0%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.0%
QuerySet.getdjango/db/models/query.py:7021 ms1.0%
QuerySet.__len__django/db/models/query.py:4211 ms1.0%
QuerySet._fetch_alldjango/db/models/query.py:22621 ms1.0%
ModelIterable.__iter__django/db/models/query.py:1031 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
logindjango/contrib/auth/__init__.py:1981 ms1.0%
Signal.senddjango/dispatch/dispatcher.py:2491 ms1.0%
update_last_logindjango/contrib/auth/models.py:241 ms1.0%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:621 ms1.0%
Model.savedjango/db/models/base.py:9041 ms1.0%
Model.save_basedjango/db/models/base.py:9961 ms1.0%
Model._save_tabledjango/db/models/base.py:11401 ms1.0%
Model._do_updatedjango/db/models/base.py:12441 ms1.0%
QuerySet._updatedjango/db/models/query.py:14481 ms1.0%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21501 ms1.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21211 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
ClientMixin._logindjango/test/client.py:8913 ms1.9%
SessionStore.savedjango/contrib/sessions/backends/db.py:1261 ms1.0%
Atomic.__enter__django/db/transaction.py:2231 ms1.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.0%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4001 ms1.0%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3671 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
SessionStore.savedjango/contrib/sessions/backends/db.py:1271 ms1.0%
Model.savedjango/db/models/base.py:9041 ms1.0%
Model.save_basedjango/db/models/base.py:9961 ms1.0%
Model._save_tabledjango/db/models/base.py:11401 ms1.0%
Model._do_updatedjango/db/models/base.py:12441 ms1.0%
QuerySet._updatedjango/db/models/query.py:14481 ms1.0%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21501 ms1.0%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21211 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
TestOwnerManagement.test_invite_twice_does_not_duplicatestarter_packs/tests.py:514 self.client.post(reverse("invite_owner", args=[self.pack.slug, self.friend.id]))54 ms37.1%
Client.postdjango/test/client.py:116254 ms37.1%
RequestFactory.postdjango/test/client.py:49954 ms37.1%
RequestFactory.genericdjango/test/client.py:67154 ms37.1%
Client.requestdjango/test/client.py:109154 ms37.1%
ClientHandler.__call__django/test/client.py:17332 ms21.9%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6332 ms21.9%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10432 ms21.9%
WhiteNoise.add_fileswhitenoise/base.py:10832 ms21.9%
WhiteNoise.update_files_dictionarywhitenoise/base.py:11519 ms13.3%
scantreewhitenoise/base.py:27117 ms11.4%
scantreewhitenoise/base.py:27311 ms7.6%
<GC>~11 ms7.6%
scantreewhitenoise/base.py:2716 ms3.8%
scantreewhitenoise/base.py:2713 ms1.9%
scantreewhitenoise/base.py:2713 ms1.9%
scantreewhitenoise/base.py:2713 ms1.9%
scantreewhitenoise/base.py:2691 ms1.0%
scantreewhitenoise/base.py:2731 ms1.0%
scantreewhitenoise/base.py:2691 ms1.0%
scantreewhitenoise/base.py:2731 ms1.0%
scantreewhitenoise/base.py:2731 ms1.0%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12012 ms8.6%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13112 ms8.6%
WhiteNoise.get_static_filewhitenoise/base.py:2177 ms4.8%
StaticFile.__init__whitenoise/responders.py:773 ms1.9%
StaticFile.get_alternativeswhitenoise/responders.py:2031 ms1.0%
Headers.__setitem__<stdlib>/wsgiref/headers.py:621 ms1.0%
Headers.__init__<stdlib>/wsgiref/headers.py:431 ms1.0%
StaticFile.get_alternativeswhitenoise/responders.py:2001 ms1.0%
__init____init__:-11 ms1.0%
Headers.__init__<stdlib>/wsgiref/headers.py:431 ms1.0%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:491 ms1.0%
StaticFile.__init__whitenoise/responders.py:731 ms1.0%
StaticFile.get_headerswhitenoise/responders.py:1761 ms1.0%
formatdate<stdlib>/email/utils.py:2661 ms1.0%
StaticFile.__init__whitenoise/responders.py:741 ms1.0%
parsedate<stdlib>/email/_parseaddr.py:1851 ms1.0%
StaticFile.__init__whitenoise/responders.py:721 ms1.0%
WhiteNoise.get_static_filewhitenoise/base.py:2124 ms2.9%
WhiteNoise.add_cache_headerswhitenoise/base.py:2334 ms2.9%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1764 ms2.9%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1974 ms2.9%
URLMixin.urldebug_toolbar/panels/staticfiles.py:204 ms2.9%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2353 ms1.9%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:2161 ms1.0%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:2141 ms1.0%
WhiteNoise.get_static_filewhitenoise/base.py:2141 ms1.0%
ClientHandler.__call__django/test/client.py:18622 ms15.2%
BaseHandler.get_responsedjango/core/handlers/base.py:14222 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12322 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:14522 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38022 ms15.2%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5622 ms15.2%
MiddlewareMixin.__call__django/utils/deprecation.py:38021 ms14.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5621 ms14.3%
MiddlewareMixin.__call__django/utils/deprecation.py:38021 ms14.3%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5621 ms14.3%
BaseHandler._get_responsedjango/core/handlers/base.py:19921 ms14.3%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:6321 ms14.3%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:6211 ms7.6%
invite_ownerstarter_packs/views.py:4746 ms3.8%
get_editable_packstarter_packs/views.py:60 return get_object_or_404(StarterPack, slug=slug, owners=request.user, **extra)6 ms3.8%
get_object_or_404django/shortcuts.py:1006 ms3.8%
QuerySet.getdjango/db/models/query.py:7024 ms2.9%
QuerySet.__len__django/db/models/query.py:4214 ms2.9%
QuerySet._fetch_alldjango/db/models/query.py:22624 ms2.9%
ModelIterable.__iter__django/db/models/query.py:1034 ms2.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16123 ms1.9%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7683 ms1.9%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:893 ms1.9%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:783 ms1.9%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2651 ms1.0%
SQLCompiler.get_default_columnsdjango/db/models/sql/compiler.py:10101 ms1.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3191 ms1.0%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
QuerySet.getdjango/db/models/query.py:6921 ms1.0%
QuerySet.filterdjango/db/models/query.py:16761 ms1.0%
QuerySet._filter_or_excludedjango/db/models/query.py:16941 ms1.0%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:17041 ms1.0%
Query.add_qdjango/db/models/sql/query.py:16811 ms1.0%
Query._add_qdjango/db/models/sql/query.py:17131 ms1.0%
Query.build_filterdjango/db/models/sql/query.py:15771 ms1.0%
Query.setup_joinsdjango/db/models/sql/query.py:19871 ms1.0%
invite_ownerstarter_packs/views.py:479 elif starter_pack.owners.filter(pk=user_id).exists():3 ms1.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.0%
QuerySet.filterdjango/db/models/query.py:16751 ms1.0%
QuerySet._not_support_combined_queriesdjango/db/models/query.py:23361 ms1.0%
QuerySet.querydjango/db/models/query.py:3551 ms1.0%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:17041 ms1.0%
Query.add_qdjango/db/models/sql/query.py:16811 ms1.0%
Query._add_qdjango/db/models/sql/query.py:17281 ms1.0%
JoinPromoter.update_join_typesdjango/db/models/sql/query.py:28971 ms1.0%
Query.demote_joinsdjango/db/models/sql/query.py:9871 ms1.0%
Join.demotedjango/db/models/sql/datastructures.py:1711 ms1.0%
Join.relabeled_clonedjango/db/models/sql/datastructures.py:1421 ms1.0%
QuerySet.existsdjango/db/models/query.py:14581 ms1.0%
Query.has_resultsdjango/db/models/sql/query.py:6871 ms1.0%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15931 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16231 ms1.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.0%
BaseDatabaseWrapper.cursordjango/db/backends/base/base.py:3201 ms1.0%
BaseDatabaseWrapper._cursordjango/db/backends/base/base.py:2981 ms1.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.0%
invite_ownerstarter_packs/views.py:475 q = request.POST.get("q", "").replace("\x00", "").strip()1 ms1.0%
WSGIRequest._get_postdjango/core/handlers/wsgi.py:931 ms1.0%
HttpRequest._load_post_and_filesdjango/http/request.py:4691 ms1.0%
HttpRequest.parse_file_uploaddjango/http/request.py:3971 ms1.0%
MultiPartParser.parsedjango/http/multipartparser.py:1251 ms1.0%
MultiPartParser._parsedjango/http/multipartparser.py:1881 ms1.0%
Parser.__iter__django/http/multipartparser.py:7591 ms1.0%
parse_boundary_streamdjango/http/multipartparser.py:7131 ms1.0%
invite_ownerstarter_packs/views.py:477 if not AccountAccess.objects.filter(user_id=user_id).exists():1 ms1.0%
QuerySet.existsdjango/db/models/query.py:14581 ms1.0%
Query.has_resultsdjango/db/models/sql/query.py:6871 ms1.0%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15931 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16121 ms1.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7681 ms1.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:891 ms1.0%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:781 ms1.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:3191 ms1.0%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:5910 ms6.7%
login_required.<locals>.<lambda>django/contrib/auth/decorators.py:8210 ms6.7%
new_method_proxy.<locals>.innerdjango/utils/functional.py:25110 ms6.7%
SimpleLazyObject._setupdjango/utils/functional.py:40410 ms6.7%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:3910 ms6.7%
get_userdjango/contrib/auth/middleware.py:1910 ms6.7%
get_userdjango/contrib/auth/__init__.py:2877 ms4.8%
_get_user_session_keydjango/contrib/auth/__init__.py:1116 ms3.8%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:556 ms3.8%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2546 ms3.8%
SessionStore.loaddjango/contrib/sessions/backends/db.py:556 ms3.8%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:346 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:876 ms3.8%
QuerySet.getdjango/db/models/query.py:7024 ms2.9%
QuerySet.__len__django/db/models/query.py:4214 ms2.9%
QuerySet._fetch_alldjango/db/models/query.py:22624 ms2.9%
ModelIterable.__iter__django/db/models/query.py:1034 ms2.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16123 ms1.9%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7681 ms1.0%
SQLCompiler.pre_sql_setupdjango/db/models/sql/compiler.py:891 ms1.0%
SQLCompiler.setup_querydjango/db/models/sql/compiler.py:781 ms1.0%
SQLCompiler.get_selectdjango/db/models/sql/compiler.py:2731 ms1.0%
SQLCompiler.get_select.<locals>.<genexpr>django/db/models/sql/compiler.py:2781 ms1.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:9391 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16251 ms1.0%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.0%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.0%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.0%
Cursor.executepsycopg/cursor.py:1131 ms1.0%
Connection.waitpsycopg/connection.py:4951 ms1.0%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.0%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.0%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.0%
QuerySet.getdjango/db/models/query.py:6921 ms1.0%
QuerySet.filterdjango/db/models/query.py:16761 ms1.0%
QuerySet._filter_or_excludedjango/db/models/query.py:16941 ms1.0%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:17041 ms1.0%
Query.add_qdjango/db/models/sql/query.py:16811 ms1.0%
Query._add_qdjango/db/models/sql/query.py:17131 ms1.0%
Query.build_filterdjango/db/models/sql/query.py:15511 ms1.0%
get_userdjango/contrib/auth/__init__.py:2943 ms1.9%
ModelBackend.get_userdjango/contrib/auth/backends.py:2373 ms1.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms1.9%
QuerySet.getdjango/db/models/query.py:7023 ms1.9%
QuerySet.__len__django/db/models/query.py:4213 ms1.9%
QuerySet._fetch_alldjango/db/models/query.py:22621 ms1.0%
ModelIterable.__iter__django/db/models/query.py:1031 ms1.0%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16121 ms1.0%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7961 ms1.0%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms1.0%
WhereNode.as_sqldjango/db/models/sql/where.py:1511 ms1.0%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5791 ms1.0%
MiddlewareMixin.__call__django/utils/deprecation.py:3791 ms1.0%
MessageMiddleware.process_requestdjango/contrib/messages/middleware.py:121 ms1.0%
default_storagedjango/contrib/messages/storage/__init__.py:121 ms1.0%
FallbackStorage.__init__django/contrib/messages/storage/fallback.py:171 ms1.0%
CookieStorage.__init__django/contrib/messages/storage/cookie.py:921 ms1.0%
Estimated from 103 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
starter_packs/tests.py:513
self.client.force_login(self.owner)
TestOwnerManagement.test_invite_twice_does_not_duplicate
· Database
|
88 ms |
|
starter_packs/tests.py:514
self.client.post(reverse("invite_owner", args=[self.pack.slug, self.friend.id]))
TestOwnerManagement.test_invite_twice_does_not_duplicate
· Libraries
|
43 ms |
|
starter_packs/views.py:60
return get_object_or_404(StarterPack, slug=slug, owners=request.user, **extra)
get_editable_pack
· Database
|
6 ms |
|
starter_packs/views.py:479
elif starter_pack.owners.filter(pk=user_id).exists():
invite_owner
· Database
|
3 ms |
|
starter_packs/views.py:475
q = request.POST.get("q", "").replace("\x00", "").strip()
invite_owner
· Libraries
|
1 ms |
|
starter_packs/views.py:477
if not AccountAccess.objects.filter(user_id=user_id).exists():
invite_owner
· Database
|
1 ms |
Fixtures
Exact setup time| _django_set_urlconf function | 0.08 ms |
| _template_string_if_invalid_marker function | 0.06 ms |
| _live_server_helper function | 0.05 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.04 ms |
| _django_isolate_apps function | 0.04 ms |
| _django_clear_site_cache function | 0.03 ms |
| monkeypatch function | 0.03 ms |
Database
40 queries · 27 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
starter_packs/tests.py:513
|
142 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 | |
|---|---|---|---|---|
| 7 hours ago | CI github-actions:test | passed | 145 ms | Profile |
| 16 hours ago | CI github-actions:test | passed | 73 ms | Profile |
| 22 hours ago | CI github-actions:test | passed | 142 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 184 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 130 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 126 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 148 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 111 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 269 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 282 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 236 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 122 ms | Run |