From d1eb387c16e18d880109ffebc8465f89a485b685 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 20 Jan 2012 22:54:26 -0400 Subject: [PATCH] Start work on the creator pseudo class acl holder --- apps/acls/forms.py | 4 ++++ apps/acls/models.py | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) 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')