MCPcopy Create free account
hub / github.com/SpaceZephyr/myskill / _update_settings

Method _update_settings

docx/scripts/document.py:988–1064  ·  view source on GitHub ↗

Add RSID and optionally enable track revisions in settings.xml. Args: path: Path to settings.xml track_revisions: If True, adds trackRevisions element Places elements per OOXML schema order: - trackRevisions: early (before defaultTabStop) - r

(self, path, track_revisions=False)

Source from the content-addressed store, hash-verified

986 editor.append_to(root, rel_xml)
987
988 def _update_settings(self, path, track_revisions=False):
989 """Add RSID and optionally enable track revisions in settings.xml.
990
991 Args:
992 path: Path to settings.xml
993 track_revisions: If True, adds trackRevisions element
994
995 Places elements per OOXML schema order:
996 - trackRevisions: early (before defaultTabStop)
997 - rsids: late (after compat)
998 """
999 editor = self["word/settings.xml"]
1000 root = editor.get_node(tag="w:settings")
1001 prefix = root.tagName.split(":")[0] if ":" in root.tagName else "w"
1002
1003 # Conditionally add trackRevisions if requested
1004 if track_revisions:
1005 track_revisions_exists = any(
1006 elem.tagName == f"{prefix}:trackRevisions"
1007 for elem in editor.dom.getElementsByTagName(f"{prefix}:trackRevisions")
1008 )
1009
1010 if not track_revisions_exists:
1011 track_rev_xml = f"<{prefix}:trackRevisions/>"
1012 # Try to insert before documentProtection, defaultTabStop, or at start
1013 inserted = False
1014 for tag in [f"{prefix}:documentProtection", f"{prefix}:defaultTabStop"]:
1015 elements = editor.dom.getElementsByTagName(tag)
1016 if elements:
1017 editor.insert_before(elements[0], track_rev_xml)
1018 inserted = True
1019 break
1020 if not inserted:
1021 # Insert as first child of settings
1022 if root.firstChild:
1023 editor.insert_before(root.firstChild, track_rev_xml)
1024 else:
1025 editor.append_to(root, track_rev_xml)
1026
1027 # Always check if rsids section exists
1028 rsids_elements = editor.dom.getElementsByTagName(f"{prefix}:rsids")
1029
1030 if not rsids_elements:
1031 # Add new rsids section
1032 rsids_xml = f''&#x27;<{prefix}:rsids>
1033 <{prefix}:rsidRoot {prefix}:val="{self.rsid}"/>
1034 <{prefix}:rsid {prefix}:val="{self.rsid}"/>
1035</{prefix}:rsids>''&#x27;
1036
1037 # Try to insert after compat, before clrSchemeMapping, or before closing tag
1038 inserted = False
1039 compat_elements = editor.dom.getElementsByTagName(f"{prefix}:compat")
1040 if compat_elements:
1041 editor.insert_after(compat_elements[0], rsids_xml)
1042 inserted = True
1043
1044 if not inserted:
1045 clr_elements = editor.dom.getElementsByTagName(

Callers 1

_setup_trackingMethod · 0.95

Calls 4

get_nodeMethod · 0.80
insert_beforeMethod · 0.45
append_toMethod · 0.45
insert_afterMethod · 0.45

Tested by

no test coverage detected