From 87fe5ef53ff0fb050a3b609c2a38c51e62b7a2fe Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Thu, 22 Oct 2009 12:06:47 +0200 Subject: [FIX] python2.6 compatibility bzr revid: olt@tinyerp.com-20091022100647-1hqb0w9gm0awokh2 --- addons/document/ftpserver/ftpserver.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'addons/document') diff --git a/addons/document/ftpserver/ftpserver.py b/addons/document/ftpserver/ftpserver.py index ae0fc38e1e1..13c44287303 100644 --- a/addons/document/ftpserver/ftpserver.py +++ b/addons/document/ftpserver/ftpserver.py @@ -1412,7 +1412,10 @@ class FTPHandler(asynchat.async_chat): established connection. - (instance) server: the ftp server class instance. """ - asynchat.async_chat.__init__(self, conn=conn) + try: + asynchat.async_chat.__init__(self, conn=conn) # python2.5 + except TypeError, e: + asynchat.async_chat.__init__(self, sock=conn) # python2.6 self.server = server self.remote_ip, self.remote_port = self.socket.getpeername()[:2] self.in_buffer = [] -- cgit v1.2.3 From ba53d85a07a36040a4110a01db6c9c1d7ed6043e Mon Sep 17 00:00:00 2001 From: Albert Cervera i Areny <> Date: Mon, 26 Oct 2009 21:08:17 +0530 Subject: [FIX] Document : Attachment with document can now be deleted lp bug: https://launchpad.net/bugs/460701 fixed bzr revid: jvo@tinyerp.com-20091026153817-cn3mmj43ng90ymyp --- addons/document/document.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'addons/document') diff --git a/addons/document/document.py b/addons/document/document.py index 460c52a9698..338c6e69255 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -531,17 +531,21 @@ class document_file(osv.osv): result[id] = base64.encodestring(value) except: result[id]='' - - if context.get('bin_size', False): - result[id] = tools.human_size(len(result[id])) - +# if context.get('bin_size', False): +# result[id] = tools.human_size(result[id]) return result # # This code can be improved # - def _data_set(self, cr, obj, id, name, value, uid=None, context={}): + def _data_set(self, cr, uid, id, name, value, args=None, context={}): if not value: + filename = self.browse(cr, uid, id, context).store_fname + try: + os.unlink(os.path.join(self._get_filestore(cr), filename)) + except: + pass + cr.execute('update ir_attachment set store_fname=NULL WHERE id=%s', (id,) ) return True #if (not context) or context.get('store_method','fs')=='fs': try: -- cgit v1.2.3 From 58fe9c62e673a3695afb3c0a983f6ec53c2a8a88 Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Tue, 27 Oct 2009 09:32:21 +0100 Subject: [IMP] better python2.5/2.6 compatibility handling bzr revid: olt@tinyerp.com-20091027083221-37mv4k6lei43xfla --- addons/document/ftpserver/ftpserver.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'addons/document') diff --git a/addons/document/ftpserver/ftpserver.py b/addons/document/ftpserver/ftpserver.py index 13c44287303..94bc5b3d90c 100644 --- a/addons/document/ftpserver/ftpserver.py +++ b/addons/document/ftpserver/ftpserver.py @@ -1412,10 +1412,7 @@ class FTPHandler(asynchat.async_chat): established connection. - (instance) server: the ftp server class instance. """ - try: - asynchat.async_chat.__init__(self, conn=conn) # python2.5 - except TypeError, e: - asynchat.async_chat.__init__(self, sock=conn) # python2.6 + asynchat.async_chat.__init__(self, conn) self.server = server self.remote_ip, self.remote_port = self.socket.getpeername()[:2] self.in_buffer = [] -- cgit v1.2.3 From 49414e12ab439bec45c0381a7a674e94794342ec Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Mon, 16 Nov 2009 16:00:21 +0100 Subject: [FIX] document: ftp server address and port: better ip address detection for 64 bit kernels [FIX] document: ftp server address and port: new wizard: ftp server addr and port is saved in configuration file [FIX] document: ftp server address and port: ftp server now uses stored ip addr and port from configuration file bzr revid: olt@tinyerp.com-20091116150021-ogrccu73adorsecb --- addons/document/document.py | 105 ++++++++++++++++++++++----------- addons/document/document_view.xml | 108 ++++++++++++++++++++++++---------- addons/document/ftpserver/__init__.py | 42 ++----------- 3 files changed, 154 insertions(+), 101 deletions(-) (limited to 'addons/document') diff --git a/addons/document/document.py b/addons/document/document.py index 3ce6a9d700f..cd3d667f8bf 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -718,45 +718,29 @@ class document_configuration_wizard(osv.osv_memory): _rec_name = 'Auto Directory configuration' _columns = { 'host': fields.char('Server Address', size=64, help="Put here the server address or IP. " \ - "Keep localhost if you don't know what to write.", required=True) + "Keep localhost if you don't know what to write.", required=True), + 'suggested_host': fields.char('Suggested Server Address', size=64, readonly=True, help="This is the guessed server address"), + 'port': fields.char('Server Port', size=5, help="Put here the server port. " \ + "Keep 8021 if you don't know what to write.", required=True) } - def detect_ip_addr(self, cr, uid, context=None): - def _detect_ip_addr(self, cr, uid, context=None): - from array import array - import socket - from struct import pack, unpack + def get_ftp_server_address(self, cr, uid, context=None): + default_address = config.get('ftp_server_address', None) + if default_address is None: + default_address = tools.misc.detect_ip_addr() - try: - import fcntl - except ImportError: - fcntl = None - - if not fcntl: # not UNIX: - host = socket.gethostname() - ip_addr = socket.gethostbyname(host) - else: # UNIX: - # get all interfaces: - nbytes = 128 * 32 - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - names = array('B', '\0' * nbytes) - outbytes = unpack('iL', fcntl.ioctl( s.fileno(), 0x8912, pack('iL', nbytes, names.buffer_info()[0])))[0] - namestr = names.tostring() - ifaces = [namestr[i:i+32].split('\0', 1)[0] for i in range(0, outbytes, 32)] - - for ifname in [iface for iface in ifaces if iface != 'lo']: - ip_addr = socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, pack('256s', ifname[:15]))[20:24]) - break - return ip_addr + return default_address - try: - ip_addr = _detect_ip_addr(self, cr, uid, context) - except: - ip_addr = 'localhost' - return ip_addr + def get_ftp_server_port(self, cr, uid, context=None): + return config.get('ftp_server_port', 8021) + + def get_suggested_ftp_server_address(self, cr, uid, context=None): + return tools.misc.detect_ip_addr() _defaults = { - 'host': detect_ip_addr, + 'host': get_ftp_server_address, + 'suggested_host': get_suggested_ftp_server_address, + 'port': get_ftp_server_port, } def action_cancel(self,cr,uid,ids,conect=None): @@ -836,7 +820,11 @@ class document_configuration_wizard(osv.osv_memory): aid = objid._get_id(cr, uid, 'document', 'action_document_browse') aid = objid.browse(cr, uid, aid, context=context).res_id - self.pool.get('ir.actions.url').write(cr, uid, [aid], {'url': 'ftp://'+(conf.host or 'localhost')+':8021/'}) + self.pool.get('ir.actions.url').write(cr, uid, [aid], {'url': 'ftp://'+(conf.host or 'localhost')+':'+conf.port+'/'}) + + config['ftp_server_address'] = conf.host + config['ftp_server_port'] = conf.port + config.save() return { 'view_type': 'form', @@ -845,4 +833,53 @@ class document_configuration_wizard(osv.osv_memory): 'type': 'ir.actions.act_window', 'target': 'new', } + document_configuration_wizard() + + +class document_configuration_ftpserver_wizard(osv.osv_memory): + _name='document.configuration.ftp_server.wizard' + _rec_name = 'Configure FTP server address' + _columns = { + 'host': fields.char('Server Address', size=64, help="Put here the server address or IP. " \ + "Keep localhost if you don't know what to write.", required=True), + 'suggested_host': fields.char('Suggested Server Address', size=64, readonly=True, help="This is the guessed server address"), + 'port': fields.char('Server Port', size=5, help="Put here the server port. " \ + "Keep 8021 if you don't know what to write.", required=True) + } + + def get_ftp_server_address(self, cr, uid, context=None): + default_address = tools.misc.detect_ip_addr() + return config.get('ftp_server_address', default_address) + + def get_ftp_server_port(self, cr, uid, context=None): + return config.get('ftp_server_port', '8021') + + def get_suggested_ftp_server_address(self, cr, uid, context=None): + return tools.misc.detect_ip_addr() + + _defaults = { + 'host': get_ftp_server_address, + 'suggested_host': get_suggested_ftp_server_address, + 'port': get_ftp_server_port, + } + + def action_cancel(self,cr,uid,ids,conect=None): + return {} + + def action_config(self, cr, uid, ids, context=None): + conf = self.browse(cr, uid, ids[0], context) + obj = self.pool.get('ir.model.data') + + aid = obj._get_id(cr, uid, 'document', 'action_document_browse') + aid = obj.browse(cr, uid, aid, context=context).res_id + self.pool.get('ir.actions.url').write(cr, uid, [aid], {'url': 'ftp://'+(conf.host or 'localhost')+':'+conf.port+'/'}) + + config['ftp_server_address'] = conf.host + config['ftp_server_port'] = conf.port + config.save() + + return {} + +document_configuration_ftpserver_wizard() + diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 6ae89fdc2ac..6e570bb406a 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -243,40 +243,86 @@ + - - Auto Configure Directory - document.configuration.wizard - form - -
- -