Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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),
    )