def publish_doc(self, docname, output): conf = self.config title = ConfluenceState.title(docname) parent_id = None if self.config.master_doc and self.config.confluence_page_hierarchy: if self.config.master_doc != docname: parent = ConfluenceState.parentDocname(docname) parent_id = ConfluenceState.uploadId(parent) if not parent_id: parent_id = self.parent_id data = { 'content': output, 'labels': [], } if self.config.confluence_global_labels: data['labels'].extend(self.config.confluence_global_labels) metadata = self.metadata[docname] if 'labels' in metadata: data['labels'].extend([v for v in metadata['labels']]) uploaded_id = self.publisher.storePage(title, data, parent_id) ConfluenceState.registerUploadId(docname, uploaded_id) if self.config.master_doc == docname: self.master_doc_page_id = uploaded_id if conf.confluence_purge and self.legacy_pages is None: if conf.confluence_purge_from_master and self.master_doc_page_id: baseid = self.master_doc_page_id else: baseid = self.parent_id # if no base identifier and dry running, ignore legeacy page # searching as there is no initial master document to reference # against if (conf.confluence_purge_from_master and conf.confluence_publish_dryrun and not baseid): self.legacy_pages = [] elif self.config.confluence_adv_aggressive_search is True: self.legacy_pages = self.publisher.getDescendantsCompat(baseid) else: self.legacy_pages = self.publisher.getDescendants(baseid) # only populate a list of possible legacy assets when a user is # configured to check or push assets to the target space asset_override = conf.confluence_asset_override if asset_override is None or asset_override: for legacy_page in self.legacy_pages: attachments = self.publisher.getAttachments(legacy_page) self.legacy_assets[legacy_page] = attachments if conf.confluence_purge: if uploaded_id in self.legacy_pages: self.legacy_pages.remove(uploaded_id)
def test_parent_registration(self): root_doc = ConfluenceState.parentDocname('toctree') self.assertIsNone(root_doc, 'root toctree has a parent') parent_doc = ConfluenceState.parentDocname('toctree-doc1') self.assertEqual(parent_doc, 'toctree', 'toctree-doc1 parent is not root toctree') parent_doc = ConfluenceState.parentDocname('toctree-doc2') self.assertEqual(parent_doc, 'toctree', 'toctree-doc2 parent is not root toctree') parent_doc = ConfluenceState.parentDocname('toctree-doc3') self.assertEqual(parent_doc, 'toctree', 'toctree-doc3 parent is not root toctree') parent_doc = ConfluenceState.parentDocname('toctree-doc2a') self.assertEqual(parent_doc, 'toctree-doc2', 'toctree-doc2a parent is not toctree-doc2')
def test_config_hierarchy_parent_registration(self): ConfluenceState.reset() build_sphinx(self.dataset, config=self.config) # root toctree should not have a parent root_doc = ConfluenceState.parentDocname('index') self.assertIsNone(root_doc) # check various documents for expected parents parent_doc = ConfluenceState.parentDocname('toctree-doc1') self.assertEqual(parent_doc, 'index') parent_doc = ConfluenceState.parentDocname('toctree-doc2') self.assertEqual(parent_doc, 'index') parent_doc = ConfluenceState.parentDocname('toctree-doc3') self.assertEqual(parent_doc, 'index') parent_doc = ConfluenceState.parentDocname('toctree-doc2a') self.assertEqual(parent_doc, 'toctree-doc2')