def test_unregister(self): factory = object() mimetype = 'application/x-test-mimetype-1' mimetype2 = 'application/x-test-mimetype-2' registry.register(mimetype, factory, 'Silva') registry.register(mimetype2, factory, 'Silva') self.assertEqual(registry.get(mimetype), factory) self.assertEqual(registry.get(mimetype2), factory) registry.unregister(factory) self.assertEqual(registry.get(mimetype), registry.DEFAULT.im_func) self.assertEqual(registry.get(mimetype2), registry.DEFAULT.im_func)
def test_register(self): marker = object() factory = object() mimetype = 'application/x-test-mimetype-1' self.assertEqual(registry.get(mimetype), registry.DEFAULT.__func__) registry.register(mimetype, factory, 'Silva') self.assertEqual(registry.get(mimetype), factory) self.assertEqual(registry.get(mimetype, marker), factory) mimetype2 = 'application/x-test-mimetype-2' registry.register(mimetype2, factory, 'Silva') self.assertEqual(registry.get(mimetype2), factory)
def importArchive(self, archive, assettitle='', recreatedirs=1, replace=0): zip = zipfile.ZipFile(archive) # Lists the names of the files in the archive which were # succesfully added (or, if something went wrong, list it in # failed_list). succeeded_list = [] failed_list = [] # Extract filenames, not directories. for name in zip.namelist(): path, filename = os.path.split(name) if not filename: # Its a directory entry continue if (re.match("^__MACOSX", path) or re.match(".*\.DS_Store$", filename)): # It's meta information from a Mac archive, and we # don't need it continue if recreatedirs and path: dirs = path.split('/') container = self._getSilvaContainer( self.context, dirs, replace) if container is None: failed_list.append('/'.join(dirs)) # Creating the folder failed - bailout for this # zipped file... continue else: filename = name container = self.context # Actually add object... mimetype, enc = contenttype.guess_content_type(name) factory = mimetypeRegistry.get(mimetype) extracted_file = StringIO(zip.read(name)) id = self._makeId(filename, container, extracted_file, replace) added_object = factory( container, id, assettitle, extracted_file) if added_object is None: # Factories return None upon failure. # FIXME: can I extract some info for the reason of failure? failed_list.append(name) else: succeeded_list.append(name) return succeeded_list, failed_list