diff --git a/apps/acls/forms.py b/apps/acls/forms.py index e5a55a006c..f4b7b0b4b7 100644 --- a/apps/acls/forms.py +++ b/apps/acls/forms.py @@ -45,3 +45,7 @@ class HolderSelectionForm(forms.Form): super(HolderSelectionForm, self).__init__(*args, **kwargs) self.fields['holder_gid'].choices = non_holder_list + + +class ClassHolderSelectionForm(HolderSelectionForm): + pass diff --git a/apps/acls/models.py b/apps/acls/models.py index a255348760..b5e7c2829b 100644 --- a/apps/acls/models.py +++ b/apps/acls/models.py @@ -11,6 +11,7 @@ from django.core.exceptions import PermissionDenied from django.core.exceptions import ObjectDoesNotExist from permissions.models import StoredPermission +from common.models import Singleton, SingletonManager from .managers import AccessEntryManager, DefaultAccessEntryManager from .classes import AccessObjectClass @@ -91,3 +92,22 @@ class DefaultAccessEntry(models.Model): def __unicode__(self): return u'%s: %s' % (self.content_type, self.content_object) + + +class CreatorSingletonManager(SingletonManager): + def passthru_check(self, holder, creator=None): + if isinstance(holder, self.model): + # TODO: raise explicit error if is instance and creator=None + return creator + else: + return holder + +class CreatorSingleton(Singleton): + objects = CreatorSingletonManager() + + def __unicode__(self): + return ugettext('Creator') + + class Meta: + verbose_name = _(u'creator') + verbose_name_plural = _(u'creator')