I'd like to propose a (very) little feature request:
method store under class Field in dal.py can be modified as follows
where line 3 and 4 are new in order to define the upload folder even in
case you define a custom_store through the "uploadfolder" property of
the Field... do you agree it could be usefull?
def store(self, file, filename=None, path=None):
if self.custom_store:
if self.uploadfolder:
# line 3
path = self.uploadfolder
# line 4
return self.custom_store(file,filename,path)
if not filename:
filename = file.name
filename = os.path.basename(filename.replace('/', os.sep)\
.replace('\\', os.sep))
m = re.compile('\.(?P<e>\w{1,5})$').search(filename)
extension = m and m.group('e') or 'txt'
uuid_key = web2py_uuid().replace('-', '')[-16:]
encoded_filename = base64.b16encode(filename).lower()
newfilename = '%s.%s.%s.%s' % \
(self._tablename, self.name, uuid_key, encoded_filename)
newfilename = newfilename[:200] + '.' + extension
if isinstance(self.uploadfield,Field):
blob_uploadfield_name = self.uploadfield.uploadfield
keys={self.uploadfield.name: newfilename,
blob_uploadfield_name: file.read()}
self.uploadfield.table.insert(**keys)
elif self.uploadfield == True:
if path:
pass
elif self.uploadfolder:
path = self.uploadfolder
elif self.db._adapter.folder:
path = os.path.join(self.db._adapter.folder, '..',
'uploads')
else:
raise RuntimeError, "you must specify a
Field(...,uploadfolder=...)"
if self.uploadseparate:
path = os.path.join(path,"%s.%s" % (self._tablename,
self.name),uuid_key[:2])
if not os.path.exists(path):
os.makedirs(path)
pathfilename = os.path.join(path, newfilename)
dest_file = open(pathfilename, 'wb')
shutil.copyfileobj(file, dest_file)
dest_file.close()
return newfilename
cheers
Manuele