fixed bug #301684 : soved unicode problem in DMS
authorhmo-tinyerp <>
Thu, 18 Dec 2008 08:55:57 +0000 (14:25 +0530)
committerhmo-tinyerp <>
Thu, 18 Dec 2008 08:55:57 +0000 (14:25 +0530)
bzr revid: hmo-tinyerp-20081218085557-hfch2bn7i33ub7rf

addons/document/document.py
addons/document/ftpserver/__init__.py
addons/document/ftpserver/abstracted_fs.py
addons/document/ftpserver/ftpserver.py

index 92b49a1..b8b053e 100644 (file)
@@ -107,7 +107,7 @@ class node_class(object):
             where.append( ('parent_id','=',self.object.id) )
             where.append( ('res_id','=',False) )
         if nodename:
-            where.append( (fobj._rec_name,'=',nodename) )        
+            where.append( (fobj._rec_name,'=like',nodename) )        
         ids = fobj.search(self.cr, self.uid, where+[ ('parent_id','=',self.object and self.object.id or False) ], context=self.context)
         if self.object and self.root and (self.object.type=='ressource'):
             ids += fobj.search(self.cr, self.uid, where+[ ('parent_id','=',False) ], context=self.context)
@@ -118,7 +118,7 @@ class node_class(object):
         pool = pooler.get_pool(self.cr.dbname)
         where = []
         if nodename:
-            where.append(('name','=',nodename))
+            where.append(('name','=like',nodename))
         if (self.object and self.object.type=='directory') or not self.object2:
             where.append(('parent_id','=',self.object and self.object.id or False))
         else:
@@ -144,7 +144,7 @@ class node_class(object):
             fobj = pool.get('ir.attachment')
             vargs = [('parent_id','=',False),('res_id','=',False)]
             if nodename:
-                vargs.append(('name','=',nodename))
+                vargs.append(('name','=like',nodename))
             file_ids=fobj.search(self.cr,self.uid,vargs)
 
             res = fobj.browse(self.cr, self.uid, file_ids, context=self.context)
@@ -174,7 +174,7 @@ class node_class(object):
                 for invalid in INVALID_CHARS:
                     if nodename.find(INVALID_CHARS[invalid]) :
                         nodename=nodename.replace(INVALID_CHARS[invalid],invalid)
-                where.append(('name','=',nodename))
+                where.append(('name','=like',nodename))
             ids = obj.search(self.cr, self.uid, where, self.context)
             res = obj.browse(self.cr, self.uid, ids,self.context)
             for r in res:
@@ -290,7 +290,7 @@ class document_directory(osv.osv):
     def _get_childs(self, cr, uid, node, nodename=False, context={}):
         where = []
         if nodename:
-            where.append(('name','=',nodename))
+            where.append(('name','=like',nodename))
         if object:
             where.append(('parent_id','=',object.id))
         ids = self.search(cr, uid, where, context)
index 3856c5d..dcac53d 100644 (file)
@@ -9,7 +9,7 @@ PORT = config.get('ftp_server_port', 8021)
 HOST = ''
 
 class ftp_server(threading.Thread):
-    def log(self, level, message):
+    def log(self, level, message):        
         logger = netsvc.Logger()
         logger.notifyChannel('FTP', level, message)
 
index 69aecb2..fe64ab4 100644 (file)
@@ -150,7 +150,7 @@ class abstracted_fs:
 
     # Ok
     def fs2ftp(self, node):
-        res = node and ('/' + node.cr.dbname + '/' + node.path) or '/'
+        res = node and ('/' + node.cr.dbname + '/' + node.path.encode('ascii','replace').replace('?','_')) or '/'
         return res
 
     # Ok
@@ -688,7 +688,7 @@ class abstracted_fs:
 
             # formatting is matched with proftpd ls output
             yield "%s %3s %-8s %-8s %8s %s %s\r\n" %(perms, nlinks, uname, gname,
-                                                     size, mtime, file.path.encode('ascii','replace').split('/')[-1])
+                                                     size, mtime, file.path.encode('ascii','replace').replace('?','_').split('/')[-1])
 
     # Ok
     def format_mlsx(self, basedir, listing, perms, facts, ignore_err=True):
index f8af54f..07f6034 100644 (file)
@@ -1768,7 +1768,7 @@ class FTPHandler(asynchat.async_chat):
             self.__out_dtp_queue = (data, isproducer, file)
 
     def log(self, msg):
-        """Log a message, including additional identifying session data."""
+        """Log a message, including additional identifying session data."""        
         log("[%s]@%s:%s %s" %(self.username, self.remote_ip,
                               self.remote_port, msg))