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 tempurl(request, container, objectname): """ Displays a temporary URL for a given container object """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') url = get_temp_url(storage_url, auth_token, container, objectname, 7 * 24 * 3600) if not url: messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(objectview, container=container) prefix = '/'.join(objectname.split('/')[:-1]) if prefix: prefix += '/' prefixes = prefix_list(prefix) return render_to_response('tempurl.html', {'url': url, 'account': storage_url.split('/')[-1], 'container': container, 'prefix': prefix, 'prefixes': prefixes, 'objectname': objectname, 'session': request.session, }, context_instance=RequestContext(request))
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 tempurl(request, container, objectname): """ Displays a temporary URL for a given container object """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') url = get_temp_url(storage_url, auth_token, container, objectname, 7 * 24 * 3600) if not url: messages.add_message(request, messages.ERROR, _("Access denied.")) return redirect(objectview, container=container) prefix = '/'.join(objectname.split('/')[:-1]) if prefix: prefix += '/' prefixes = prefix_list(prefix) return render_to_response('tempurl.html', { 'url': url, 'account': storage_url.split('/')[-1], 'container': container, 'prefix': prefix, 'prefixes': prefixes, 'objectname': objectname, 'session': request.session, }, 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 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))
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) if request.method == 'POST': post_file = request.FILES.values().pop() if prefix: post_file_name = prefix + post_file.name else: post_file_name = post_file.name try: client.put_object(storage_url, auth_token, container, post_file_name, post_file) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) except client.ClientException: traceback.print_exc() messages.add_message(request, messages.ERROR, _("Access denied.")) 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))