00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 import os
00030 import base64
00031 from Koo import Rpc
00032 from PyQt4.QtGui import *
00033 from PyQt4.QtCore import *
00034 from PyQt4.uic import *
00035 from Koo.Plugins import Plugins
00036 from Koo.Common import Calendar
00037 
00038 def scan(model, id, ids, context):
00039         Directories = 1
00040         Files = 0
00041         Cancel = 2
00042         dialog = QMessageBox()
00043         dialog.setWindowTitle( _('Import Documents') )
00044         dialog.setText( _('How do you want to import documents?') )
00045         dialog.addButton( _('Select Files'), 3 )
00046         dialog.addButton( _('Selected Directory'), 2 )
00047         dialog.addButton( _('Cancel Import'), 1 )
00048         result = dialog.exec_()
00049         if result == Cancel:
00050                 return
00051 
00052         if result == Directories:
00053                 directory = unicode( QFileDialog.getExistingDirectory() )
00054                 if not directory:
00055                         return
00056                 fileNames = QDir( directory ).entryList()
00057                 fileNames = [os.path.join( directory, unicode(x) ) for x in fileNames]
00058         else:
00059                 fileNames = QFileDialog.getOpenFileNames()
00060                 fileNames = [unicode(x) for x in fileNames]
00061                         
00062                         
00063         for fileName in fileNames:
00064                 try:
00065                         
00066                         f = open(fileName, 'rb')
00067                 except:
00068                         continue
00069                 try:
00070                         data = base64.encodestring( f.read() )
00071                 except:
00072                         continue
00073                 finally:
00074                         f.close()
00075                 id = Rpc.session.execute('/object', 'execute', 'nan.document', 'create', {
00076                         'name': Calendar.dateTimeToText( QDateTime.currentDateTime() ),
00077                         'datas': data,
00078                         'filename': os.path.basename(fileName),
00079                 }, context )
00080 
00081 Plugins.register( 'document-importer', 'nan.document', _('Import Documents'), scan )