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)
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)
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)
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')
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)
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)
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"))
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'
def title(self): return _(u"My Messages")