Пример #1
0
def propagateLinkList(self):
    LL = ILinkList(self)
    langs = self.getTranslations()
    urls = LL.urls

    for lang in langs.keys():
        trans = langs[lang][0]
        ILinkList(trans).urls = locurls(lang, urls)

    return "ok"
Пример #2
0
    def _create_test_data(self):
        """ """
        self.folder = self.portal.folder

        # Create a default page for the folder
        self.folder.invokeFactory(
            'Document',
            'index_html',
            title='Default page',
            text='I haz links.'
        )
        self.index_html = self.folder['index_html']

        # Create linked content
        self.folder.invokeFactory(
            'Document',
            'linked1',
            title='Linked 1',
            text='I haz a foo.'
        )
        self.folder.invokeFactory(
            'Document',
            'linked2',
            title='Linked 2',
            text='I haz a bar.'
        )
        links = ILinkList(self.folder['index_html'])
        links.urls = [
            self.folder['linked1'].absolute_url(),
            self.folder['linked2'].absolute_url(),
        ]

        # Create translations of the folder and default page
        self.folder_de = self.folder.addTranslation('de')
        self.index_html_de = self.folder['index_html'].addTranslation('de')
        self.index_html_de.setText('Ich habe links.')

        # Create linked content for translations as well
        self.folder_de.invokeFactory(
            'Document',
            'linked1-de',
            title='Linked 1 de',
            text='Ich habe ein foo.'
        )
        self.folder_de.invokeFactory(
            'Document',
            'linked2-de',
            title='Linked 2 de',
            text='Ich habe ein bar.'
        )
        links_de = ILinkList(self.index_html_de)
        links_de.urls = [
            self.folder_de['linked1-de'].absolute_url(),
            self.folder_de['linked2-de'].absolute_url(),
        ]
Пример #3
0
    def _create_test_data(self):
        """ """
        self.folder = self.portal.folder

        # Create a default page for the folder
        self.folder.invokeFactory('Document',
                                  'index_html',
                                  title='Default page',
                                  text='I haz links.')
        self.index_html = self.folder['index_html']

        # Create linked content
        self.folder.invokeFactory('Document',
                                  'linked1',
                                  title='Linked 1',
                                  text='I haz a foo.')
        self.folder.invokeFactory('Document',
                                  'linked2',
                                  title='Linked 2',
                                  text='I haz a bar.')
        links = ILinkList(self.folder['index_html'])
        links.urls = [
            self.folder['linked1'].absolute_url(),
            self.folder['linked2'].absolute_url(),
        ]

        # Create translations of the folder and default page
        self.folder_de = self.folder.addTranslation('de')
        self.index_html_de = self.folder['index_html'].addTranslation('de')
        self.index_html_de.setText('Ich habe links.')

        # Create linked content for translations as well
        self.folder_de.invokeFactory('Document',
                                     'linked1-de',
                                     title='Linked 1 de',
                                     text='Ich habe ein foo.')
        self.folder_de.invokeFactory('Document',
                                     'linked2-de',
                                     title='Linked 2 de',
                                     text='Ich habe ein bar.')
        links_de = ILinkList(self.index_html_de)
        links_de.urls = [
            self.folder_de['linked1-de'].absolute_url(),
            self.folder_de['linked2-de'].absolute_url(),
        ]
Пример #4
0
def rearrange_seps(context, items=None):
    """Rearrange SEPs with old accordeon layout in order to fit the new
    1-page layout which is SEO compliant.

    See #4153 for details.
    """
    portal = getSite()

    # added parameter 'items' to the method for easier testing
    if not items:
        items = [
            'en/topics/business-aspects-of-osh',
            'en/topics/maintenance',
            'en/topics/whp',
            'en/topics/economic-incentives',
            'en/riskobservatory',
        ]

    for item in items:
        default_page = portal.restrictedTraverse(item + '/index_html', None)

        if default_page:
            translations = [value[0] for value
                            in default_page.getTranslations().values()]

            logger.info('Rearranging SEPs for object: %s' % item)

            # process the object and all its translations
            for obj in translations:
                links = ILinkList(obj)

                try:
                    new_text = obj.getText()
                except UnicodeDecodeError:
                    logging.warning('Unicode error for: %s. Fix the ' \
                        'body text for this item and run the upgrade ' \
                        'step again.' % obj.absolute_url())
                    raise

                for url in links.urls:
                    if url.startswith('http'):
                        url = '/'.join(url.split('/')[4:])
                    else:
                        url = url[1:]
                    try:
                        linked = portal.restrictedTraverse(url)
                        new_text += ('<h2 class="linkcollection">%s</h2>%s' %
                                     (linked.Title(), linked.getText()))

                    except AttributeError:
                        # XXX: Some links appear to be missing?!
                        logging.warning('Error processing link: %s' % url)
                    except UnicodeDecodeError:
                        logging.warning('Unicode error for: %s. Fix the ' \
                            'body text for this item and run the upgrade ' \
                            'again.' % url)
                        raise
                    else:
                        try:
                            # delete linked item
                            linked.aq_parent.manage_delObjects(
                                [linked.getId()])
                        except LinkIntegrityNotificationException:
                            logging.warning("Not possible to delete %s " \
                                "because link integrity is violated" % url)

                # set new body text on the object and clear list of links
                obj.setText(new_text)
                links.urls = []
        else:
            logger.info('Rearranging SEPs for object: %s. No index_html '
                        'found.' % item)