def get_user_default_permissions(request): """ Returns user default permissions {'default_mode': <mode>, 'default_group': <group>'} """ p = request.user.get_profile() perms = Permissions(p.dflt_mode) return HttpResponse(json.encode({ 'perms' : perms.toJSON(), 'default_group' : str(p.dflt_group), 'perms_octal' : perms.toOctal(), 'username' : request.user.username, }), mimetype = 'text/plain')
def get_entity_permissions(request, target, key): """ Returns permissions for a given entity. The return value is a JSON object like: {'user' : {'read': true, 'write': true}, 'group': {'read': true, 'write': false}, 'others': {'read': false, 'write': false}} Note that this is NOT a Django view. See get_permissions() instead. @param target Target entity to query @param key Used to identify an entity element """ ent = None if target == "tag": tag = Tag.objects.filter(name=key)[0] ent = tag elif target == "task": task = Processing_task.objects.filter(id=key)[0] ent = task elif target == "imgsel": # Image selections sel = ImageSelections.objects.filter(name=key)[0] ent = sel elif target == "config": config = ConfigFile.objects.filter(id=key)[0] ent = config elif target == "cartitem": carti = CartItem.objects.filter(id=key)[0] ent = carti elif target == "profile": prof = SiteProfile.objects.filter(user=request.user)[0] ent = prof elif target == "ingestion": ent = Ingestion.objects.filter(id=key)[0] else: raise PermissionsError, "Permissions for target %s not supported" % target isOwner = ent.user == request.user groups = [g.name for g in request.user.groups.all()] # Current user permissions if target == "profile": cuser_read = cuser_write = True ent.group = ent.dflt_group perms = Permissions(ent.dflt_mode) else: cuser_read = cuser_write = False perms = Permissions(ent.mode) if (isOwner and perms.user.read) or (ent.group.name in groups and perms.group.read) or perms.others.read: cuser_read = True if (isOwner and perms.user.write) or (ent.group.name in groups and perms.group.write) or perms.others.write: cuser_write = True return { "mode": str(perms), "perms": perms.toJSON(), "isOwner": isOwner, "username": ent.user.username, "groupname": ent.group.name, "groups": groups, "currentUser": {"read": cuser_read, "write": cuser_write}, }