Пример #1
0
 def __call__(self):
     form = self.request.form
     if 'form.button.New' in form:
         url = self.context.absolute_url() + '/@@message_new'
         self.request.response.redirect(url)
         
     elif 'form.button.Reply' in form:
         entries = form.get('entries', [])
         if not entries:
             IStatusMessage(self.request).addStatusMessage(_('Choose one message'), type='error')
         elif len(entries) > 1:
             IStatusMessage(self.request).addStatusMessage(_('Choose only one message'), type='error')
         else:
             url = self.context.absolute_url() + '/@@message_new?id=' + str(entries[0])
             self.request.response.redirect(url)
     elif 'form.button.Delete' in form:
         entries = form.get('entries', [])
         try:
             self.delete()
         except ValueError, e:
             IStatusMessage(self.request).addStatusMessage(e.args[0], type='error')
         else:
             IStatusMessage(self.request).addStatusMessage(_(u"%s Message(s) delete"%(len(entries))), type='info')
             url = self.context.absolute_url() + '/@@messages'
             return self.request.response.redirect(url)
Пример #2
0
 def delete(self):
     form = self.request.form
     entries = form.get('entries', [])
     if not entries:
         raise ValueError(_(u"You must select at least one message"))
         
     manager = getUtility(IMessagesManager)    
     for msg in entries:
         manager.message_delete(msg)
Пример #3
0
 def message(self):
     form = self.request.form
     entries = form.get('id', None)
     if not entries:
         raise ValueError(_(u"There isn't message"))
         
     read_flag = form.get('read_flag', False)
     manager = getUtility(IMessagesManager)            
     return manager.message_by_id(entries, read_flag)
Пример #4
0
 def __call__(self):
     form = self.request.form
     if 'form.button.Send' in form:
         try:
             self.send()
             IStatusMessage(self.request).addStatusMessage(_(u"Message has been sent"), type='info')
             url = self.context.absolute_url() + '/@@messages'
             self.request.response.redirect(url)
 	        
         except ValueError, e:
             IStatusMessage(self.request).addStatusMessage(e.args[0], type='error')
Пример #5
0
    def __call__(self):
        form = self.request.form
        if 'form.button.New' in form:
            url = self.context.absolute_url() + '/@@message_new'
            self.request.response.redirect(url)

        elif 'form.button.Reply' in form:
            entries = form.get('id', None)
            if not entries:
                IStatusMessage(self.request).addStatusMessage(_("There isn't message"), type='error')
            else:
                url = self.context.absolute_url() + '/@@message_new?id=' + str(entries)
                self.request.response.redirect(url)
        elif 'form.button.Delete' in form:
            try:
                self.delete()
            except ValueError, e:
                IStatusMessage(self.request).addStatusMessage(e.args[0], type='error')
            else:
                IStatusMessage(self.request).addStatusMessage(_(u"Message(s) delete"), type='info')
                url = self.context.absolute_url() + '/@@messages'
                return self.request.response.redirect(url)
Пример #6
0
    def send_email(self, data, email):
        """Send the email to the user and redirect to the
        front page, showing a status message to say the message was received.
        """

        #context = aq_inner(self.context)

        #mailhost = getToolByName(context, 'MailHost')
        #urltool = getToolByName(context, 'portal_url')
        
        #portal = urltool.getPortalObject()
        #email_charset = portal.getProperty('email_charset')
        #title = portal.getProperty('title')
        # Construct and send a message
        source = "%s <%s>" % (self.portal_title, self.portal_email)
        subject = _('Nuevo mensaje en') + " " + self.portal_title  
        message = MESSAGE_TEMPLATE % data
	
	self.mailhost.secureSend(message, email, str(source),
                            subject=subject, subtype='plain',
                            charset=self.email_charset, debug=False,
                            From=source)
Пример #7
0
    def send(self):
        """
        """
        pg = getToolByName(self.context, 'portal_groups')
        membership = getToolByName(self.context, 'portal_membership')        
                        
        form = self.request.form
        user_list = form.get('user_list', [])
        if not user_list:
            raise ValueError(_(u"You must select at least one recipient"))
        
        subject = form.get('subject', None)
        if not subject:
            raise ValueError(_(u"The message has not subject"))
        
        body = form.get('body', '')
        category = form.get('category_id', 1)
        
        sender = membership.getAuthenticatedMember()
        fullname = sender.getProperty('fullname')
        senderId = sender.getId()
        manager = getUtility(IMessagesManager)
        
        data_sender = dict(name = fullname or senderId,
                    email = sender.getProperty('email', None)
                )
        
        
        for receiver in user_list:
            if receiver.startswith('g:'):
                logger.info("is a Group")
                group = pg.getGroupById(receiver[2:])
                if group:
                    members = group.getGroupMembers()
                    logger.info("have %s members" %(len(members)))
                    for member in members:
                        email = member.getProperty('email', None)
                        #brincar mensaje para uno mismo                            
                        manager.message_new(int(category), 
                                            senderId, 
                                            member.getId(), 
                                            subject, body)
                        logger.info("Message DB for %s"%(member.getId()))
                        if email:
                            try:
                                self.send_email(data_sender, email)
                                logger.info("Message E-Mail for %s"%(member.getId()))                       
                            except SMTPAuthenticationError, inst:                        
                                logger.error("Authentication error:" + str(inst))
                                #logger.error("Error while sending email to " + email)
                            #finally:
                                raise ValueError(_(u"One or more emails could not be sent. Please try again later or contact the site Administrator"))
                        else:
                            fullname = member.getProperty('fullname', None)
                            raise ValueError (_("User %s does not have e-mail account associated"%(fullname)))
                            
                    manager.message_new(3, receiver, senderId, subject, body, read_flag=True) # copy sent
                    logger.info("copy sent")

            else:
                member = membership.getMemberById(receiver)
                email = member.getProperty('email', None)
                
                manager.message_new(int(category), sender.getId(), receiver, subject, body)
                #Make the same email on Sent items
                manager.message_new(3, receiver, sender.getId(), subject, body, read_flag=True)
                
                if email:
                    try :
                        self.send_email(data_sender, email)
                    except SMTPAuthenticationError, inst:                        
                        logger.error("Authentication error:" + str(inst))
                        logger.error("Error while sending email to " + email)
                    #finally:
                        raise ValueError (_(u"The mail could not be sent. Please try again later"))
Пример #8
0
from Products.Five.browser import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

from Products.CMFCore.utils import getToolByName
from Products.statusmessages.interfaces import IStatusMessage

from plone.memoize.instance import memoize

from eduintelligent.messages.interfaces import IMessagesManager
from eduintelligent.messages import messagesMessageFactory as _
from eduintelligent.messages import logger

MESSAGE_TEMPLATE = _(u"""\

Acaban de enviarle un mensaje personal de parte de %(name)s <%(email)s> 
para recuperarlo debe ir a: http://iservices.com.mx/

IMPORTANTE: Recuerde, esto es solamente una notificacion. Por favor, no respondas a este e-mail. 

""")


class MessagesView(BrowserView):
    """
    """
    
    template = ViewPageTemplateFile('templates/messages.pt')
    
    def __call__(self):
        form = self.request.form
        if 'form.button.New' in form:
            url = self.context.absolute_url() + '/@@message_new'
Пример #9
0
 def title(self):
     return _(u"My Messages")