コード例 #1
0
 def get_all_permissions(self, user, obj=None):
     q = get_perm_q_for_user(user)
     if obj:
         q = q & Q(content_type=ContentType.objects.get_for_model(obj), object_id=obj.id)
     perm_ids = AssignedPermission.objects.filter(q).values_list("permission")
     perms = AppPermission.objects.filter(id__in=perm_ids)
     return set(["%s.%s" % (p.app_label, p.codename) for p in perms])
コード例 #2
0
    def has_perm(self, user, perm, obj=None):
        try:
            (perm, ct) = AppPermission.objects.get_permission_and_content_type(perm, obj)
        except PermissionLookupError:
            return False

        obj_id = None
        if obj:
            obj_id = obj.id

        q = Q(permission=perm, content_type=ct, object_id=obj_id) & get_perm_q_for_user(user)
        return AssignedPermission.objects.filter(q).exists()
コード例 #3
0
 def get_permission_targets(self, permission, user):
     """
     Given a (long) permission string and a user, returns a QuerySet of
     objects for which that user has that permission.
     """
     
     (perm, ct) = self.get_permission_and_content_type(permission)
     
     q = models.Q(
             permission=perm,
             content_type=ct,
             object_id__isnull=False
         ) & get_perm_q_for_user(user)
     
     obj_ids = AssignedPermission.objects.filter(q).values('object_id')
     return ct.model_class().objects.filter(pk__in=obj_ids)
コード例 #4
0
 def has_module_perms(self, user, app_label):
     q = Q(permission__app_label=app_label) & get_perm_q_for_user(user)
     return AssignedPermission.objects.filter(q).exists()