Ejemplo n.º 1
0
    def build_batch(self, root: str) -> collection_builder.AbsPackageComponent:
        """Build a capture one style batch object."""
        new_batch = collection.Package(root)
        new_batch.component_metadata[Metadata.PATH] = root

        files = list(self.locate_batch_files(root=root))

        files.sort(key=lambda f: f.name)

        group_ids = set()

        for file_ in files:
            try:
                file_name_parts = self.identify_file_name_parts(file_.name)
                if file_name_parts is None:
                    raise ValueError(
                        f"File {file_.name} doesn't match expected pattern")

                group_id = file_name_parts['group']
                group_ids.add(group_id)
            except ValueError as error:
                raise ValueError(f"Unable to split {file_.name}") from error

        for object_name in sorted(group_ids):
            new_object = collection.PackageObject(parent=new_batch)
            new_object.component_metadata[Metadata.ID] = object_name

            new_object.component_metadata[Metadata.PACKAGE_TYPE] = \
                PackageTypes.CAPTURE_ONE_SESSION
            self.build_package(new_object, root)
        return new_batch
Ejemplo n.º 2
0
    def test_set_title_page(self, delegate):
        combo_box = QtWidgets.QComboBox()
        files = [
            "file1.jp2",
            "file2.jp2",
            "file3.jp2",
        ]
        for file_name in files:
            combo_box.addItem(file_name)

        combo_box.setCurrentText("file2.jp2")
        model = Mock()

        object_record = collection.PackageObject()
        item = collection.Item(object_record)
        instance = collection.Instantiation(parent=item, files=files)

        def get_data(index, role):
            if role == QtCore.Qt.UserRole:
                return object_record

        mock_index = MagicMock()
        model.data = get_data
        delegate.setModelData(combo_box, model, mock_index)
        assert \
            object_record.metadata[collection.Metadata.TITLE_PAGE] == \
            "file2.jp2"
Ejemplo n.º 3
0
 def test_data_display_role(self):
     package = collection.PackageObject()
     package.component_metadata[collection.Metadata.ID] = "page1.jpg"
     packages = [package]
     model = title_page_selection.PackagesModel(packages)
     index = model.index(0, 0)
     data = model.data(index, role=QtCore.Qt.DisplayRole)
     assert data == "page1.jpg"
Ejemplo n.º 4
0
def test_builder2_build_package_files_match(capture_one_batch_with_dashes):
    batch_dir, source_files = capture_one_batch_with_dashes
    builder = capture_one_package.CaptureOneBuilder()
    builder.splitter = capture_one_package.dash_splitter
    sample_object = collection.PackageObject()
    sample_object.component_metadata[Metadata.ID] = "99423682912205899"
    builder.build_package(sample_object, batch_dir)
    assert len(sample_object) == len(source_files)
Ejemplo n.º 5
0
 def get_data(role):
     if role == QtCore.Qt.UserRole:
         object_record = collection.PackageObject()
         item = collection.Item(object_record)
         instance = collection.Instantiation(parent=item,
                                             files=[
                                                 "file1.jp2",
                                                 "file2.jp2",
                                                 "file3.jp2",
                                             ])
         return object_record
Ejemplo n.º 6
0
    def test_title_page_flags_editable(self):
        package = collection.PackageObject()
        package.component_metadata[collection.Metadata.TITLE_PAGE] = \
            "page1.jpg"

        packages = [package]

        model = title_page_selection.PackagesModel(packages)
        index = model.index(0, 1)
        res = model.flags(index)
        assert res == QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled
Ejemplo n.º 7
0
    def model(self, request):
        marker = request.node.get_closest_marker("model_data")
        if marker is None:
            amount = 0
        else:
            amount = marker.kwargs.get("amount", 0)
        packages = []
        for i in range(amount):
            object_record = collection.PackageObject()
            packages.append(object_record)

        model = title_page_selection.PackagesModel(packages)
        return model
Ejemplo n.º 8
0
 def get_data(role):
     if role == QtCore.Qt.UserRole:
         object_record = collection.PackageObject()
         object_record.component_metadata[
             collection.Metadata.TITLE_PAGE] = "file2.jp2"
         item = collection.Item(object_record)
         instance = collection.Instantiation(parent=item,
                                             files=[
                                                 "file1.jp2",
                                                 "file2.jp2",
                                                 "file3.jp2",
                                             ])
         return object_record
Ejemplo n.º 9
0
    def build_object(self,
                     parent: collection.Package,
                     group_id: str,
                     path: str) -> None:
        """Build a new object.

        Args:
            parent:
            group_id:
            path:

        """
        new_object = collection.PackageObject(parent=parent)
        new_object.component_metadata[Metadata.ID] = group_id
        new_object.component_metadata[Metadata.PATH] = path
        access_path = os.path.join(path, "access")
        for directory_item in filter(
                lambda item: self.is_eas_file(pathlib.Path(item.path)),
                self.locate_files_access(access_path)
        ):
            regex_result = EASBuilder.grouper_regex.match(directory_item.name)
            if regex_result is None:
                raise ValueError("Unknown pattern")

            groups = regex_result.groupdict()
            if groups['group'] != group_id:
                continue

            new_item = collection.Item(parent=new_object)
            new_item.component_metadata[Metadata.ITEM_NAME] = \
                regex_result['part']

            self.build_instance(
                new_item,
                path=os.path.dirname(directory_item.path),
                filename=directory_item.name
            )
Ejemplo n.º 10
0
    def digital_library_object(self):

        new_object = collection.PackageObject()
        new_object.component_metadata[collection.Metadata.ID] = "123"

        new_object.component_metadata[collection.Metadata.PACKAGE_TYPE] = \
            common.PackageTypes.DIGITAL_LIBRARY_COMPOUND

        new_item = collection.Item(parent=new_object)

        new_item.component_metadata[collection.Metadata.ID] = "123"
        new_item.component_metadata[collection.Metadata.PATH] = "source"
        new_item.component_metadata[collection.Metadata.ITEM_NAME] = '00000001'

        collection.Instantiation(
            category=collection.InstantiationTypes.ACCESS,
            parent=new_item,
            files=[os.path.join("123", "access", "123-00000001.jp2")])

        collection.Instantiation(
            category=collection.InstantiationTypes.PRESERVATION,
            parent=new_item,
            files=[os.path.join("123", "preservation", "123-00000001.tif")])
        return new_object
Ejemplo n.º 11
0
 def test_data_display_role_empty(self):
     packages = [collection.PackageObject()]
     model = title_page_selection.PackagesModel(packages)
     index = model.index(0, 0)
     data = model.data(index, role=QtCore.Qt.DisplayRole)
     assert data == ""
Ejemplo n.º 12
0
 def test_data_user_role(self):
     packages = [collection.PackageObject()]
     model = title_page_selection.PackagesModel(packages)
     index = model.index(0, 0)
     data = model.data(index, role=QtCore.Qt.UserRole)
     assert data == packages[0]