Example #1
0
 def test_move_both_new_and_existing_after(self):
     el_list = [
         self.new_list[1],
         self.new_list[0],
         self.existing_list[0],
         self.existing_list[1],
     ]
     lib.add_obj_ref(
         self.tag_el,
         el_list,
         self.existing_list[2],
         put_after_adjacent=True,
     )
     assert_xml_equal(
         """
         <tag>
             <obj_ref id="e3"/>
             <obj_ref id="b"/>
             <obj_ref id="a"/>
             <obj_ref id="e1"/>
             <obj_ref id="e2"/>
         </tag>
         """,
         etree_to_str(self.tag_el),
     )
Example #2
0
 def test_move_existing_ids_before(self):
     lib.add_obj_ref(
         self.tag_el, self.existing_list[2:0:-1], self.existing_list[0],
     )
     assert_xml_equal(
         """
         <tag>
             <obj_ref id="e3"/>
             <obj_ref id="e2"/>
             <obj_ref id="e1"/>
         </tag>
         """,
         etree_to_str(self.tag_el),
     )
Example #3
0
 def test_add_new_ids_before_adjacent(self):
     lib.add_obj_ref(
         self.tag_el, self.new_list, self.existing_list[0],
     )
     assert_xml_equal(
         """
         <tag>
             <obj_ref id="a"/>
             <obj_ref id="b"/>
             <obj_ref id="e1"/>
             <obj_ref id="e2"/>
             <obj_ref id="e3"/>
         </tag>
         """,
         etree_to_str(self.tag_el),
     )
Example #4
0
 def test_add_new_ids(self):
     lib.add_obj_ref(
         self.tag_el, self.new_list, None,
     )
     assert_xml_equal(
         """
         <tag>
             <obj_ref id="e1"/>
             <obj_ref id="e2"/>
             <obj_ref id="e3"/>
             <obj_ref id="a"/>
             <obj_ref id="b"/>
         </tag>
         """,
         etree_to_str(self.tag_el),
     )
Example #5
0
 def test_move_existing_ids_after(self):
     lib.add_obj_ref(
         self.tag_el,
         self.existing_list[2::-2],
         self.existing_list[1],
         put_after_adjacent=True,
     )
     assert_xml_equal(
         """
         <tag>
             <obj_ref id="e2"/>
             <obj_ref id="e3"/>
             <obj_ref id="e1"/>
         </tag>
         """,
         etree_to_str(self.tag_el),
     )
Example #6
0
File: tag.py Project: zht750808/pcs
def update(
    env: LibraryEnvironment,
    tag_id: str,
    idref_add: Sequence[str],
    idref_remove: Sequence[str],
    adjacent_idref: Optional[str] = None,
    put_after_adjacent: bool = False,
) -> None:
    """
    Update specified tag by given id references.

    env -- provides all for communication with externals
    tag_id -- id of an existing tag to be updated
    idref_add -- reference ids to be added
    idref_remove -- reference ids to be removed
    adjacent_idref -- id of the element next to which the added elements will
        be put
    put_after_adjacent -- put elements after (True) or before (False) the
        adjacent element
    """
    with cib_tags_section(env) as tags_section:
        validator = tag.ValidateTagUpdateByIds(
            tag_id,
            idref_add,
            idref_remove,
            adjacent_idref,
        )
        if env.report_processor.report_list(
                validator.validate(
                    get_resources(get_root(tags_section)),
                    tags_section,
                )).has_errors:
            raise LibraryError()
        # check for mypy
        tag_element = validator.tag_element()
        if tag_element is not None:
            tag.add_obj_ref(
                tag_element,
                validator.add_obj_ref_element_list(),
                validator.adjacent_obj_ref_element(),
                put_after_adjacent,
            )
            tag.remove_obj_ref(validator.remove_obj_ref_element_list())