summaryrefslogtreecommitdiffstats
path: root/askbot/utils/file_utils.py
blob: 3793b5ce7201eb35be99f77335be09ed67bf72bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""file utilities for askbot"""
import os
import random
import time
import urlparse
from django.core.files.storage import get_storage_class

def store_file(file_object, file_name_prefix = ''):
    """Creates an instance of django's file storage
    object based on the file-like object,
    returns the storage object, file name, file url
    """
    file_name = str(
                    time.time()
                ).replace(
                    '.', 
                    str(random.randint(0,100000))
                ) + os.path.splitext(file_object.name)[1].lower()
    file_name = file_name_prefix + file_name

    file_storage = get_storage_class()()
    # use default storage to store file
    file_storage.save(file_name, file_object)

    file_url = file_storage.url(file_name)
    parsed_url = urlparse.urlparse(file_url)
    file_url = urlparse.urlunparse(
        urlparse.ParseResult(
            parsed_url.scheme, 
            parsed_url.netloc,
            parsed_url.path,
            '', '', ''
        )
    )

    return file_storage, file_name, file_url