def public_objectview(request, account, container, prefix=None): """ Returns list of all objects in current container. """ storage_url = settings.STORAGE_URL + account auth_token = ' ' try: _meta, objects = client.get_container( storage_url, auth_token, container, delimiter='/', prefix=prefix) except client.ClientException: traceback.print_exc() messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(containerview) prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) base_url = get_base_url(request) account = storage_url.split('/')[-1] return render_to_response("publicview.html", { 'container': container, 'objects': objs, 'folders': pseudofolders, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'storage_url': storage_url, 'account': account}, context_instance=RequestContext(request))
def containerview(request): """ Returns a list of all containers in current account. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') if not storage_url or not auth_token: return redirect(login) try: account_stat, containers = client.get_account(storage_url, auth_token) except client.ClientException as exc: traceback.print_exc() if exc.http_status == 403: account_stat = {} containers = [] base_url = get_base_url(request) msg = 'Container listing failed. You can manually choose a known ' msg += 'container by appending the name to the URL, for example: ' msg += '<a href="%s/objects/containername">' % base_url msg += '%s/objects/containername</a>' % base_url messages.add_message(request, messages.ERROR, msg) else: return redirect(login) account_stat = replace_hyphens(account_stat) return render_to_response('containerview.html', { 'account_stat': account_stat, 'containers': containers, 'session': request.session, }, context_instance=RequestContext(request))
def containerview(request): """ Returns a list of all containers in current account. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') try: account_stat, containers = client.get_account(storage_url, auth_token) except client.ClientException as exc: if exc.http_status == 403: account_stat = {} containers = [] base_url = get_base_url(request) msg = 'Container listing failed. You can manually choose a known ' msg += 'container by appending the name to the URL, for example: ' msg += '<a href="%s/objects/containername">' % base_url msg += '%s/objects/containername</a>' % base_url messages.add_message(request, messages.ERROR, msg) else: return redirect(login) account_stat = replace_hyphens(account_stat) return render( request, 'containerview.html', { 'account_stat': account_stat, 'containers': containers, 'session': request.session })
def public_objectview(request, account, container, prefix=None): """ Returns list of all objects in current container. """ storage_url = settings.STORAGE_URL + account auth_token = ' ' try: _meta, objects = client.get_container(storage_url, auth_token, container, delimiter='/', prefix=prefix) except client.ClientException: messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(containerview) prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) base_url = get_base_url(request) account = storage_url.split('/')[-1] return render_to_response("publicview.html", { 'container': container, 'objects': objs, 'folders': pseudofolders, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'storage_url': storage_url, 'account': account }, context_instance=RequestContext(request))
def cloudview(request, cloud, prefix=None): """ Returns list of all objects in a cloud. """ storage_url = request.session.get('storage_url', settings.STORAGE_URL) auth_token = request.session.get('auth_token', 'demo') request.session['cloud'] = getcloud(request) objects = [] read_acl = [] buckets = cloud_to_bucket(cloud) arrayOfBuckets = buckets.split(",") newkey = u"{key}".format(key='bucket') for bucket in arrayOfBuckets: try: meta, objects1 = client.get_container(storage_url, auth_token, bucket, delimiter='/', prefix=prefix) for entry in objects1: value = u"{value}".format( value=bucket) entry.update({newkey:value}) objects += objects1 read_acl += meta.get('x-container-read', '').split(',') except client.ClientException: messages.add_message(request, messages.ERROR, _("No Access to Bucket %s." % bucket)) #merge all buckets prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) objs.sort(key=lambda x:x['last_modified'], reverse=True) del objs[100:] base_url = get_base_url(request) account = storage_url.split('/')[-1] public = False required_acl = ['.r:*', '.rlistings'] if [x for x in read_acl if x in required_acl]: public = True return render_to_response("cloudview.html", { 'container': buckets, 'cloud': cloud, 'objects': objs, 'folders': pseudofolders, 'session': request.session, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'account': account, 'public': public}, context_instance=RequestContext(request))
def upload(request, container, prefix=None): """ Display upload form using swift formpost """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') redirect_url = get_base_url(request) redirect_url += reverse('objectview', kwargs={ 'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse(swift_url) path = url_parts.path max_file_size = 5 * 1024 * 1024 * 1024 max_file_count = 1 expires = int(time.time() + 15 * 60) key = get_temp_key(storage_url, auth_token) if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(bytes(key, "utf-8"), bytes(hmac_body, "utf-8"), sha1).hexdigest() prefixes = prefix_list(prefix) return render( request, 'upload_form.html', { 'swift_url': swift_url, 'redirect_url': redirect_url, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, 'signature': signature, 'container': container, 'prefix': prefix, 'prefixes': prefixes })
def upload(request, container, prefix=None): """ Display upload form using swift formpost """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') redirect_url = get_base_url(request) redirect_url += reverse('objectview', kwargs={'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse.urlparse(swift_url) path = url_parts.path max_file_size = 5 * 1024 * 1024 * 1024 max_file_count = 1 expires = int(time.time() + 15 * 60) key = get_temp_key(storage_url, auth_token) if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) hmac_body = '%s\n%s\n%s\n%s\n%s' % ( path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(str(key), str(hmac_body), sha1).hexdigest() prefixes = prefix_list(prefix) return render_to_response('upload_form.html', { 'swift_url': swift_url, 'redirect_url': redirect_url, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, 'signature': signature, 'container': container, 'prefix': prefix, 'prefixes': prefixes, }, context_instance=RequestContext(request))
def objectview(request, container, prefix=None): """ Returns list of all objects in current container. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') request.session['container'] = container request.session['prefix'] = prefix try: meta, objects = client.get_container(storage_url, auth_token, container, delimiter='/', prefix=prefix) except client.ClientException: messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(containerview) prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) base_url = get_base_url(request) account = storage_url.split('/')[-1] read_acl = meta.get('x-container-read', '').split(',') public = False required_acl = ['.r:*', '.rlistings'] if [x for x in read_acl if x in required_acl]: public = True return render_to_response("objectview.html", { 'container': container, 'objects': objs, 'folders': pseudofolders, 'session': request.session, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'account': account, 'public': public, }, context_instance=RequestContext(request))
def objectview(request, container, prefix=None): """ Returns list of all objects in current container. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') try: meta, objects = client.get_container(storage_url, auth_token, container, delimiter='/', prefix=prefix) except client.ClientException: traceback.print_exc() messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(containerview) prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) base_url = get_base_url(request) account = storage_url.split('/')[-1] read_acl = meta.get('x-container-read', '').split(',') public = False required_acl = ['.r:*', '.rlistings'] if [x for x in read_acl if x in required_acl]: public = True return render_to_response("objectview.html", { 'container': container, 'objects': objs, 'folders': pseudofolders, 'session': request.session, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'account': account, 'public': public }, context_instance=RequestContext(request))
def containerview(request): """ Returns a list of all containers in current account. """ storage_url = request.session.get('storage_url', settings.STORAGE_URL) auth_token = request.session.get('auth_token', 'demo') request.session['cloud'] = getcloud(request) request.session['showimagemap'] = settings.SHOW_IMAGEMAP try: account_stat, containers = client.get_account(storage_url, auth_token) except client.ClientException as exc: account_stat = {} containers = [] if exc.http_status == 403: base_url = get_base_url(request) msg = 'Container listing failed. You can manually choose a known ' msg += 'container by appending the name to the URL, for example: ' msg += '<a href="%s/objects/containername">' % base_url msg += '%s/objects/containername</a>' % base_url messages.add_message(request, messages.ERROR, msg) elif exc.http_status == 302: msg = 'Bucket listing failed with 302. \n ' msg += exc.msg messages.add_message(request, messages.ERROR, msg) else: msg = 'Bucket listing failed with %s. ' % exc.http_status msg += 'A 503 error could mean volume is not set.\n ' msg += exc.msg messages.add_message(request, messages.ERROR, msg) return redirect(login) account_stat = replace_hyphens(account_stat) return render_to_response('containerview.html', { 'account_stat': account_stat, 'containers': containers, 'session': request.session, }, context_instance=RequestContext(request))
def objectview(request, container, prefix=None): """ Returns list of all objects in current container. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') key = 'MYKEY' request.session['container'] = container request.session['prefix'] = prefix redirect_url = get_base_url(request) redirect_url += reverse('objectview', kwargs={'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse.urlparse(swift_url) path = url_parts.path try: meta, objects = client.get_container(storage_url, auth_token, container, delimiter='/', prefix=prefix) except client.ClientException: messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(containerview) prefixes = prefix_list(prefix) pseudofolders, objs = pseudofolder_object_list(objects, prefix) base_url = get_base_url(request) account = storage_url.split('/')[-1] read_acl = meta.get('x-container-read', '').split(',') public = False required_acl = ['.r:*', '.rlistings'] max_file_size = 5368709122 max_file_count = 1 expires = int(time.time() + 15 * 60) hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(key, hmac_body, sha1).hexdigest() if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) if [x for x in read_acl if x in required_acl]: public = True return render_to_response("objectview.html", { 'swift_url': swift_url, 'signature': signature, 'redirect_url': redirect_url, 'container': container, 'objects': objs, 'folders': pseudofolders, 'session': request.session, 'prefix': prefix, 'prefixes': prefixes, 'base_url': base_url, 'account': account, 'public': public, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, }, context_instance=RequestContext(request))