diff --git a/apps/permissions/models.py b/apps/permissions/models.py index 2ec16fe68f..a518bff358 100644 --- a/apps/permissions/models.py +++ b/apps/permissions/models.py @@ -208,13 +208,6 @@ class Role(models.Model): verbose_name = _(u'role') verbose_name_plural = _(u'roles') - def add_member(self, member): - member = AnonymousUserSingleton.objects.passthru_check(member) - role_member, created = RoleMember.objects.get_or_create( - role=self, - member_type=ContentType.objects.get_for_model(member), - member_id=member.pk) - def __unicode__(self): return self.label @@ -222,6 +215,25 @@ class Role(models.Model): def get_absolute_url(self): return ('role_list',) + def add_member(self, member): + member = AnonymousUserSingleton.objects.passthru_check(member) + role_member, created = RoleMember.objects.get_or_create( + role=self, + member_type=ContentType.objects.get_for_model(member), + member_id=member.pk) + if not created: + raise Exception('Unable to add member to role') + + def remove_member(self, member): + member = AnonymousUserSingleton.objects.passthru_check(member) + member_type=ContentType.objects.get_for_model(member) + role_member = RoleMember.objects.get(role=self, member_type=member_type, member_id=member.pk) + role_member.delete() + + def members(self, filter_dict=None): + filter_dict = filter_dict or {} + return [member.member_object for member in self.rolemember_set.filter(**filter_dict)] + class RoleMember(models.Model): role = models.ForeignKey(Role, verbose_name=_(u'role'))