Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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"),
            )
Ejemplo n.º 4
0
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 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'))
Ejemplo n.º 6
0
    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