From 877033b479ed4252ed4d40714a70fcb4a85c641f Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 4 Nov 2010 00:01:54 +0000 Subject: [PATCH] Sped up the create_permissions signal handler (and thus the test suite) by restructuring its queries. git-svn-id: http://code.djangoproject.com/svn/django/trunk@14446 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/auth/management/__init__.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/django/contrib/auth/management/__init__.py b/django/contrib/auth/management/__init__.py index fe2db75b86..ce93958f0f 100644 --- a/django/contrib/auth/management/__init__.py +++ b/django/contrib/auth/management/__init__.py @@ -26,21 +26,17 @@ def create_permissions(app, created_models, verbosity, **kwargs): searched_perms = set() # The codenames and ctypes that should exist. ctypes = set() - codenames = set() for klass in app_models: ctype = ContentType.objects.get_for_model(klass) ctypes.add(ctype) for perm in _get_all_permissions(klass._meta): - codenames.add(perm[0]) searched_perms.add((ctype, perm)) - # Find all the Permissions that a) have a content_type for a model we're - # looking for, and b) have a codename we're looking for. It doesn't need to - # have both, we have a list of exactly what we want, and it's faster to - # write the query with fewer conditions. + # Find all the Permissions that have a context_type for a model we're + # looking for. We don't need to check for codenames since we already have + # a list of the ones we're going to create. all_perms = set(auth_app.Permission.objects.filter( content_type__in=ctypes, - codename__in=codenames ).values_list( "content_type", "codename" ))