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"
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(), ]
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(), ]
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)