def _make_filename(self, filename, metadata): """Constructs file name based on metadata and file naming formats.""" if config.setting["move_files"]: new_dirname = config.setting["move_files_to"] if not os.path.isabs(new_dirname): new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname)) else: new_dirname = os.path.dirname(filename) new_filename, ext = os.path.splitext(os.path.basename(filename)) if config.setting["rename_files"]: # expand the naming format format = config.setting["file_naming_format"] if len(format) > 0: new_filename = self._script_to_filename(format, metadata) if not config.setting["move_files"]: new_filename = os.path.basename(new_filename) new_filename = make_short_filename(new_dirname, new_filename) # win32 compatibility fixes if config.setting["windows_compatible_filenames"] or sys.platform == "win32": new_filename = new_filename.replace("./", "_/").replace(".\\", "_\\") # replace . at the beginning of file and directory names new_filename = new_filename.replace("/.", "/_").replace("\\.", "\\_") if new_filename and new_filename[0] == ".": new_filename = "_" + new_filename[1:] # Fix for precomposed characters on OSX if sys.platform == "darwin": new_filename = unicodedata.normalize("NFD", unicode(new_filename)) return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
def _make_filename(self, filename, metadata, settings): """Constructs file name based on metadata and file naming formats.""" if settings["move_files"]: new_dirname = settings["move_files_to"] if not os.path.isabs(new_dirname): new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname)) else: new_dirname = os.path.dirname(filename) new_filename, ext = os.path.splitext(os.path.basename(filename)) if settings["rename_files"]: # expand the naming format format = settings['file_naming_format'] if len(format) > 0: new_filename = self._script_to_filename(format, metadata, settings) if not settings['move_files']: new_filename = os.path.basename(new_filename) new_filename = make_short_filename(new_dirname, new_filename) # win32 compatibility fixes if settings['windows_compatible_filenames'] or sys.platform == 'win32': new_filename = new_filename.replace('./', '_/').replace('.\\', '_\\') # replace . at the beginning of file and directory names new_filename = new_filename.replace('/.', '/_').replace('\\.', '\\_') if new_filename[0] == '.': new_filename = '_' + new_filename[1:] # Fix for precomposed characters on OSX if sys.platform == "darwin": new_filename = unicodedata.normalize("NFD", new_filename) return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
def _make_filename(self, filename, metadata, settings): """Constructs file name based on metadata and file naming formats.""" if settings["move_files"]: new_dirname = settings["move_files_to"] if not os.path.isabs(new_dirname): new_dirname = os.path.normpath( os.path.join(os.path.dirname(filename), new_dirname)) else: new_dirname = os.path.dirname(filename) new_filename, ext = os.path.splitext(os.path.basename(filename)) if settings["rename_files"]: # expand the naming format format = settings['file_naming_format'] if len(format) > 0: new_filename = self._script_to_filename( format, metadata, settings) if not settings['move_files']: new_filename = os.path.basename(new_filename) new_filename = make_short_filename(new_dirname, new_filename) # win32 compatibility fixes if settings[ 'windows_compatible_filenames'] or sys.platform == 'win32': new_filename = new_filename.replace('./', '_/').replace( '.\\', '_\\') # replace . at the beginning of file and directory names new_filename = new_filename.replace('/.', '/_').replace( '\\.', '\\_') if new_filename[0] == '.': new_filename = '_' + new_filename[1:] # Fix for precomposed characters on OSX if sys.platform == "darwin": new_filename = unicodedata.normalize("NFD", new_filename) return os.path.realpath( os.path.join(new_dirname, new_filename + ext.lower()))
def _make_filename(self, filename, metadata, settings): """Constructs file name based on metadata and file naming formats.""" if settings["move_files"]: new_dirname = settings["move_files_to"] if not os.path.isabs(new_dirname): new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname)) else: new_dirname = os.path.dirname(filename) old_dirname = new_dirname new_filename, ext = os.path.splitext(os.path.basename(filename)) if settings["rename_files"]: # expand the naming format format = settings["file_naming_format"] if settings["use_va_format"] and metadata["compilation"] == "1": format = settings["va_file_naming_format"] if len(format) > 0: new_filename = self._script_to_filename(format, metadata, settings) if not settings["move_files"]: new_filename = os.path.basename(new_filename) new_filename = make_short_filename(new_dirname, new_filename) # win32 compatibility fixes if settings["windows_compatible_filenames"] or sys.platform == "win32": new_filename = new_filename.replace("./", "_/").replace(".\\", "_\\") # replace . at the beginning of file and directory names new_filename = new_filename.replace("/.", "/_").replace("\\.", "\\_") if new_filename[0] == ".": new_filename = "_" + new_filename[1:] return os.path.realpath(os.path.join(new_dirname, new_filename + ext.lower()))
def test_whitespace(self): fn = util.make_short_filename( "/home/me/", os.path.join("a1234567890 ", " b1234567890 "), 22) self.failUnlessEqual(fn, os.path.join("a12345678", "b1"))
def test_whitespace(self): fn = util.make_short_filename("/home/me/", os.path.join("a1234567890 ", " b1234567890 "), 22) self.assertEqual(fn, os.path.join("a12345678", "b1"))
def test_long_2(self): fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 22) self.assertEqual(fn, os.path.join("a12345678", "b1"))
def test_long(self): fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 20) self.assertEqual(fn, os.path.join("a123456", "b1"))
def test_long_2(self): fn = util.make_short_filename("/home/me/", os.path.join("a1234567890", "b1234567890"), 22) self.failUnlessEqual(fn, os.path.join("a12345678", "b1"))