Use a simple lazy class to avoid a database read during acls.forms import
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user