From ca0b8a5e3826c3b0fecd0637c97733c615ce3e84 Mon Sep 17 00:00:00 2001 From: Őry Máté <ory.mate@cloud.bme.hu> Date: Sat, 9 Nov 2013 04:11:12 +0100 Subject: [PATCH] acl: fixing bugs discovered by tests --- circle/acl/models.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/circle/acl/models.py b/circle/acl/models.py index d6292a1..613a3d2 100644 --- a/circle/acl/models.py +++ b/circle/acl/models.py @@ -54,10 +54,11 @@ class AclBase(Model): """Define permission levels for Users/Groups per object.""" object_level_set = GenericRelation(ObjectLevel) - def get_level_object(self, level): + @classmethod + def get_level_object(cls, level): """Get Level object for this model by codename.""" - ct = ContentType.objects.get_for_model(self) + ct = ContentType.objects.get_for_model(cls) return Level.objects.get(codename=level, content_type=ct) def set_level(self, whom, level): @@ -133,18 +134,12 @@ class AclBase(Model): object_levels = self.object_level_set.filter( level__weight__gte=level.weight).all() - if group_also: - try: - groups = user.group_set.values_list('id', flat=True) - except AttributeError: - pass # e.g. AnyonymousUser doesn't have group_set - else: - for i in object_levels: - if i.users.filter(pk=user.pk).exists(): - return True - if (group_also and - i.groups.filter(pk__in=groups).exists()): - return True + groups = user.groups.values_list('id', flat=True) if group_also else [] + for i in object_levels: + if i.users.filter(pk=user.pk).exists(): + return True + if group_also and i.groups.filter(pk__in=groups).exists(): + return True return False def get_users_with_level(self): -- libgit2 0.26.0