def testGetAddresses2(self): """Information entered in portal. Note: Portal has just one email address which is used for sender and receiver. """ utool = getToolByName(self.shop, "portal_url") portal = utool.getPortalObject() mail = IMailSchema(portal) # Just address is entered mail.set_email_from_address("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>",)) # Address and name is entered mail.set_email_from_name("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>",))
def setupVarious(context): if context.readDataFile('notes.rrhh_various.txt') is None: return portal = context.getSite() # permetre @. als usernames portal.portal_registration.manage_editIDPattern('^[A-Za-z][A-Za-z0-9_\-@.]*$') # configurem mail mail = IMailSchema(portal) mail.smtp_host = u'localhost' mail.email_from_name = "Administrador Web RRHH" mail.email_from_address = "*****@*****.**" portal.setTitle("Recursos Humans UPCnet") langtool = getToolByName(portal, 'portal_languages') langtool.manage_setLanguageSettings(defaultLanguage='ca', supportedLanguages=['ca'], setUseCombinedLanguageCodes=0, setForcelanguageUrls=0, setPathN=1, setCookieN=1, setAllowContentLanguageFallback=0, setRequestN=0, startNeutral=1, displayFlags=False)
def setupVarious(context): if context.readDataFile('notes.rrhh_various.txt') is None: return portal = context.getSite() # permetre @. als usernames portal.portal_registration.manage_editIDPattern( '^[A-Za-z][A-Za-z0-9_\-@.]*$') # configurem mail mail = IMailSchema(portal) mail.smtp_host = u'localhost' mail.email_from_name = "Administrador Web RRHH" mail.email_from_address = "*****@*****.**" portal.setTitle("Recursos Humans UPCnet") langtool = getToolByName(portal, 'portal_languages') langtool.manage_setLanguageSettings(defaultLanguage='ca', supportedLanguages=['ca'], setUseCombinedLanguageCodes=0, setForcelanguageUrls=0, setPathN=1, setCookieN=1, setAllowContentLanguageFallback=0, setRequestN=0, startNeutral=1, displayFlags=False)
def unmaintained_testFormat(self): expected_mail = u"""Dear Mr admins, On ... you presented your text \tTest PresentationArticleReview No 0s on recensio.net, but so far no comments have been left by other users. Do you want to modify your presentation? You could review the phrasing of your core statements or extend the number of stated reference authors. Usually these will be contacted by the recensio.net editorial staff, which greatly adds to the visibility of a presentation. If you haven’t done this yet, you may also add cover images and indeces (in the case of presentations of monographs). If you have any further questions or require more information please feel free to contact the recensio.net editorial team: Recensio.net <fake>. Yours sincerely The recensio.net editorial team""" portal = self.layer["portal"] feeds = portal["RSS-feeds"] request = self.layer["request"] directlyProvides(request, IRecensioLayer) setRoles(portal, TEST_USER_ID, ["Manager"]) login(portal, TEST_USER_NAME) alsoProvides(request, IDefaultBrowserLayer) mail_schema = IMailSchema(portal) mail_schema.email_from_address = "fake" membership_tool = getToolByName(portal, "portal_membership") user = membership_tool.getMemberById("admin") user.setProperties({"email": "*****@*****.**"}) view = getMultiAdapter((feeds, request), name="mail_uncommented_presentations") class MockMailHost(object): sentMail = "" def send(self, messageText, mto, mfrom, subject, charset): self.sentMail = messageText view.mailhost = MockMailHost() presentation = feeds.aq_parent.Members["fake_member"].objectValues()[0] criteria = feeds.discussion_three_months_old.crit__created_ATFriendlyDateCriteria good_creation_time = DateTime() - criteria.value presentation.setCreationDate(good_creation_time) getMultiAdapter((presentation, request), name="solr-maintenance").reindex() view() for lineno, (expected, real) in enumerate(zip(expected_mail.split("\n"), view.mailhost.sentMail.split("\n"))): self.assertTrue( compare(expected, real), ( "Error in Line %i:\nExp:\n%s\nGot:\n%s" % ( lineno, "\n".join(expected_mail.split("\n")[max(0, lineno - 2) : lineno + 3]), "\n".join(view.mailhost.sentMail.split("\n")[max(0, lineno - 2) : lineno + 3]), ) ).encode("ascii", "ignore"), )
def render(self, portal=None): portal = api.portal.get() mail = IMailSchema(portal) path = portal.absolute_url() host = mail.smtp_host name = mail.email_from_name email = mail.email_from_address return (path, host, name, email)
def configure_email(site, server, port, username, password, name, sender): setSite(site) # needs to be set for IMailSchema to work mail = IMailSchema(site) mail.smtp_host = unicode(server) mail.smtp_port = int(port) mail.smtp_userid = unicode(username) mail.smtp_pass = unicode(password) mail.email_from_address = unicode(sender) mail.email_from_name = unicode(name)
def testGetAddresses2(self): """Information entered in portal. Note: Portal has just one email address which is used for sender and receiver. """ utool = getToolByName(self.shop, "portal_url") portal = utool.getPortalObject() mail = IMailSchema(portal) # Just address is entered mail.set_email_from_address("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>", )) # Address and name is entered mail.set_email_from_name("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>", ))
def render(self, portal=None): from genweb.controlpanel.interface import IGenwebControlPanelSettings from plone.app.controlpanel.site import ISiteSchema import unicodedata import types if CSRF: alsoProvides(self.request, IDisableCSRFProtection) portal = api.portal.get() mail = IMailSchema(portal) name = mail.email_from_name if name is not None: name = unicodedata.normalize('NFKD', name).encode('utf-8', errors='ignore') email = mail.email_from_address site = ISiteSchema(portal) ga = '\n'.join(site.webstats_js) if ga is not '': ga = unicodedata.normalize('NFKD', ga).encode('utf-8', errors='ignore') registry = queryUtility(IRegistry) gwcps = registry.forInterface(IGenwebControlPanelSettings) html_title_ca = gwcps.html_title_ca if html_title_ca is not None and type( html_title_ca) != types.BooleanType: html_title_ca = unicodedata.normalize( 'NFKD', gwcps.html_title_ca).encode('utf-8', errors='ignore') html_title_es = gwcps.html_title_es if html_title_es is not None and type( html_title_es) != types.BooleanType: html_title_es = unicodedata.normalize( 'NFKD', gwcps.html_title_es).encode('utf-8', errors='ignore') html_title_en = gwcps.html_title_en if html_title_en is not None and type( html_title_en) != types.BooleanType: html_title_en = unicodedata.normalize( 'NFKD', gwcps.html_title_en).encode('utf-8', errors='ignore') signatura_unitat_ca = gwcps.signatura_unitat_ca if signatura_unitat_ca is not None and type( signatura_unitat_ca) != types.BooleanType: signatura_unitat_ca = unicodedata.normalize( 'NFKD', gwcps.signatura_unitat_ca).encode('utf-8', errors='ignore') signatura_unitat_es = gwcps.signatura_unitat_es if signatura_unitat_es is not None and type( signatura_unitat_es) != types.BooleanType: signatura_unitat_es = unicodedata.normalize( 'NFKD', gwcps.signatura_unitat_es).encode('utf-8', errors='ignore') signatura_unitat_en = gwcps.signatura_unitat_en if signatura_unitat_en is not None and type( signatura_unitat_en) != types.BooleanType: signatura_unitat_en = unicodedata.normalize( 'NFKD', gwcps.signatura_unitat_en).encode('utf-8', errors='ignore') right_logo_enabled = gwcps.right_logo_enabled if right_logo_enabled is not None and type( right_logo_enabled) != types.BooleanType: right_logo_enabled = unicodedata.normalize( 'NFKD', gwcps.right_logo_enabled).encode('utf-8', errors='ignore') right_logo_alt = gwcps.right_logo_alt if right_logo_alt is not None and type( right_logo_alt) != types.BooleanType: right_logo_alt = unicodedata.normalize( 'NFKD', gwcps.right_logo_alt).encode('utf-8', errors='ignore') meta_author = gwcps.meta_author if meta_author is not None and type(meta_author) != types.BooleanType: meta_author = unicodedata.normalize( 'NFKD', gwcps.meta_author).encode('utf-8', errors='ignore') contacte_id = gwcps.contacte_id if contacte_id is not None and type(contacte_id) != types.BooleanType: contacte_id = unicodedata.normalize( 'NFKD', gwcps.contacte_id).encode('utf-8', errors='ignore') contacte_BBDD_or_page = gwcps.contacte_BBDD_or_page if contacte_BBDD_or_page is not None and type( contacte_BBDD_or_page) != types.BooleanType: contacte_BBDD_or_page = unicodedata.normalize( 'NFKD', gwcps.contacte_BBDD_or_page).encode('utf-8', errors='ignore') contacte_al_peu = gwcps.contacte_al_peu if contacte_al_peu is not None and type( contacte_al_peu) != types.BooleanType: contacte_al_peu = unicodedata.normalize( 'NFKD', gwcps.contacte_al_peu).encode('utf-8', errors='ignore') directori_upc = gwcps.directori_upc if directori_upc is not None and type( directori_upc) != types.BooleanType: directori_upc = unicodedata.normalize( 'NFKD', gwcps.directori_upc).encode('utf-8', errors='ignore') directori_filtrat = gwcps.directori_filtrat if directori_filtrat is not None and type( directori_filtrat) != types.BooleanType: directori_filtrat = unicodedata.normalize( 'NFKD', gwcps.directori_filtrat).encode('utf-8', errors='ignore') contacte_no_upcmaps = gwcps.contacte_no_upcmaps if contacte_no_upcmaps is not None and type( contacte_no_upcmaps) != types.BooleanType: contacte_no_upcmaps = unicodedata.normalize( 'NFKD', gwcps.contacte_no_upcmaps).encode('utf-8', errors='ignore') contacte_multi_email = gwcps.contacte_multi_email if contacte_multi_email is not None and type( contacte_multi_email) != types.BooleanType: contacte_multi_email = unicodedata.normalize( 'NFKD', gwcps.contacte_multi_email).encode('utf-8', errors='ignore') contact_emails_table = gwcps.contact_emails_table especific1 = gwcps.especific1 if especific1 is not None and type(especific1) != types.BooleanType: especific1 = unicodedata.normalize( 'NFKD', gwcps.especific1).encode('utf-8', errors='ignore') especific2 = gwcps.especific2 if especific2 is not None and type(especific2) != types.BooleanType: especific2 = unicodedata.normalize( 'NFKD', gwcps.especific2).encode('utf-8', errors='ignore') treu_imatge_capsalera = gwcps.treu_imatge_capsalera if treu_imatge_capsalera is not None and type( treu_imatge_capsalera) != types.BooleanType: treu_imatge_capsalera = unicodedata.normalize( 'NFKD', gwcps.treu_imatge_capsalera).encode('utf-8', errors='ignore') treu_menu_horitzontal = gwcps.treu_menu_horitzontal if treu_menu_horitzontal is not None and type( treu_menu_horitzontal) != types.BooleanType: treu_menu_horitzontal = unicodedata.normalize( 'NFKD', gwcps.treu_menu_horitzontal).encode('utf-8', errors='ignore') treu_icones_xarxes_socials = gwcps.treu_icones_xarxes_socials if treu_icones_xarxes_socials is not None and type( treu_icones_xarxes_socials) != types.BooleanType: treu_icones_xarxes_socials = unicodedata.normalize( 'NFKD', gwcps.treu_icones_xarxes_socials).encode('utf-8', errors='ignore') amaga_identificacio = gwcps.amaga_identificacio if amaga_identificacio is not None and type( amaga_identificacio) != types.BooleanType: amaga_identificacio = unicodedata.normalize( 'NFKD', gwcps.amaga_identificacio).encode('utf-8', errors='ignore') idiomes_publicats = gwcps.idiomes_publicats languages_link_to_root = gwcps.languages_link_to_root if languages_link_to_root is not None and type( languages_link_to_root) != types.BooleanType: languages_link_to_root = unicodedata.normalize( 'NFKD', gwcps.languages_link_to_root).encode('utf-8', errors='ignore') idestudi_master = gwcps.idestudi_master if idestudi_master is not None and type( idestudi_master) != types.BooleanType: idestudi_master = unicodedata.normalize( 'NFKD', gwcps.idestudi_master).encode('utf-8', errors='ignore') create_packet = gwcps.create_packet if create_packet is not None and type( create_packet) != types.BooleanType: create_packet = unicodedata.normalize( 'NFKD', gwcps.create_packet).encode('utf-8', errors='ignore') cl_title_ca = gwcps.cl_title_ca if cl_title_ca is not None and type(cl_title_ca) != types.BooleanType: cl_title_ca = unicodedata.normalize( 'NFKD', gwcps.cl_title_ca).encode('utf-8', errors='ignore') cl_url_ca = gwcps.cl_url_ca cl_img_ca = gwcps.cl_img_ca if cl_img_ca is not None and type(cl_img_ca) != types.BooleanType: cl_img_ca = unicodedata.normalize('NFKD', gwcps.cl_img_ca).encode( 'utf-8', errors='ignore') cl_open_new_window_ca = gwcps.cl_open_new_window_ca if cl_open_new_window_ca is not None and type( cl_open_new_window_ca) != types.BooleanType: cl_open_new_window_ca = unicodedata.normalize( 'NFKD', gwcps.cl_open_new_window_ca).encode('utf-8', errors='ignore') cl_enable_ca = gwcps.cl_enable_ca if cl_enable_ca is not None and type( cl_enable_ca) != types.BooleanType: cl_enable_ca = unicodedata.normalize( 'NFKD', gwcps.cl_enable_ca).encode('utf-8', errors='ignore') cl_title_es = gwcps.cl_title_es if cl_title_es is not None and type(cl_title_es) != types.BooleanType: cl_title_es = unicodedata.normalize( 'NFKD', gwcps.cl_title_es).encode('utf-8', errors='ignore') cl_url_es = gwcps.cl_url_es cl_img_es = gwcps.cl_img_es if cl_img_es is not None and type(cl_img_es) != types.BooleanType: cl_img_es = unicodedata.normalize('NFKD', gwcps.cl_img_es).encode( 'utf-8', errors='ignore') cl_open_new_window_es = gwcps.cl_open_new_window_es if cl_open_new_window_es is not None and type( cl_open_new_window_es) != types.BooleanType: cl_open_new_window_es = unicodedata.normalize( 'NFKD', gwcps.cl_open_new_window_es).encode('utf-8', errors='ignore') cl_enable_es = gwcps.cl_enable_es if cl_enable_es is not None and type( cl_enable_es) != types.BooleanType: cl_enable_es = unicodedata.normalize( 'NFKD', gwcps.cl_enable_es).encode('utf-8', errors='ignore') cl_title_en = gwcps.cl_title_en if cl_title_en is not None and type(cl_title_en) != types.BooleanType: cl_title_en = unicodedata.normalize( 'NFKD', gwcps.cl_title_en).encode('utf-8', errors='ignore') cl_url_en = gwcps.cl_url_en cl_img_en = gwcps.cl_img_en if cl_img_en is not None and type(cl_img_en) != types.BooleanType: cl_img_en = unicodedata.normalize('NFKD', gwcps.cl_img_en).encode( 'utf-8', errors='ignore') cl_open_new_window_en = gwcps.cl_open_new_window_en if cl_open_new_window_en is not None and type( cl_open_new_window_en) != types.BooleanType: cl_open_new_window_en = unicodedata.normalize( 'NFKD', gwcps.cl_open_new_window_en).encode('utf-8', errors='ignore') cl_enable_en = gwcps.cl_enable_en if cl_enable_en is not None and type( cl_enable_en) != types.BooleanType: cl_enable_en = unicodedata.normalize( 'NFKD', gwcps.cl_enable_en).encode('utf-8', errors='ignore') output = """Títol del web amb HTML tags (negretes) [CA]: {}<br/> Títol del web amb HTML tags (negretes) [ES]: {}<br/> Títol del web amb HTML tags (negretes) [EN]: {}<br/> Signatura de la unitat [CA]: {}<br/> Signatura de la unitat [ES]: {}<br/> Signatura de la unitat [EN]: {}<br/> Mostrar logo dret: {}<br/> Text alternatiu del logo dret: {}<br/> Meta author tag content: {}<br/> ID contacte de la unitat: {}<br/> Pàgina de contacte alternativa: {}<br/> Adreça de contacte al peu: {}<br/> Directori UPC a les eines: {}<br/> Filtrat per unitat?: {}<br/> Desactivar UPCmaps: {}<br/> Seleccionar l'adreça d'enviament: {}<br/> Contact emails: {}<br/> Color específic 1: {}<br/> Color específic 2: {}<br/> Treu la imatge de la capçalera: {}<br/> Treu el menú horitzontal: {}<br/> Treu les icones per compartir en xarxes socials: {}<br/> Amaga l'enllaç d'identificació de les eines: {}<br/> Idiomes publicats al web: {}<br/> Redireccionar a l'arrel del lloc al clicar sobre els idiomes del portal: {}<br/> id_estudi: {}<br/> Crear informació general del màster: {}<br/> Link title [CA]: {}<br/> Enllaç per al menú superior: {}<br/> Enllaç per a la icona del menú superior: {}<br/> Obre en una nova finestra: {}<br/> Publica l'enllaç customitzat: {}<br/> Link title [ES]: {}<br/> Enllaç per al menú superior: {}<br/> Enllaç per a la icona del menú superior: {}<br/> Obre en una nova finestra: {}<br/> Publica l'enllaç customitzat: {}<br/> Link title [EN]: {}<br/> Enllaç per al menú superior: {}<br/> Enllaç per a la icona del menú superior: {}<br/> Obre en una nova finestra: {}<br/> Publica l'enllaç customitzat: {}<br/> Nom 'De' del lloc: {}<br/> Adreça 'De' del lloc: {}<br/> Javascript per al suport d'estadístiques web: {}<br/></br> """.format( html_title_ca, html_title_es, html_title_en, signatura_unitat_ca, signatura_unitat_es, signatura_unitat_en, right_logo_enabled, right_logo_alt, meta_author, contacte_id, contacte_BBDD_or_page, contacte_al_peu, directori_upc, directori_filtrat, contacte_no_upcmaps, contacte_multi_email, contact_emails_table, especific1, especific2, treu_imatge_capsalera, treu_menu_horitzontal, treu_icones_xarxes_socials, amaga_identificacio, idiomes_publicats, languages_link_to_root, idestudi_master, create_packet, cl_title_ca, cl_url_ca, cl_img_ca, cl_open_new_window_ca, cl_enable_ca, cl_title_es, cl_url_es, cl_img_es, cl_open_new_window_es, cl_enable_es, cl_title_en, cl_url_en, cl_img_en, cl_open_new_window_en, cl_enable_en, name, email, ga) return output
def unmaintained_testFormat(self): expected_mail = {'Review Monograph': [u'''From: Recensio.net <fake> To: Recensio.net <fake> Bcc: [email protected] Subject: Benachrichtigung über Kommentareingang Sehr geehrte/r Tadeusz Kotłowski, zu Ihrer Schrift Tadeusz Kotłowski: Test ReviewMonograph No 0: Dzieje państwa i społeczeństwa 1890–1945, 2008, 978-83-60448-39-7 (rezensiert von Стоичков, Христо) erschien eine Rezension in der Zeitschrift Zeitschrift 1, Summer, Issue 2. Diese Rezension wurde auf der Rezensionsplattform recensio.net publiziert. Jack Commenter hat am ... diese Rezension bzw. Ihre Schrift kommentiert. Sie haben hier die Gelegenheit, den Kommentar zu lesen und ggf. darauf zu reagieren: http://nohost/plone/sample-reviews/newspapera/summer/issue-2/ReviewMonograph... Für Rückfragen steht Ihnen die recensio.net-Redaktion gern zur Verfügung: Recensio.net <fake>. Mit freundlichen Grüßen, Ihr recensio.net-Team''', u'''From: Recensio.net <fake> To: [email protected] Bcc: [email protected] Subject: Benachrichtigung über Kommentareingang Sehr geehrte/r Hugh Commenter, Sie haben die Schrift bzw. die Internetressource Tadeusz Kotłowski: Test ReviewMonograph No 0: Dzieje państwa i społeczeństwa 1890–1945, 2008, 978-83-60448-39-7 (rezensiert von Стоичков, Христо) in Zeitschrift 1, Summer, Issue 2 auf recensio.net kommentiert. Jack Commenter hat am ... einen weiteren Kommentar abgegeben. Sie haben hier die Gelegenheit, diesen zu lesen und ggf. darauf zu reagieren: http://nohost/plone/sample-reviews/newspapera/summer/issue-2/ReviewMonograph... Für Rückfragen steht Ihnen die recensio.net-Redaktion gern zur Verfügung: Recensio.net <fake>. Mit freundlichen Grüßen, Ihr recensio.net-Team'''], 'Presentation Article Review': [u'''From: Recensio.net <fake> To: [email protected] Bcc: [email protected] Subject: Benachrichtigung über Kommentareingang Sehr geehrte/r Hugh Commenter, Sie haben die Schrift bzw. die Internetressource Tadeusz Kotłowski: Test PresentationArticleReview No 0: Dzieje państwa i społeczeństwa 1890–1945, 2008, (präsentiert von Стоичков, Христо) auf recensio.net kommentiert. Jack Commenter hat am ... einen weiteren Kommentar abgegeben. Sie haben hier die Gelegenheit, diesen zu lesen und ggf. darauf zu reagieren: http://nohost/plone/Members/fake_member/PresentationArticleReview... Für Rückfragen steht Ihnen die recensio.net-Redaktion gern zur Verfügung: Recensio.net <fake>. Mit freundlichen Grüßen, Ihr recensio.net-Team''']} portal = self.layer['portal'] reviews = [portal['sample-reviews']['newspapera']['summer']['issue-2'].objectValues()[0], portal.Members['fake_member'].objectValues()[0]] request = self.layer['request'] directlyProvides(request, IRecensioLayer) setRoles(portal, TEST_USER_ID, ['Manager']) login(portal, TEST_USER_NAME) alsoProvides(request, IDefaultBrowserLayer) membership_tool = getToolByName(portal, 'portal_membership') membership_tool.addMember('commenter', '12345', [], [], properties={'email': '*****@*****.**', 'preferred_language': 'de'}) membership_tool.addMember('commenter2', '12345', [], [], properties={'email': '*****@*****.**', 'preferred_language': 'de'}) for review in reviews: conversation = IConversation(aq_inner(review)) comment = createObject('plone.Comment') comment.author_username = '******' comment.author_name = 'Jack Commenter' comment.author_email = '*****@*****.**' comment.text = 'Comment Text!' conversation.addComment(comment) comment2 = createObject('plone.Comment') comment2.author_username = '******' comment2.author_name = 'Hugh Commenter' comment2.author_email = '*****@*****.**' comment2.text = 'Second Comment Text!' conversation.addComment(comment2) mail_schema = IMailSchema(portal) mail_schema.email_from_address = 'fake' comment2 = conversation.items()[0][1] view = getMultiAdapter((comment2, request), name='notify_author_new_comment') class MockMailHost(object): sentMail = [] def send(self, messageText, mto, mfrom, subject, charset): self.sentMail.append(messageText) view.mailhost = MockMailHost() #view.ts = getToolByName(portal, 'translation_service') view() self.assertEquals(len(view.mailhost.sentMail), len(expected_mail[review.portal_type])) for i in range(len(view.mailhost.sentMail)): for lineno, (expected, real) in enumerate( zip(expected_mail[review.portal_type][i].split('\n'), view.mailhost.sentMail[i].split('\n'))): self.assertTrue(compare(expected, real), ("Error in Line %i:\nExp:\n%s\nGot:\n%s" % (lineno, '<<<\n'.join(expected_mail[review.portal_type][i].split('\n')[max(0, lineno-2):lineno+3]), '<<<\n'.join(view.mailhost.sentMail[i].split('\n')[max(0, lineno-2):lineno+3]))).encode('ascii', 'ignore'))
def createContent(self): """ """ # configurem mail portal = getToolByName(self,'portal_url').getPortalObject() mail = IMailSchema(portal) mail.smtp_host = u'localhost' mail.email_from_name = "Administrador del Genweb" mail.email_from_address = "*****@*****.**" if getattr(portal,'front-page',False): portal.manage_delObjects('front-page') if getattr(portal,'news',False): if not self.getObjectStatus(portal.news): portal.manage_delObjects('news') if getattr(portal,'events',False): if not self.getObjectStatus(portal.events): portal.manage_delObjects('events') if getattr(portal,'Members',False): portal['Members'].setExcludeFromNav(True) portal['Members'].reindexObject() portal['Members'].setLanguage('en') # Crear carpetes i coleccions, linkades per language, el primer language de la tupla es el canonical news = self.crearObjecte(portal,'news','Folder','News','Site News',constrains=(['News Item'],['Image'])) noticias = self.crearObjecte(portal,'noticias','Folder','Noticias','Noticias del sitio',constrains=(['News Item'],['Image'])) noticies = self.crearObjecte(portal,'noticies','Folder','Notícies','Notícies del lloc',constrains=(['News Item'],['Image'])) self.setLanguageAndLink([(noticies,'ca'),(noticias,'es'),(news,'en')]) self.addCollection(news,'aggregator','News','Site News','News Item') self.addCollection(noticias,'aggregator','Noticias','Noticias del sitio','News Item') self.addCollection(noticies,'aggregator','Notícies','Notícies del lloc','News Item') self.setLanguageAndLink([(noticies.aggregator,'ca'),(noticias.aggregator,'es'),(news.aggregator,'en')]) noticies.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) noticias.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) news.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) events = self.crearObjecte(portal,'events','Folder','Events','Site Events',constrains=(['Event','Meeting'],['Image'])) eventos = self.crearObjecte(portal,'eventos','Folder','Eventos','Eventos del sitio',constrains=(['Event','Meeting'],['Image'])) esdeveniments = self.crearObjecte(portal,'esdeveniments','Folder','Esdeveniments','Esdeveniments del lloc',constrains=(['Event','Meeting'],['Image'])) self.setLanguageAndLink([(esdeveniments,'ca'),(eventos,'es'),(events,'en')]) self.addCollection(events,'aggregator','Events','Site Events',('Event','Meeting'),date_filter=True) self.addCollection(eventos,'aggregator','Eventos','Eventos del sitio',('Event','Meeting'),date_filter=True) self.addCollection(esdeveniments,'aggregator','Esdeveniments','Esdeveniments del lloc',('Event','Meeting'),date_filter=True) self.setLanguageAndLink([(esdeveniments.aggregator,'ca'),(eventos.aggregator,'es'),(events.aggregator,'en')]) esdeveniments.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) eventos.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) events.aggregator.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) self.addCollection(events.aggregator,'previous','Past Events','Events which have already happened. ','Event',dateRange=u'-',operation=u'less',setDefault=False,path='grandfather',date_filter=True) self.addCollection(eventos.aggregator,'anteriores','Eventos pasados','Eventos del sitio que ya han sucedido','Event',dateRange=u'-',operation=u'less',setDefault=False,path='grandfather',date_filter=True) self.addCollection(esdeveniments.aggregator,'anteriors','Esdeveniments passats','Esdeveniments del lloc que ja han passat','Event',dateRange=u'-',operation=u'less',setDefault=False,path='grandfather',date_filter=True) self.setLanguageAndLink([(esdeveniments.aggregator.anteriors,'ca'),(eventos.aggregator.anteriores,'es'),(events.aggregator.previous,'en')]) banners_en = self.crearObjecte(portal,'banners-en','BannerContainer','Banners','English Banners') banners_es = self.crearObjecte(portal,'banners-es','BannerContainer','Banners','Banners en Español') banners_ca = self.crearObjecte(portal,'banners-ca','BannerContainer','Banners','Banners en Català') self.setLanguageAndLink([(banners_ca,'ca'),(banners_es,'es'),(banners_en,'en')]) logosfooter_en = self.crearObjecte(portal,'logosfooter-en','Logos_Container','Footer Logos','English footer logos') logosfooter_es = self.crearObjecte(portal,'logosfooter-es','Logos_Container','Logos pie','Logos en español del pie de página') logosfooter_ca = self.crearObjecte(portal,'logosfooter-ca','Logos_Container','Logos peu','Logos en català del peu de pàgina') self.setLanguageAndLink([(logosfooter_ca,'ca'),(logosfooter_es,'es'),(logosfooter_en,'en')]) #crear pagines de benvinguda welcome_string="""<h1>Us donem la benvinguda a Genweb UPC v3</h1> <div id="content-core"> <p> </p> <p><a href="http://www.upc.edu/comunicacio/www/genweb-upc"><img alt="Genweb UPC" class="image-right" src="logogw.gif" /></a></p> <p>A partir d'aquest moment, ja podeu introduir continguts al vostre espai <a href="http://www.upc.edu/comunicacio/www/genweb-upc" target="_blank">Genweb</a>. A més, us oferim l'allotjament del vostre espai, <a href="http://www.upc.edu/comunicacio/www/dominis-upc" target="_blank">un domini upc.edu</a>, estadístiques, formació i suport tècnic.</p> <h2>Abans d'utilitzar Genweb...</h2> <p>Consulteu el <a href="http://www.upc.edu/comunicacio/www/genweb-upc/formacio/genweb3_manualUsuari.pdf" target="_blank">manual d'usuari</a> i els <a href="http://www.upc.edu/comunicacio/www/genweb-upc/formacio" target="_blank">videotutorials de formació</a>.<br /> Sempre tindreu accés a la formació i al suport tècnic a través de l'enllaç d'<a href="http://www.upc.edu/comunicacio/www/genweb-upc/formacio" target="_blank">ajuda</a> que apareix a les opcions d'usuari.</p> <h2>Les novetats...</h2> <p>El Genweb està a la última, més potent i adaptat<br /><br /></p> <ul> <li>Una <strong>imatge actualitzada </strong>al nou programari</li> <li><strong>TinyMCE</strong> és el nou editor del Genweb</li> <li>Edició més flexible:<strong> crea les teves pròpies </strong><strong>plantilles</strong></li> <li><strong>Genweb UPC v3 </strong>està desenvolupat amb el gestor de continguts de programari lliure <a href="http://www.plone.org" target="_blank">Plone 4.0</a>, basat en el servidor d'aplicacions Zope.</li> </ul> <h2>Participació...</h2> <p>Si teniu idees, necessitats o suggeriments per millorar el Genweb, ens ho podeu explicar a la nostra <a href="mailto:[email protected]">bústia</a>.</p> <p> </p> <p> </p> </div>""" benvingut = self.crearObjecte(portal,'benvingut','Document','Benvingut','') bienvenido = self.crearObjecte(portal,'bienvenido','Document','Bienvenido','') welcome = self.crearObjecte(portal,'welcome','Document','Welcome','') benvingut.setText(welcome_string, mimetype='text/html') bienvenido.setText(welcome_string, mimetype='text/html') welcome.setText(welcome_string, mimetype='text/html') benvingut.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) bienvenido.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) welcome.manage_permission(permissions.DeleteObjects, roles = ["Manager"], acquire=False) self.setLanguageAndLink([(benvingut,'ca'),(bienvenido,'es'),(welcome,'en')]) # Templates TinyMCE templates = self.crearObjecte(portal, 'templates', 'Folder', 'Templates', 'Plantilles per defecte administrades per l\'SCP.', constrains = (['Document'],[''])) plantilles = self.crearObjecte(portal, 'plantilles', 'Folder', 'Plantilles', 'En aquesta carpeta podeu posar les plantilles per ser usades a l\'editor.',constrains=(['Document'],[''])) pw = getToolByName(portal, "portal_workflow") pw.doActionFor(templates, "restrict") for plt in get_plantilles(): plantilla = self.crearObjecte(templates, normalizeString(plt['titol']), 'Document', plt['titol'], plt['resum'],'') plantilla.setText(plt['cos'],mimetype="text/html") return True