diff --git a/addons/document_ftp/ftpserver/abstracted_fs.py b/addons/document_ftp/ftpserver/abstracted_fs.py index 318957e68fa..4f0428ecb02 100644 --- a/addons/document_ftp/ftpserver/abstracted_fs.py +++ b/addons/document_ftp/ftpserver/abstracted_fs.py @@ -34,29 +34,8 @@ def _get_month_name(month): elif month==11:return 'Nov' elif month==12:return 'Dec' -def _to_unicode(s): - try: - return s.decode('utf-8') - except UnicodeError: - try: - return s.decode('latin') - except UnicodeError: - try: - return s.encode('ascii') - except UnicodeError: - return s +from ftpserver import _to_decode, _to_unicode -def _to_decode(s): - try: - return s.encode('utf-8') - except UnicodeError: - try: - return s.encode('latin') - except UnicodeError: - try: - return s.decode('ascii') - except UnicodeError: - return s class abstracted_fs(object): """A class used to interact with the file system, providing a high diff --git a/addons/document_ftp/ftpserver/ftpserver.py b/addons/document_ftp/ftpserver/ftpserver.py index 8d3fa4b0531..e267216ddec 100644 --- a/addons/document_ftp/ftpserver/ftpserver.py +++ b/addons/document_ftp/ftpserver/ftpserver.py @@ -225,13 +225,29 @@ def _to_unicode(s): try: return s.decode('utf-8') except UnicodeError: - try: - return s.decode('latin') - except UnicodeError: - try: - return s.encode('ascii') - except UnicodeError: - return s + pass + try: + return s.decode('latin') + except UnicodeError: + pass + try: + return s.encode('ascii') + except UnicodeError: + return s + +def _to_decode(s): + try: + return s.encode('utf-8') + except UnicodeError: + pass + try: + return s.encode('latin') + except UnicodeError: + pass + try: + return s.decode('ascii') + except UnicodeError: + return s # --- library defined exceptions @@ -2080,7 +2096,7 @@ class FTPHandler(asynchat.async_chat): data = '' if listing: listing.sort() - data = '\r\n'.join(listing) + '\r\n' + data = ''.join([ _to_decode(x) + '\r\n' for x in listing ]) self.log('OK NLST "%s". Transfer starting.' %line) self.push_dtp_data(data)