Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 7 additions & 17 deletions adapters/selfhosted/xwiki.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,33 +158,23 @@ def create_or_update_page(
self._put(self._page_url(page_name, parent), payload)

def deploy(self, rendered_pages: dict[str, tuple[str, str]]) -> None:
"""Deploy all rendered pages under the parent page hierarchy.
"""Deploy all rendered pages flat in the QMS space.

Structure created:
QMS/ ← space root (index page)
QMS/QM Manual/ ← parent page
QMS/QM Manual/<page> ← all document pages
QMS/WebHome ← space index page
QMS/<page> ← all document pages (flat, no intermediate parent)

Args:
rendered_pages: page_name -> (title, rendered_markdown)
"""
# Space index page (the QMS space WebHome equivalent)
# Space index page
index_entry = rendered_pages.pop("qms_index", None)
if index_entry:
title, content = index_entry
self.create_or_update_page("WebHome", title, content)
print(" XWiki: upserted space index 'WebHome'")

# Parent page: "QM Manual" at space root level
parent_name = self._parent_page.replace(" ", "_")
self.create_or_update_page(
parent_name,
self._parent_page,
f"= {self._parent_page} =\n\nAll QMS documents are listed below.",
)
print(f" XWiki: upserted parent page '{self._parent_page}'")

# All document pages nested under the parent
# All document pages flat in the space (no intermediate parent page)
for page_name, (title, content) in rendered_pages.items():
self.create_or_update_page(page_name, title, content, parent=parent_name)
print(f" XWiki: upserted page '{page_name}' under '{self._parent_page}'")
self.create_or_update_page(page_name, title, content)
print(f" XWiki: upserted page '{page_name}'")
4 changes: 2 additions & 2 deletions tests/test_adapters.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ def test_deploy_upserts_all_pages(self) -> None:
mock_resp.raise_for_status.return_value = None
with patch("adapters.selfhosted.xwiki.requests.put", return_value=mock_resp) as mock_put:
adapter.deploy(pages)
# 1 parent page + 2 document pages = 3 PUT calls
assert mock_put.call_count == 3
# 2 document pages flat in the space (no intermediate parent page)
assert mock_put.call_count == 2

def test_base_url_trailing_slash_stripped(self) -> None:
adapter = XWikiAdapter(_make_config(xwiki_url="http://xwiki.test/"))
Expand Down