def set_default_temp_time(request): """For the given account, set the default-temp-time. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') tempurl_form = TimeForm(request.POST) if tempurl_form.is_valid(): days_to_expiry = float(tempurl_form.cleaned_data['days']) hours_to_expiry = float(tempurl_form.cleaned_data['hours']) seconds_to_expiry = int( days_to_expiry * 24 * 3600 + hours_to_expiry * 60 * 60) try: client.post_account( storage_url, auth_token, {"x-account-meta-default-temp-time": seconds_to_expiry}) messages.add_message( request, messages.INFO, _("Default Temp Url Time updated!")) except Exception, e: messages.error(request, "Error updating default temp url time")
def set_object_expiry_time(request, container, objectname): """For the given object, set the x-delete-at. """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') form = TimeForm(request.POST) if form.is_valid(): days_to_expiry = float(form.cleaned_data['days']) hours_to_expiry = float(form.cleaned_data['hours']) # When these values are zero, remove expiration if (days_to_expiry + hours_to_expiry == 0.0): try: client.post_object( storage_url, auth_token, container, objectname, {}) messages.add_message( request, messages.INFO, _("Object expiry time removed!")) except Exception: messages.error(request, "Error updating object expiry time.") else: seconds_to_expiry = int(time.time()) + int( days_to_expiry * 24 * 3600 + hours_to_expiry * 60 * 60) try: client.post_object( storage_url, auth_token, container, objectname, {"x-delete-at": seconds_to_expiry}) messages.add_message( request, messages.INFO, _("Object expiry time updated!")) except Exception: messages.error(request, "Error updating object expiry time.") prefix = '/'.join(objectname.split('/')[:-1]) if prefix: prefix += '/' else: messages.error(request, "Invalid form.") return redirect(swiftbrowser.views.objectview, container, prefix)
def tempurl(request, container, objectname): """ Displays a temporary URL for a given object. Provide a form to request a custom temporary URL. """ # Check if tenant has a default temp time. storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') default_temp_time = get_default_temp_time(storage_url, auth_token) if default_temp_time: days_to_expiry = int(default_temp_time) / (24 * 3600) hours_to_expiry = (int(default_temp_time) % (24 * 3600)) / 3600 else: # The time of the expiration of the tempurl can be defined through # the tenant's headers or a post. # The default is 7 days and 0 hours. days_to_expiry = 7 hours_to_expiry = 0 # If the request is a formpost, use the data from the formpost. if (request.POST): tempurl_form = TimeForm(request.POST) if tempurl_form.is_valid(): days_to_expiry = float(tempurl_form.cleaned_data['days']) hours_to_expiry = float(tempurl_form.cleaned_data['hours']) # Tempurl uses expiration time in seconds to create the url seconds_to_expiry = int( days_to_expiry * 24 * 3600 + hours_to_expiry * 60 * 60) time_of_expiry = time.strftime( '%A, %B %-d, %Y at %-I:%M%p', time.localtime(int(time.time()) + seconds_to_expiry) ) # Expiration message for the front end. expires_in_message = '{0} days {1} hour(s) until {2}'.format( days_to_expiry, hours_to_expiry, time_of_expiry) container = unicode(container).encode('utf-8') objectname = unicode(objectname).encode('utf-8') key = unicode(request.session.get('key', '')).encode('utf-8') url = get_temp_url(storage_url, auth_token, container, objectname, key, seconds_to_expiry) 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) tempurl_form = TimeForm() return render_to_response('tempurl.html', {'url': url, 'account': storage_url.split('/')[-1], 'container': container, 'prefix': prefix, 'prefixes': prefixes, 'objectname': objectname, 'session': request.session, 'tempurl_form': tempurl_form, 'expires_in_message': expires_in_message, }, context_instance=RequestContext(request))
def tempurl(request, container, objectname): """ Displays a temporary URL for a given container object. Provide a form to request a custom temporary URL. """ # Check if tenant has a default temp time. storage_url = request.session.get("storage_url", "") auth_token = request.session.get("auth_token", "") default_temp_time = get_default_temp_time(storage_url, auth_token) if default_temp_time: days_to_expiry = int(default_temp_time) / (24 * 3600) hours_to_expiry = (int(default_temp_time) % (24 * 3600)) / 3600 else: # The time of the expiration of the tempurl can be defined through # the tenant's headers or a post. # The default is 7 days and 0 hours. days_to_expiry = 7 hours_to_expiry = 0 # If the request is a formpost, use the data from the formpost. if request.POST: tempurl_form = TimeForm(request.POST) if tempurl_form.is_valid(): days_to_expiry = float(tempurl_form.cleaned_data["days"]) hours_to_expiry = float(tempurl_form.cleaned_data["hours"]) # Tempurl uses expiration time in seconds to create the url seconds_to_expiry = int(days_to_expiry * 24 * 3600 + hours_to_expiry * 60 * 60) time_of_expiry = time.strftime("%A, %B %-d, %Y at %-I:%M%p", time.localtime(int(time.time()) + seconds_to_expiry)) # Expiration message for the front end. expires_in_message = "{0} days {1} hour(s) until {2}".format(days_to_expiry, hours_to_expiry, time_of_expiry) container = unicode(container).encode("utf-8") objectname = unicode(objectname).encode("utf-8") key = unicode(request.session.get("key", "")).encode("utf-8") url = get_temp_url(storage_url, auth_token, container, objectname, key, seconds_to_expiry) 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) tempurl_form = TimeForm() return render_to_response( "tempurl.html", { "url": url, "account": storage_url.split("/")[-1], "container": container, "prefix": prefix, "prefixes": prefixes, "objectname": objectname, "session": request.session, "tempurl_form": tempurl_form, "expires_in_message": expires_in_message, }, context_instance=RequestContext(request), )