Skip to content

Commit 76baa89

Browse files
committed
Fix sae.ext.django.storage.backend
1 parent fc41586 commit 76baa89

3 files changed

Lines changed: 27 additions & 15 deletions

File tree

File renamed without changes.

dev_server/sae/ext/django/storages/backends/storage.py renamed to dev_server/sae/ext/django/storage/backend.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import sys
2+
from StringIO import StringIO
23

34
from django.conf import settings
45
from django.core.files.base import File
@@ -15,30 +16,34 @@
1516
STORAGE_SECRETKEY = getattr(settings, 'STORAGE_SECRETKEY', SECRET_KEY)
1617
STORAGE_GZIP = getattr(settings, 'STORAGE_GZIP', False)
1718

18-
class SaeStorage(Storage):
19+
class Storage(Storage):
1920
def __init__(self, bucket_name=STORAGE_BUCKET_NAME,
2021
accesskey=STORAGE_ACCESSKEY, secretkey=STORAGE_SECRETKEY,
2122
account=STORAGE_ACCOUNT):
2223
conn = Connection(accesskey, secretkey, account)
2324
self.bucket = conn.get_bucket(bucket_name)
2425

2526
def _open(self, name, mode='rb'):
26-
return SaeStorageFile(name, mode, self)
27+
name = self._normalize_name(name)
28+
return StorageFile(name, mode, self)
2729

2830
def _save(self, name, content):
31+
name = self._normalize_name(name)
2932
try:
3033
self.bucket.put_object(name, content)
3134
except Error, e:
3235
raise IOError('Storage Error: %s' % e.args)
3336
return name
3437

3538
def delete(self, name):
39+
name = self._normalize_name(name)
3640
try:
37-
self.delete_object(name)
41+
self.bucket.delete_object(name)
3842
except Error, e:
3943
raise IOError('Storage Error: %s' % e.args)
4044

4145
def exists(self, name):
46+
name = self._normalize_name(name)
4247
try:
4348
self.bucket.stat_object(name)
4449
except Error, e:
@@ -47,28 +52,32 @@ def exists(self, name):
4752
raise
4853
return True
4954

50-
def listdir(self, path):
51-
try:
52-
result = self.bucket.list(path=path)
53-
return [i.name for i in result]
54-
except Error, e:
55-
raise IOError('Storage Error: %s' % e.args)
55+
#def listdir(self, path):
56+
# path = self._normalize_name(path)
57+
# try:
58+
# result = self.bucket.list(path=path)
59+
# return [i.name for i in result]
60+
# except Error, e:
61+
# raise IOError('Storage Error: %s' % e.args)
5662

5763
def size(self, name):
64+
name = self._normalize_name(name)
5865
try:
5966
attrs = self.bucket.stat_object(name)
6067
return attrs.bytes
6168
except Error, e:
6269
raise IOError('Storage Error: %s' % e.args)
6370

6471
def url(self, name):
65-
self.bucket.generate_url(name)
72+
name = self._normalize_name(name)
73+
return self.bucket.generate_url(name)
6674

6775
def _open_read(self, name):
76+
name = self._normalize_name(name)
6877
class _:
6978
def __init__(self, chunks):
7079
self.buf = ''
71-
def read(num_bytes=None):
80+
def read(self, num_bytes=None):
7281
if num_bytes is None:
7382
num_bytes = sys.maxint
7483
try:
@@ -81,10 +90,13 @@ def read(num_bytes=None):
8190
retval = self.buf[:num_bytes]
8291
self.buf = self.buf[num_bytes:]
8392
return retval
84-
chunks = self.bucket.get_object_contents(self.name, chunk_size=8192)
93+
chunks = self.bucket.get_object_contents(name, chunk_size=8192)
8594
return _(chunks)
8695

87-
class SaeStorageFile(File):
96+
def _normalize_name(self, name):
97+
return name.lstrip('/')
98+
99+
class StorageFile(File):
88100
def __init__(self, name, mode, storage):
89101
self.name = name
90102
self.mode = mode
@@ -99,8 +111,8 @@ def size(self):
99111
return self._size
100112

101113
def read(self, num_bytes=None):
102-
if not hasattr(self, _obj):
103-
self._obj = self._storage._open_read(self, self.name)
114+
if not hasattr(self, '_obj'):
115+
self._obj = self._storage._open_read(self.name)
104116
return self._obj.read(num_bytes)
105117

106118
def write(self, content):

dev_server/sae/ext/django/storages/backends/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)