From cb55b95e66ac4c6ef97c93fd629ee1ea7afcf031 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 16 Oct 2011 07:28:03 -0400 Subject: [PATCH] Added granting and revoking permission methods to the permission model --- apps/permissions/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/permissions/models.py b/apps/permissions/models.py index df5d7c0626..637a59efab 100644 --- a/apps/permissions/models.py +++ b/apps/permissions/models.py @@ -48,6 +48,18 @@ class Permission(models.Model): if self.has_permission(membership): return True + def grant_to(self, requester): + permission_holder, created = PermissionHolder.objects.get_or_create(permission=self, holder_type=ContentType.objects.get_for_model(requester), holder_id=requester.pk) + return created + + def revoke_from(self, holder): + try: + permission_holder = PermissionHolder.objects.get(permission=self, holder_type=ContentType.objects.get_for_model(holder), holder_id=holder.pk) + permission_holder.delete() + return True + except PermissionHolder.DoesNotExist: + return False + class PermissionHolder(models.Model): permission = models.ForeignKey(Permission, verbose_name=_(u'permission'))