12345678910111213141516171819202122232425262728293031323334353637 |
- def sum_acls(defaults, *acls, **permissions):
- result_acl = {}
- for permission, compare in permissions.items():
- try:
- permission_value = defaults[permission]
- except KeyError:
- message = 'Default value for permission "%s" is not provided.'
- raise ValueError(message % permission)
- for acl in acls:
- try:
- permission_value = compare(permission_value, acl[permission])
- except KeyError:
- pass
- result_acl[permission] = permission_value
- return result_acl
- # Common comparisions
- def greater(a, b):
- return a if a > b else b
- def greater_or_zero(a, b):
- if a == 0:
- return a
- elif b == 0:
- return b
- else:
- return greater(a, b)
- def lower(a, b):
- return a if a < b else b
|