Use a simple lazy class to avoid a database read during acls.forms import

This commit is contained in:
Roberto Rosario
2014-07-19 00:20:18 -04:00
parent a263a4640a
commit f719cd7505

View File

@@ -1,16 +1,20 @@
from __future__ import absolute_import
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, Group
from django.utils.translation import ugettext_lazy as _
from django.utils.functional import SimpleLazyObject
from permissions.models import Role
from common.utils import get_object_name
from common.models import AnonymousUserSingleton
from common.utils import get_object_name
from permissions.models import Role
from .classes import AccessHolder
from .models import CreatorSingleton
anonymous_singleton = SimpleLazyObject(lambda: AnonymousUserSingleton.objects.get())
creator_singleton = SimpleLazyObject(lambda: CreatorSingleton.objects.get())
def _as_choice_list(holders):
return sorted([(AccessHolder.encapsulate(holder).gid, get_object_name(holder, display_object_type=False)) for holder in holders], key=lambda x: x[1])
@@ -51,8 +55,8 @@ class BaseHolderSelectionForm(forms.Form):
class HolderSelectionForm(BaseHolderSelectionForm):
special_holders = [AnonymousUserSingleton.objects.get_or_create()[0]]
special_holders = [anonymous_singleton]
class ClassHolderSelectionForm(BaseHolderSelectionForm):
special_holders = [AnonymousUserSingleton.objects.get_or_create()[0], CreatorSingleton.objects.get_or_create()[0]]
special_holders = [anonymous_singleton, creator_singleton]