X-Git-Url: http://git.veekun.com/zzz-floof.git/blobdiff_plain/5837da26db915faca89925c39fa83202bfb84e32..cb1976ef371904b45d7961212cd87595a9486284:/floof/lib/file_storage.py?ds=inline diff --git a/floof/lib/file_storage.py b/floof/lib/file_storage.py index 5595e88..90561d0 100644 --- a/floof/lib/file_storage.py +++ b/floof/lib/file_storage.py @@ -3,6 +3,8 @@ import os, shutil, tempfile, hashlib chunk_size = 1024*1024 # TODO: is this a good chunk size? +from pylons import config + """ Notes: # Here's one way to move stuff... @@ -16,17 +18,23 @@ from mimetypes import guess_type guess_type(temp.filename)[0] """ +def get_path(space, hash): + return "/" + os.path.join( space, hash[:2], hash[2:] ) + + +def save_file(space, temp): + + dest_root = os.path.join( config['app_conf']['static_root'], space ) -def save_file(dest_root, temp): # we don't know where we're going to save this stuff yet, # so I guess we'll write it to another tempfile. One we know the path of. - # I'm assuming the tempfile we get from pylons is set to delete itself + # I'm assuming the tempfile we get from pylons is set to delete itself # when it closes, and has no visible path. Maybe I'm wrong? intermediate_file_descriptor, intermediate_path = tempfile.mkstemp() - + # that function gives me an integer file descriptor for some reason. intermediate_file = os.fdopen(intermediate_file_descriptor, "wb") - + sha1 = hashlib.sha1() while 1: data = temp.file.read(chunk_size) @@ -44,7 +52,7 @@ def save_file(dest_root, temp): dest_path = os.path.join( dest_dir, hash[2:] ) makedirs(dest_dir) - os.rename(intermediate_path, dest_path) + shutil.move(intermediate_path, dest_path) return hash @@ -55,4 +63,4 @@ def makedirs(dir): os.makedirs(dir) except OSError: pass - \ No newline at end of file +