def loadDefaultData(self): """ """ NySite.__dict__['loadDefaultData'](self) self.loadSkeleton(join(ENVPORTAL_PRODUCT_PATH, 'skel')) self.getPropertiesTool().manageMainTopics(maintopics=['country_profile', 'reports', 'themes_indicators', 'projects', 'products', 'publications']) manage_addNyPhotoFolder(self, ID_PHOTOARCHIVE, TITLE_PHOTOARCHIVE) self._getOb(ID_PHOTOARCHIVE).approveThis() #create and configure LinkChecker instance manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType(METATYPE_NYURL) linkchecker_ob.manage_addProperty(METATYPE_NYURL, 'locator') for k,v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p) #create helpdesk instance manage_addHelpDesk(self, ID_HELPDESKAGENT, TITLE_HELPDESKAGENT, self.getAuthenticationToolPath(1)) #create and fill glossaries manage_addGlossaryCentre(self, ID_GLOSSARY_KEYWORDS, TITLE_GLOSSARY_KEYWORDS) self._getOb(ID_GLOSSARY_KEYWORDS).xliff_import(self.futRead(join(ENVPORTAL_PRODUCT_PATH, 'skel', 'others', 'glossary_keywords.xml'))) manage_addGlossaryCentre(self, ID_GLOSSARY_COVERAGE, TITLE_GLOSSARY_COVERAGE) self._getOb(ID_GLOSSARY_COVERAGE).xliff_import(self.futRead(join(ENVPORTAL_PRODUCT_PATH, 'skel', 'others', 'glossary_coverage.xml'))) #set glossary for pick lists self.keywords_glossary = ID_GLOSSARY_KEYWORDS self.coverage_glossary = ID_GLOSSARY_COVERAGE self._p_changed = 1
def loadDefaultData(self): """ """ #set default 'Naaya' configuration NySite.__dict__['createPortalTools'](self) NySite.__dict__['loadDefaultData'](self) #load site skeleton - configuration self.loadSkeleton(join(CHM2_PRODUCT_PATH, 'skel')) #remove Naaya default content self.getLayoutTool().manage_delObjects('skin') #set default PhotoFolder manage_addNyPhotoFolder(self, ID_PHOTOARCHIVE, TITLE_PHOTOARCHIVE) self._getOb(ID_PHOTOARCHIVE).approveThis() #create and configure LinkChecker instance manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType(METATYPE_NYURL) linkchecker_ob.manage_addProperty(METATYPE_NYURL, 'locator') for k,v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p) #create helpdesk instance manage_addHelpDesk(self, ID_HELPDESKAGENT, TITLE_HELPDESKAGENT, self.getAuthenticationToolPath(1)) #create NaayaCalendar instance manage_addEventCalendar(self, id="portal_calendar", title='Calendar of Events', description='', day_len='2', cal_meta_types='Naaya Event', start_day='Monday', catalog=self.getCatalogTool().id, REQUEST=None) #create index for Naaya Calendar extra=Extra_for_DateRangeIndex(since_field='start_date', until_field='end_date') self.getCatalogTool().manage_addIndex("resource_interval", 'DateRangeIndex', extra=extra) #create and fill glossaries manage_addGlossaryCentre(self, ID_GLOSSARY_KEYWORDS, TITLE_GLOSSARY_KEYWORDS) self._getOb(ID_GLOSSARY_KEYWORDS).xliff_import(self.futRead(join(CHM2_PRODUCT_PATH, 'skel', 'others', 'glossary_keywords.xml'))) self.add_glossary_coverage() #portal_map custom index custom_map_index = self.futRead(join(CHM2_PRODUCT_PATH, 'skel', 'others', 'map_index.zpt')) portal_map = self.getGeoMapTool() manage_addPageTemplate(portal_map, id='map_index', title='', text='') map_index = portal_map._getOb(id='map_index') map_index.pt_edit(text=custom_map_index, content_type='') #set glossary for pick lists self.keywords_glossary = ID_GLOSSARY_KEYWORDS self.coverage_glossary = ID_GLOSSARY_COVERAGE self._p_changed = 1 #add Forum instance manage_addNyForum(self, id='portal_forum', title='CHM Forum', description='', categories=['CHM', 'Biodiversity', 'Other'], file_max_size=0, REQUEST=None)
def _install_link_checker(self): #create and configure LinkChecker instance try: from Products.NaayaLinkChecker.LinkChecker import manage_addLinkChecker except ImportError: zLOG.LOG('naaya.envirowindows', zLOG.WARNING, 'Mising Products.LinkChecker') return manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType('Naaya URL') linkchecker_ob.manage_addProperty('Naaya URL', 'locator') for k,v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p)
def install_finish(self, REQUEST): """ """ install_data = self.getSession(SESSION_INSTALL_DATA, self.getInstallData()) if install_data['location'] == '': l_location = self.utGetROOT() else: l_location = self.unrestrictedTraverse(install_data['location'], self.utGetROOT()) #create the portal with the default structure id = self.utCleanupId(install_data['id']) if not id: id = PREFIX_SITE + self.utGenRandomId(6) manage_addEnviroWindowsSite(l_location, id=id, title=install_data['site_title']) ob = l_location._getOb(id) #add user and role (admin) if install_data['username'] != '' and install_data['password'] != '': ob.getAuthenticationTool().manage_addUser( install_data['username'], install_data['password'], install_data['password'], ['Manager'], '', install_data['administrator_name'], install_data['administrator_name'], install_data['administrator_email']) try: REQUEST.SESSION.delete('site_errors') except: pass try: REQUEST.SESSION.delete('site_infos') except: pass #add and set defaut language properties_tool = ob.getPropertiesTool() for lang in install_data['languages']: properties_tool.manage_addLanguage(lang) #properties_tool.manage_changeDefaultLang(install_data['language']) #change portal metadata ob.admin_metadata( site_title=install_data['site_title'], site_subtitle=install_data['subtitle'], description=install_data['description'], publisher=install_data['publisher'], contributor=install_data['contributor'], creator=install_data['creator'], rights=install_data['rights'], ) #change portal layout ob.admin_layout(theMasterList=install_data['skin'], theSlaveList=install_data['skin_style']) #change portal logo if install_data['site_logo'] != 'Nothing': image_ob = ob.getLayoutTool()._getOb('logo.gif') image_ob.update_data(data=install_data['site_logo']) image_ob._p_changed = 1 #administrator area ob.admin_email(mail_server_name=install_data['mail_server_name'], mail_server_port=install_data['mail_server_port'], administrator_email=install_data['administrator_email'], notify_on_errors_email=install_data['notify_on_errors']) ob.admin_properties(http_proxy=install_data['http_proxy'], portal_url=install_data['portal_url']) #latest uploads & news ob.portal_syndication.latestuploads_rdf.manageProperties( title='Latest uploads', description='Latest uploads', numberofitems=install_data['number_latest_uploads']) ob.portal_syndication.latestnews_rdf.manageProperties( title='Latest news', description='Latest news', numberofitems=install_data['number_announcements']) #additional products for l_product in self.getProductsStruct(install_data).keys(): if l_product == 'Remote links checking': if flagNaayaLinkChecker == 1: #product is present, add instance manage_addLinkChecker( ob, self.getKeyForProduct(install_data, l_product, 'id'), self.getKeyForProduct(install_data, l_product, 'title')) linkchecker_metatype = [ 'Naaya URL', 'Naaya Folder', 'Naaya Document' ] ob.portal_linkchecker.use_catalog = 1 ob.portal_linkchecker.catalog_name = "portal_catalog" ob.portal_linkchecker.batch_size = 20 #add default Linkchecker metatype for meta in linkchecker_metatype: ob.portal_linkchecker.manage_addMetaType(MetaType=meta) if meta == 'Naaya URL': ob.portal_linkchecker.manage_addProperty( MetaType=meta, Property='description') ob.portal_linkchecker.manage_addProperty( MetaType=meta, Property='locator') elif meta == 'Naaya Folder': ob.portal_linkchecker.manage_addProperty( MetaType=meta, Property='description') elif meta == 'Naaya Document': ob.portal_linkchecker.manage_addProperty( MetaType=meta, Property='description') ob.portal_linkchecker.manage_addProperty( MetaType=meta, Property='body') elif l_product == 'Discussion forum': if flagNaayaForum == 1: #product is present, add instance manage_addNyForum( ob, self.getKeyForProduct(install_data, l_product, 'id'), self.getKeyForProduct(install_data, l_product, 'title'), self.getKeyForProduct(install_data, l_product, 'description')) current_per = ob.getAuthenticationTool().getPermission( 'Add comments') current_per['permissions'].append( 'Add Naaya Forum Message') ob.getAuthenticationTool().editPermission( name='Authenticated', permissions=current_per) # send emails to appliants: administrator and contact p_to = [ install_data['administrator_email'], install_data['contact_email'] ] new_status = APPLICATION_STATUS_APPROVED p_from = self.unrestrictedTraverse( install_data['applications_url']).email_from #p_from = self. manuale = 'http://ew.eea.europa.eu/naaya/' p_subject = 'Your portal application on EnviroWindows has been approved' p_content = """ You have applied for an EnviroWindows-compliant portal hosted on the EnviroWindows servers. The application has been approved and your portal has been created at: %s An account was created for you on this portal with management rights: Username: %s Password: %s In order to get help on content contribution and portal administration, please consult: %s Regards, EnviroWindows Team **************************************************** IMPORTANT NOTICE: This is an automatic service. Please do not reply to this message. **************************************************** """ % (ob.absolute_url(), install_data['username'], install_data['password'], manuale) self.unrestrictedTraverse( install_data['ewindows_portal_url']).getEmailTool().sendEmail( p_content, p_to, p_from, p_subject) DestinationURL = install_data['DestinationURL'] self.delSession(SESSION_INSTALL_DATA) if DestinationURL == 'manage_main': return self.manage_main(self, REQUEST, update_menu=1) else: return REQUEST.RESPONSE.redirect('%s?action=finish' % DestinationURL)
def loadDefaultData(self): """ """ # set default 'Naaya' configuration NySite.__dict__["createPortalTools"](self) NySite.__dict__["loadDefaultData"](self) # load site skeleton - configuration self.loadSkeleton(join(CHM2_PRODUCT_PATH, "skel")) # remove Naaya default content self.getLayoutTool().manage_delObjects("skin") # set default PhotoFolder manage_addNyPhotoFolder(self, ID_PHOTOARCHIVE, TITLE_PHOTOARCHIVE) self._getOb(ID_PHOTOARCHIVE).approveThis() # create and configure LinkChecker instance manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy="", batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType(METATYPE_NYURL) linkchecker_ob.manage_addProperty(METATYPE_NYURL, "locator") for k, v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p) # create helpdesk instance manage_addHelpDesk(self, ID_HELPDESKAGENT, TITLE_HELPDESKAGENT, self.getAuthenticationToolPath(1)) # create NaayaCalendar instance manage_addEventCalendar( self, id="portal_calendar", title="Calendar of Events", description="", day_len="2", cal_meta_types="Naaya Event", start_day="Monday", catalog=self.getCatalogTool().id, REQUEST=None, ) # create index for Naaya Calendar extra = Extra_for_DateRangeIndex(since_field="start_date", until_field="end_date") self.getCatalogTool().manage_addIndex("resource_interval", "DateRangeIndex", extra=extra) # create and fill glossaries manage_addGlossaryCentre(self, ID_GLOSSARY_KEYWORDS, TITLE_GLOSSARY_KEYWORDS) self._getOb(ID_GLOSSARY_KEYWORDS).xliff_import( self.futRead(join(CHM2_PRODUCT_PATH, "skel", "others", "glossary_keywords.xml")) ) self.add_glossary_coverage() # portal_map custom index custom_map_index = self.futRead(join(CHM2_PRODUCT_PATH, "skel", "others", "map_index.zpt")) portal_map = self.getGeoMapTool() manage_addPageTemplate(portal_map, id="map_index", title="", text="") map_index = portal_map._getOb(id="map_index") map_index.pt_edit(text=custom_map_index, content_type="") # set glossary for pick lists self.keywords_glossary = ID_GLOSSARY_KEYWORDS self.coverage_glossary = ID_GLOSSARY_COVERAGE self._p_changed = 1 # add Forum instance manage_addNyForum( self, id="portal_forum", title="CHM Forum", description="", categories=["CHM", "Biodiversity", "Other"], file_max_size=0, REQUEST=None, )
def loadDefaultData(self, load_glossaries=[], skel_handler=None): """ """ # set default 'Naaya' configuration NySite.__dict__['createPortalTools'](self) NySite.__dict__['loadDefaultData'](self) # remove Naaya default content layout_tool = self.getLayoutTool() naaya_skins = [skin.getId() for skin in layout_tool.objectValues('Naaya Skin')] logos = [image.getId() for image in layout_tool.objectValues('Image')] layout_tool.manage_delObjects(naaya_skins + logos) # load site skeleton - configuration if skel_handler is not None: self._load_skel_from_handler(skel_handler) # set default PhotoFolder addNyPhotoGallery(self, id='PhotoGallery', title=TITLE_PHOTOARCHIVE) self._getOb('PhotoGallery').approveThis() # create and configure LinkChecker instance manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType(METATYPE_NYURL) linkchecker_ob.manage_addProperty(METATYPE_NYURL, 'locator') for k, v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p) # set default main topics self.getPropertiesTool().manageMainTopics(['convention', 'cooperation', 'network', 'information']) # create NaayaCalendar instance manage_addEventCalendar( self, id="portal_calendar", title='Calendar of Events', description='', day_len='2', start_day='Monday', catalog=self.getCatalogTool().id, REQUEST=None) calendar = self._getOb('portal_calendar') calendar.cal_meta_types = calendar.setCalMetaTypes('Naaya Event') # create index for Naaya Calendar extra = Extra_for_DateRangeIndex(since_field='start_date', until_field='end_date') self.getCatalogTool().manage_addIndex("resource_interval", 'DateRangeIndex', extra=extra) # create and fill glossaries if 'coverage' in load_glossaries: self.add_glossary_coverage() if 'keywords' in load_glossaries: self.add_glossary_keywords() if 'chm_terms' in load_glossaries: self.add_chm_terms_glossary() # set glossary for pick lists self._p_changed = 1 # add Forum instance addNyForum(self, id='portal_forum', title='CHM Forum', description='', categories=['CHM', 'Biodiversity', 'Other'], file_max_size=0, REQUEST=None) # add EC CHM to network portals list self.admin_addnetworkportal('EC CHM', 'http://biodiversity-chm.eea.europa.eu/') # enable some notifications self['portal_notification'].config['enable_monthly'] = True portal_layout = self['portal_layout'] if 'chm3' in portal_layout.objectIds(): portal_layout['chm3']._setProperty('main_section_image_size', '978x75') portal_layout['chm3']._setProperty('slider_image_size', '978x240')
def afterSetUp(self): self.login() portal = self.app.portal manage_addLinkChecker(portal, 'linkchecker', 'Link Checker')
def loadDefaultData(self, load_glossaries=[], skel_handler=None): """ """ #set default 'Naaya' configuration NySite.__dict__['createPortalTools'](self) NySite.__dict__['loadDefaultData'](self) #remove Naaya default content layout_tool = self.getLayoutTool() naaya_skins = [ skin.getId() for skin in layout_tool.objectValues('Naaya Skin') ] logos = [image.getId() for image in layout_tool.objectValues('Image')] layout_tool.manage_delObjects(naaya_skins + logos) #load site skeleton - configuration if skel_handler is not None: self._load_skel_from_handler(skel_handler) #set default PhotoFolder addNyPhotoGallery(self, id='PhotoGallery', title=TITLE_PHOTOARCHIVE) self._getOb('PhotoGallery').approveThis() #create and configure LinkChecker instance manage_addLinkChecker(self, ID_LINKCHECKER, TITLE_LINKCHECKER) linkchecker_ob = self._getOb(ID_LINKCHECKER) linkchecker_ob.manage_edit(proxy='', batch_size=10, catalog_name=ID_CATALOGTOOL) linkchecker_ob.manage_addMetaType(METATYPE_NYURL) linkchecker_ob.manage_addProperty(METATYPE_NYURL, 'locator') for k, v in self.get_content_urls().items(): linkchecker_ob.manage_addMetaType(k) for p in v: linkchecker_ob.manage_addProperty(k, p) #set default main topics self.getPropertiesTool().manageMainTopics( ['convention', 'cooperation', 'network', 'information']) #create NaayaCalendar instance manage_addEventCalendar(self, id="portal_calendar", title='Calendar of Events', description='', day_len='2', start_day='Monday', catalog=self.getCatalogTool().id, REQUEST=None) calendar = self._getOb('portal_calendar') calendar.cal_meta_types = calendar.setCalMetaTypes('Naaya Event') #create index for Naaya Calendar extra = Extra_for_DateRangeIndex(since_field='start_date', until_field='end_date') self.getCatalogTool().manage_addIndex("resource_interval", 'DateRangeIndex', extra=extra) #create and fill glossaries if 'coverage' in load_glossaries: self.add_glossary_coverage() if 'keywords' in load_glossaries: self.add_glossary_keywords() if 'chm_terms' in load_glossaries: self.add_chm_terms_glossary() #set glossary for pick lists self._p_changed = 1 #add Forum instance addNyForum(self, id='portal_forum', title='CHM Forum', description='', categories=['CHM', 'Biodiversity', 'Other'], file_max_size=0, REQUEST=None) #add EC CHM to network portals list self.admin_addnetworkportal('EC CHM', 'http://biodiversity-chm.eea.europa.eu/') # enable some notifications self['portal_notification'].config['enable_monthly'] = True portal_layout = self['portal_layout'] if 'chm3' in portal_layout.objectIds(): portal_layout['chm3']._setProperty('main_section_image_size', '978x75') portal_layout['chm3']._setProperty('slider_image_size', '978x240')
def install_finish(self, REQUEST): """ """ install_data = self.getSession(SESSION_INSTALL_DATA, self.getInstallData()) if install_data['location'] == '': l_location = self.utGetROOT() else: l_location = self.unrestrictedTraverse(install_data['location'], self.utGetROOT()) #create the portal with the default structure id = self.utCleanupId(install_data['id']) if not id: id = PREFIX_SITE + self.utGenRandomId(6) manage_addEnviroWindowsSite(l_location, id=id, title=install_data['site_title']) ob = l_location._getOb(id) #add user and role (admin) if install_data['username'] != '' and install_data['password'] != '': ob.getAuthenticationTool().manage_addUser(install_data['username'], install_data['password'], install_data['password'], ['Manager'], '', install_data['administrator_name'], install_data['administrator_name'], install_data['administrator_email']) try: REQUEST.SESSION.delete('site_errors') except: pass try: REQUEST.SESSION.delete('site_infos') except: pass #add and set defaut language properties_tool = ob.getPropertiesTool() for lang in install_data['languages']: properties_tool.manage_addLanguage(lang) #properties_tool.manage_changeDefaultLang(install_data['language']) #change portal metadata ob.admin_metadata( site_title=install_data['site_title'], site_subtitle=install_data['subtitle'], description=install_data['description'], publisher=install_data['publisher'], contributor=install_data['contributor'], creator=install_data['creator'], rights=install_data['rights'], ) #change portal layout ob.admin_layout( theMasterList=install_data['skin'], theSlaveList=install_data['skin_style'] ) #change portal logo if install_data['site_logo'] != 'Nothing': image_ob = ob.getLayoutTool()._getOb('logo.gif') image_ob.update_data(data=install_data['site_logo']) image_ob._p_changed=1 #administrator area ob.admin_email(mail_server_name=install_data['mail_server_name'], mail_server_port=install_data['mail_server_port'], administrator_email=install_data['administrator_email'], notify_on_errors_email=install_data['notify_on_errors'] ) ob.admin_properties(http_proxy=install_data['http_proxy'], portal_url=install_data['portal_url'] ) #latest uploads & news ob.portal_syndication.latestuploads_rdf.manageProperties(title='Latest uploads', description='Latest uploads', numberofitems=install_data['number_latest_uploads'] ) ob.portal_syndication.latestnews_rdf.manageProperties(title='Latest news', description='Latest news', numberofitems=install_data['number_announcements'] ) #additional products for l_product in self.getProductsStruct(install_data).keys(): if l_product == 'Remote links checking': if flagNaayaLinkChecker == 1: #product is present, add instance manage_addLinkChecker(ob, self.getKeyForProduct(install_data, l_product, 'id'), self.getKeyForProduct(install_data, l_product, 'title') ) linkchecker_metatype = ['Naaya URL', 'Naaya Folder', 'Naaya Document'] ob.portal_linkchecker.use_catalog = 1 ob.portal_linkchecker.catalog_name="portal_catalog" ob.portal_linkchecker.batch_size = 20 #add default Linkchecker metatype for meta in linkchecker_metatype: ob.portal_linkchecker.manage_addMetaType(MetaType=meta) if meta == 'Naaya URL': ob.portal_linkchecker.manage_addProperty(MetaType=meta, Property='description') ob.portal_linkchecker.manage_addProperty(MetaType=meta, Property='locator') elif meta == 'Naaya Folder': ob.portal_linkchecker.manage_addProperty(MetaType=meta, Property='description') elif meta == 'Naaya Document': ob.portal_linkchecker.manage_addProperty(MetaType=meta, Property='description') ob.portal_linkchecker.manage_addProperty(MetaType=meta, Property='body') elif l_product == 'Discussion forum': if flagNaayaForum == 1: #product is present, add instance manage_addNyForum(ob, self.getKeyForProduct(install_data, l_product, 'id'), self.getKeyForProduct(install_data, l_product, 'title'), self.getKeyForProduct(install_data, l_product, 'description') ) current_per = ob.getAuthenticationTool().getPermission('Add comments') current_per['permissions'].append('Add Naaya Forum Message') ob.getAuthenticationTool().editPermission(name='Authenticated', permissions=current_per) # send emails to appliants: administrator and contact p_to = [install_data['administrator_email'], install_data['contact_email']] new_status = APPLICATION_STATUS_APPROVED p_from = self.unrestrictedTraverse(install_data['applications_url']).email_from #p_from = self. manuale = 'http://ew.eea.europa.eu/naaya/' p_subject = 'Your portal application on EnviroWindows has been approved' p_content = """ You have applied for an EnviroWindows-compliant portal hosted on the EnviroWindows servers. The application has been approved and your portal has been created at: %s An account was created for you on this portal with management rights: Username: %s Password: %s In order to get help on content contribution and portal administration, please consult: %s Regards, EnviroWindows Team **************************************************** IMPORTANT NOTICE: This is an automatic service. Please do not reply to this message. **************************************************** """ % (ob.absolute_url(), install_data['username'], install_data['password'], manuale) self.unrestrictedTraverse(install_data['ewindows_portal_url']).getEmailTool().sendEmail(p_content, p_to, p_from, p_subject) DestinationURL = install_data['DestinationURL'] self.delSession(SESSION_INSTALL_DATA) if DestinationURL == 'manage_main': return self.manage_main(self, REQUEST, update_menu=1) else: return REQUEST.RESPONSE.redirect('%s?action=finish' % DestinationURL)