X-Account-Container-Count The total number of containers
X-Account-Object-Count The total number of objects (**TBD**)
X-Account-Bytes-Used The total number of bytes stored
-X-Account-Bytes-Remaining The total number of bytes remaining (**TBD**)
+X-Account-Bytes-Remaining The total number of bytes remaining
X-Account-Last-Login The last login (**TBD**)
X-Account-Until-Timestamp The last account modification date until the timestamp provided
X-Account-Group-* Optional user defined groups
validate_modification_preconditions(request, meta)
response = HttpResponse(status=204)
- put_account_headers(response, meta, groups)
+ put_account_headers(response, request.quota, meta, groups)
return response
@api_method('POST')
validate_modification_preconditions(request, meta)
response = HttpResponse()
- put_account_headers(response, meta, groups)
+ put_account_headers(response, request.quota, meta, groups)
marker = request.GET.get('marker')
limit = get_int_parameter(request.GET.get('limit'))
# badRequest (400)
meta, policy = get_container_headers(request)
+ try:
+ if policy and int(policy.get('quota', 0)) > request.quota:
+ policy['quota'] = request.quota
+ except:
+ raise BadRequest('Invalid quota header')
try:
- request.backend.put_container(request.user, v_account, v_container,
- policy)
+ request.backend.put_container(request.user, v_account, v_container, policy)
ret = 201
except NotAllowedError:
raise Unauthorized('Access denied')
replace = False
if policy:
try:
+ if int(policy.get('quota', 0)) > request.quota:
+ policy['quota'] = request.quota
+ except:
+ raise BadRequest('Invalid quota header')
+ try:
request.backend.update_container_policy(request.user, v_account,
v_container, policy, replace)
except NotAllowedError:
groups[n].remove('')
return meta, groups
-def put_account_headers(response, meta, groups):
+def put_account_headers(response, quota, meta, groups):
if 'count' in meta:
response['X-Account-Container-Count'] = meta['count']
if 'bytes' in meta:
response['X-Account-Bytes-Used'] = meta['bytes']
+ if quota:
+ response['X-Account-Bytes-Remaining'] = quota - meta['bytes']
response['Last-Modified'] = http_date(int(meta['modified']))
for k in [x for x in meta.keys() if x.startswith('X-Account-Meta-')]:
response[smart_str(k, strings_only=True)] = smart_str(meta[k], strings_only=True)
"""Copy or move an object."""
meta, permissions, public = get_object_headers(request)
- print '---', meta, permissions, public
src_version = request.META.get('HTTP_X_SOURCE_VERSION')
try:
if move: