def acl(request, tenant_id, container_name): form, handled = ContainerAcl.maybe_handle(request) if handled: return handled remove_form, handled = ContainerAclRemove.maybe_handle(request) if handled: return handled container = api.swift_get_container(request, container_name) read_ref, read_groups, write_ref, write_groups = [],[],[],[] read_acl, write_acl = '', '' for h,v in container.headers: if 'x-container-read' == h.lower(): v = clean_acl('X-Container-Read', v) read_ref, read_groups = parse_acl(v) read_acl = v if 'x-container-write' == h.lower(): v = clean_acl('X-Container-Write', v) write_ref, write_groups = parse_acl(v) write_acl = v #if container.headers.get('x-container-read'): # ref, groups = utils.parse_acl(container.headers.get('x-container-read')) #if container.headers.get('x-container-write'): # ref, groups = utils.parse_acl(container.headers.get('x-container-write')) """ ref, groups = parse_acl('test:test,hoge,.r:*') read_ref, read_groups = ref, groups write_ref, write_groups = ref, groups """ return shortcuts.render_to_response( 'django_openstack/dash/containers/acl.html', { 'container_name' : container_name, 'container' : container, 'acl_form' : form, 'remove_form' : remove_form, 'read_acl_ref' : read_ref, 'read_acl_groups' : read_groups, 'write_acl_ref' : write_ref, 'write_acl_groups' : write_groups, 'write_acl' : write_acl, 'read_acl' : read_acl }, context_instance=template.RequestContext(request))
def handle(self, request, data): container_name = data['container_name'] acl_type = data['acl_type'] if acl_type == "1": type = 'X-Container-Read' acl_value = data.get('read_acl', '') elif acl_type == "0": type = 'X-Container-Write' acl_value = data.get('write_acl', '') # clean and parse acl try: acl = clean_acl(type, data['acl_add']) acl_orig = clean_acl(type, acl_value) ref_add, group_add = parse_acl(acl) ref_orig, group_orig = parse_acl(acl_orig) except ValueError, e: messages.error(request, 'ACL value is invalid %s' % str(e)) print str(e) return
def handle(self, request, data): header = data['header_name'] container_name = data['container_name'] acl_type = data['acl_type'] acl_value = data['acl_value'] if acl_type == "read": type = 'X-Container-Read' elif acl_type == "write": type = 'X-Container-Write' else: pass # clean and parse acl try: acl = clean_acl(type, acl_value) refs, groups = parse_acl(acl) except ValueError, e: messages.error(request, 'ACL value is invalid %s' % str(e)) return None
remove_form, handled = ContainerAclRemove.maybe_handle(request) if handled: return handled try: container = api.swift_get_container(request, container_name) except ResponseError, e: messages.error(request, 'Unable to retrive ACL data. \ Perhaps you do not have right permission : %s' % str(e)) return shortcuts.redirect('dash_containers', tenant_id) read_ref, read_groups, write_ref, write_groups = [],[],[],[] read_acl, write_acl = '', '' for h,v in container.headers: if 'x-container-read' == h.lower(): v = clean_acl('X-Container-Read', v) read_ref, read_groups = parse_acl(v) read_acl = v if 'x-container-write' == h.lower(): v = clean_acl('X-Container-Write', v) write_ref, write_groups = parse_acl(v) write_acl = v #if container.headers.get('x-container-read'): # ref, groups = utils.parse_acl(container.headers.get('x-container-read')) #if container.headers.get('x-container-write'): # ref, groups = utils.parse_acl(container.headers.get('x-container-write')) #ref, groups = parse_acl('test:test,hoge,.r:*') #read_ref, read_groups = ref, groups #write_ref, write_groups = ref, groups
def test_clean_acl(self): acl = 'item, item' clean_1 = clean_acl('x-container-read', acl) self.assertEqual(clean_1, 'item,item') clean_2 = clean_acl('X-Container-Write', acl) self.assertEqual(clean_2, 'item,item')
def test_clean_acl_ref_2(self): acl = ' .r:*, bob ' clean_1 = clean_acl('x-container-read', acl) self.assertEqual(clean_1, '.r:*,bob') self.assertRaises(ValueError, clean_acl, 'X-Container-Write', acl)
def test_clean_acl_ref_5(self): acl = '.r:*domain.com' clean_1 = clean_acl('x-container-read', acl) self.assertEqual(clean_1, '.r:domain.com')