def add_documents(request, category_id): if request.is_ajax(): files = request.GET.getlist('files', False) cat = Category.objects.get(id=category_id) l_doc = [] l_pdf = [] cmds = [] paths = [] for f in list(files): mime = MimeTypes() path = os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR, f) m = mime.guess_type(path)[0] d = Document(name=f.encode('ascii', 'ignore'), owner=request.user, refer_category=cat) d.save() cat.add_doc(d) if m == 'application/pdf': l_pdf.append(([cat], path, f, [d])) elif m in ['image/png', 'image/jpeg', 'image/bmp']: im = Image.open(path) w, h = im.size new_filename = str(d.id) + '_' + f new_path = os.path.join(cat.get_absolute_path(), new_filename) shutil.copy2(path, new_path) d.add_page(d.get_npages() + 1, new_filename, w, h) for fu in FileUpload.objects.all(): if fu.file.path == path: fu.delete() d.complete = True d.save() remove_fileupload([path]) elif m in ['application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']: p = re.compile(r'.[Dd][Oo][Cc][xX]?$') new_f = p.sub('.pdf', f) new_path = path.replace(f, new_f) cmd = 'soffice --headless --convert-to pdf %s --outdir %s/upload' % (path, settings.MEDIA_ROOT) cmds.append(cmd) paths.append(path) l_doc.append(([cat], new_path, new_f, [d])) elif m in ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']: p = re.compile(r'.[Xx][Ll][Ss][xX]?$') new_f = p.sub('.pdf', f) new_path = path.replace(f, new_f) cmd = 'soffice --headless --convert-to pdf %s --outdir %s/upload' % (path, settings.MEDIA_ROOT) cmds.append(cmd) paths.append(path) l_doc.append(([cat], new_path, new_f, [d])) else: print 'ERREUR FORMAT FICHIER' if len(l_doc): thread1 = Timer(0, manage_convert_doc_to_pdf, (cmds, paths, l_doc,)) thread1.start() if len(l_pdf): thread = Timer(0, manage_convert_pdf_to_jpg, (l_pdf,)) thread.start() results = {'doc_list': [d.as_json() for d in cat.get_docs()], 'n': cat.count_docs()} return HttpResponse(json.dumps(results))