Exemple #1
0
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')
Exemple #2
0
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},
    }