示例#1
0
    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)
示例#3
0
    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