Author: duncan
Date: Fri May 18 17:44:59 2007
New Revision: 9578

Modified:
   branches/rel-1/freevo/src/audio/plugins/playlist.py
   branches/rel-1/freevo/src/image/__init__.py
   branches/rel-1/freevo/src/playlist.py
   branches/rel-1/freevo/src/util/fileops.py

Log:
[ 1715447 ] Recursive play, .password files, and folder permissions
Fix applied to skip recursive play of directories with .password files


Modified: branches/rel-1/freevo/src/audio/plugins/playlist.py
==============================================================================
--- branches/rel-1/freevo/src/audio/plugins/playlist.py (original)
+++ branches/rel-1/freevo/src/audio/plugins/playlist.py Fri May 18 17:44:59 2007
@@ -109,7 +109,7 @@
                                                         
time.strftime(self.naming))),'w+')
         for f in self.item.files.get():
             if os.path.isdir(f):
-                for file in util.match_files_recursively(f, 
config.AUDIO_SUFFIX):
+                for file in util.match_files_recursively(f, 
config.AUDIO_SUFFIX, skip_password=True):
                     self.playlist_handle.write('%s\n' % os.path.join(f, file))
             else:
                 self.playlist_handle.write('%s\n' % f)

Modified: branches/rel-1/freevo/src/image/__init__.py
==============================================================================
--- branches/rel-1/freevo/src/image/__init__.py (original)
+++ branches/rel-1/freevo/src/image/__init__.py Fri May 18 17:44:59 2007
@@ -124,7 +124,7 @@
                 fname  = os.path.join(dirname, String(fxd.gettext(child)))
                 if child.name == 'directory':
                     if fxd.getattr(child, 'recursive', 0):
-                        f = util.match_files_recursively(fname, self.suffix())
+                        f = util.match_files_recursively(fname, self.suffix(), 
skip_password=True)
                     else:
                         f = util.match_files(fname, self.suffix())
                     citems = self.get(None, f)
@@ -168,7 +168,7 @@
                 fname  = os.path.join(dirname, fxd.gettext(child))
                 if child.name == 'directory':
                     if fxd.getattr(child, 'recursive', 0):
-                        files += util.match_files_recursively(fname, suffix)
+                        files += util.match_files_recursively(fname, suffix, 
skip_password=True)
                     else:
                         files += util.match_files(fname, suffix)
                 elif child.name == 'file':

Modified: branches/rel-1/freevo/src/playlist.py
==============================================================================
--- branches/rel-1/freevo/src/playlist.py       (original)
+++ branches/rel-1/freevo/src/playlist.py       Fri May 18 17:44:59 2007
@@ -248,7 +248,7 @@
                      len(i) == 2 and vfs.isdir(i[0]):
                     # (directory, recursive=True|False)
                     if i[1]:
-                        self.playlist += util.match_files_recursively(i[0], 
self.suffixlist)
+                        self.playlist += util.match_files_recursively(i[0], 
self.suffixlist, skip_password=True)
                     else:
                         self.playlist += util.match_files(i[0], 
self.suffixlist)
                     # set autoplay to True on such big lists

Modified: branches/rel-1/freevo/src/util/fileops.py
==============================================================================
--- branches/rel-1/freevo/src/util/fileops.py   (original)
+++ branches/rel-1/freevo/src/util/fileops.py   Fri May 18 17:44:59 2007
@@ -248,12 +248,33 @@
     return result
 
 
-def match_files_recursively(dir, suffix_list):
+def match_files_recursively_skip_protected(result, dirname, names):
+    """
+    help function for match_files_recursively_skip_protected, skipping 
directories with a .password file
+    """
+    if dirname:
+        lastdir = dirname[dirname.rfind('/'):]
+        if os.path.exists(os.path.join(dirname, '.password')):
+            _debug_('.password found in "%s"' % dirname)
+            return result
+        if len(lastdir) > 1 and lastdir[1] == '.':
+            return result
+        for name in names:
+            fullpath = vfs.join(dirname, name)
+            result.append(fullpath)
+
+    return result
+
+
+def match_files_recursively(dir, suffix_list, skip_password=False):
     """
     get all files matching suffix_list in the dir and in it's subdirectories
     """
     all_files = []
-    os.path.walk(dir, match_files_recursively_helper, all_files)
+    if skip_password:
+        os.path.walk(dir, match_files_recursively_skip_protected, all_files)
+    else:
+        os.path.walk(dir, match_files_recursively_helper, all_files)
 
     matches = misc.unique([f for f in all_files if match_suffix(f, 
suffix_list) ])
 

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to