示例#1
0
    def get_page(self, entry, level, parent):
        if self.progression:
            print 'downloading page: ' + entry.page_name.text
        landing = (entry.GetNodeId() == self.landing_page.id)

        page = Page(id=entry.GetNodeId(),
                    kind=entry.Kind(),
                    title=entry.title.text,
                    author_name=entry.author[0].name.text,
                    author_email=entry.author[0].email.text,
                    updated=entry.updated.text,
                    revision=entry.revision.text,
                    pagename=entry.page_name.text,
                    parent=parent,
                    etag=entry.etag,
                    landing=landing)

        if self.etag_old:
            self.etag_old.check_page(page.id, page.path)

        if page.kind == LIST_PAGE:
            list_page = ListPage()
            for header in entry.data.column:
                list_page.add_header(header.name)
            page.list_items = list_page

        content_str = self.request_page_content(entry.GetNodeId())
        self.get_site_content(level=level + 1, parent=page)

        if page.landing:
            for attachment in page.attachments:
                attachment.link = './' + self.landing_page.rel_path + '/' + attachment.name

        if page.kind == ANNOUNCEMENT:
            content_str2 = content_str
            content_str2 = self.replace_paths(page_content=content_str2,
                                              level=level - 1,
                                              page=page)
            for attachment in page.attachments:
                content_str2 = self.replace_attachment_source(
                    page=content_str2,
                    attachment=attachment,
                    parent=page,
                    as_announcement=True)
            page.embedded_content = content_str2

        content_str = self.replace_paths(page_content=content_str,
                                         level=level,
                                         page=page)
        for attachment in page.attachments:
            content_str = self.replace_attachment_source(page=content_str,
                                                         attachment=attachment,
                                                         parent=page)
        page.content = content_str
        parent.add_child(page)
    def get_page(self, entry, level, parent):
        if self.progression:
            print 'downloading page: ' + entry.page_name.text
        landing = (entry.GetNodeId() == self.landing_page.id)

        page = Page(id=entry.GetNodeId(),
                    kind=entry.Kind(),
                    title=entry.title.text,
                    author_name=entry.author[0].name.text,
                    author_email=entry.author[0].email.text,
                    updated=entry.updated.text,
                    revision=entry.revision.text,
                    pagename=entry.page_name.text,
                    parent=parent,
                    etag=entry.etag,
                    landing=landing)

        if self.etag_old:
            self.etag_old.check_page(page.id, page.path)

        if page.kind == LIST_PAGE:
            list_page = ListPage()
            for header in entry.data.column:
                list_page.add_header(header.name)
            page.list_items = list_page

        content_str = self.request_page_content(entry.GetNodeId())
        self.get_site_content(level=level+1, parent=page)


        if page.landing:
            for attachment in page.attachments:
                attachment.link = './' + self.landing_page.rel_path + '/' + attachment.name
                

        if page.kind == ANNOUNCEMENT:
            content_str2 = content_str
            content_str2 = self.replace_paths(page_content=content_str2, level=level-1, page=page)
            for attachment in page.attachments:
                content_str2 = self.replace_attachment_source(page=content_str2, attachment=attachment, parent=page, as_announcement=True)
            page.embedded_content = content_str2

        content_str = self.replace_paths(page_content=content_str, level=level, page=page)
        for attachment in page.attachments:
            content_str = self.replace_attachment_source(page=content_str, attachment=attachment, parent=page)
        page.content = content_str
        parent.add_child(page)
示例#3
0
    def __page_save(self):
        # Retrieve/check data.
        page_str = self.api.get_data().get_str('page')
        new      = self.api.post_data().get_bool('create')
        name     = self.api.post_data().get_str('name',   '')
        layout   = self.api.post_data().get_str('layout', '')
        if name == '':
            self.__errors.append(_('Page name is missing'))
        if layout == '':
            self.__errors.append(_('Layout is missing'))
        if len(self.__errors) > 0:
            return False

        # Fetch the page from the database, or instanciate a new one.
        if new:
            page   = Page(name)
            parent = page_str and self.api.get_requested_page() or None
        else:
            page = self.api.get_requested_page()
        assert page is not None

        # Check whether the caller has permission to edit this page.
        if not self.api.current_user_.may('edit'):
            err = _('Insufficient rights to change this page.')
            self.__errors.append(err)
            return False

        # Parse the layout to replace the extension names by handles.
        parser = LayoutParser(layout)
        parser.set_data_handler(self._layout_data_handler)
        parser.parse()
        if len(self.__errors) > 0:
            return False

        # Save the page.
        page.set_name(name)
        page.set_attribute('layout', parser.layout)
        if new and not self.page_db.add(parent, page):
            self.__errors.append(_('Error while creating the page.'))
        elif not self.page_db.save(page):
            self.__errors.append(_('Error while saving the page.'))
            return False

        self.__errors.append(_('Page saved.'))
        self.api.set_requested_page(page)
        return True