Nuxeo mailing list archives
[CPS-devel] possible improvement for CPSDocument.createFile
Jose Jiménez López
jose.jimenez at iavante.es
Thu Mar 15 13:08:05 CET 2007
Hello everybody,
recently i needed to create a new portal type that uploads a zip file,
and recreates the same file and directories structure.
In order to do this, i have patched the module CPSDocument.createFile
I think that it can interest to somebody.
Here is the code that i have modified:
# browsing the ZIP file
for info in infolist:
path = info.filename
list = path.split('/')
if list[len(list) - 1] == '':
list = list[0:len(list)-1]
path_filename = list[len(list)-1]
#if is a directory
if path[-1] == '/':
ptype = 'Workspace'
field_name = 'file'
isFolder = True
else:
mimetype =
registry.lookupExtension(path_filename.lower()).normalized()
isFolder = False
if not isFolder:
if mimetype.startswith('image/'):
ptype = 'Image'
field_name = 'preview'
else:
ptype = 'File'
field_name = 'file'
if check_allowed_content_types and ptype not in
allowed_content_types:
continue
try:
container = context
if len(list) > 1:
for folder in list[0:len(list) - 1]:
container = container[folder]
file_id = context.portal_workflow.invokeFactoryFor(
container, ptype, path_filename)
except BadRequest:
logger.info('File %s already exists', path_filename)
return 0
file_proxy = getattr(container, file_id)
file_doc = file_proxy.getEditableContent()
if not isFolder:
# create file to attach to document
data = zipfile.read(path)
file_to_attach = File(path_filename, path_filename, data)
if mimetype and file_to_attach.content_type != mimetype:
logger.debug('Fixing mimetype from %s to %s',
file_to_attach.content_type, mimetype)
file_to_attach.manage_changeProperties(content_type=mimetype)
doc_def = {
'Title': path_filename,
'Description': 'Imported File (original archive: %s)' %
filename,
field_name: file_to_attach,
}
else:
doc_def = {
'Title': path_filename,
'Description': 'Imported File (original archive: %s)' %
filename,
}
file_doc.edit(doc_def, proxy=file_proxy)
return 1
Jose Jiménez López
Becario de Sistemas
FUNDACIÓN IAVANTE
jose.jimenez at iavantefundacion.com
Tel. 958 00 22 63
Este correo electrónico y, en su caso, cualquier fichero anexo, contiene
información confidencial exclusivamente dirigida a su(s)
destinatario(s). Toda copia o divulgación deberá ser autorizada por
IAVANTE.
This e-mail and any attachments are confidential and exclusively
directed to its adressee(s). Any copy or distribution will have to be
authorized by IAVANTE.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.nuxeo.com/pipermail/cps-devel/attachments/20070315/04fd239a/attachment.htm
This list archive provided by Nuxeo, the
leaders of open source ECM.
Check out the Nuxeo 5 open source,
standards-based ECM project.