def get_or_create_root(self): """ Creates the root node used to store all page types for the current site if it doesn't exist. """ root_page = PageType.get_root_page(site=self._site) if not root_page: root_page = Page( publisher_is_draft=True, in_navigation=False, is_page_type=True, ) root_page.set_tree_node(self._site) root_page.save() if not root_page.has_translation(self._language): api.create_title( language=self._language, title=ugettext('Page Types'), page=root_page, slug=PAGE_TYPES_ID, path=PAGE_TYPES_ID, ) return root_page.node
def add_tree(self, count, root=None, depth=1): CMS_GTE_35 = hasattr(Page, 'node') for node in range(0, count): new_page = Page( created_by='script', changed_by='script', in_navigation=True, template='INHERIT', ) if CMS_GTE_35: parent_node = root.node if root else None new_page.set_tree_node(site=self.site, target=parent_node, position='last-child') new_page.save() else: new_page.site = self.site new_page.parent_id = getattr(root, 'pk', None) # This saves the page new_page = Page.add_root(instance=new_page) if root: new_page = new_page.move(target=root.reload(), pos='last-child') try: node_path = new_page.node.path except AttributeError: node_path = new_page.path for language in self.languages: new_page.title_set.create( language=language, title=node_path, slug=node_path, path='/'.join(self.path_regex.findall(node_path)), ) new_page.update_languages(self.languages) if self.base_page: for ph in self.base_page.placeholders.all(): new_ph = new_page.placeholders.create(slot=ph.slot) for language in self.languages: plugins = ph.get_plugins_list(language) if plugins: ph.copy_plugins(new_ph, language) else: new_page.rescan_placeholders() self.stdout.write("Created page %s" % node_path) if depth <= self.max_depth and bool(random.getrandbits(1)): self.add_tree(count=self.max_count_children, root=new_page, depth=depth + 1)