def approve(self): self.in_moderation_queue = False author_name, author_address = parseaddr(self.mime_message['From']) self.group.add_email_to_whitelist(author_address) from ututi.model.events import ModeratedPostCreated event = meta.Session.query(ModeratedPostCreated).filter_by(message_id=self.id).one() meta.Session.delete(event) meta.Session.commit() self.send(self.group.recipients_mailinglist())
def _ml_event_data(self, evt): if evt.event_type in ['mailinglist_post_created', 'moderated_post_created']: evt['ml_message'] = email.message_from_string(evt.ml_original, UtutiEmail).getBody() if evt.author_id is not None: evt['ml_author'] = evt.author_id evt['ml_author_logo_link'] = url(controller='user', action='logo', width=50, id=evt.author_id) else: mimemsg = mimetools.Message(StringIO(evt.ml_original)) u_name, u_email = parseaddr(decode_and_join_header(mimemsg['From'])) evt['ml_author'] = AnonymousUser(u_name, u_email) evt['ml_author_logo_link'] = evt.ml_author.url(action='logo', width=50)
def fromMessageText(cls, message_text, force=False): message = cls.parseMessage(message_text) message_id = message.getMessageId() g = message.getGroup() #use the numerical group id if g is None: return group_id = g.id if cls.get(message_id, group_id): raise MessageAlreadyExists(message_id, group_id) mime_message = mimetools.Message(StringIO(message_text)) author_name, author_address = parseaddr(mime_message['From']) author = User.get_global(author_address) in_moderation_queue = False whitelist = [i.email for i in g.whitelist] + [ config.get('ututi_email_from', '*****@*****.**')] if not (author_address in whitelist or author is not None and g.is_member(author) or force): if g.mailinglist_moderated: in_moderation_queue = True else: return # Bounce reply_to_message_id = message.getHeader('in-reply-to') reply_to = cls.get(reply_to_message_id, group_id) # XXX Hacky way to find messages this message might be a reply to if not reply_to: sbj = message.getSubject() parts = sbj.split(':') if len(parts) > 1: real_sbj = parts[-1].strip() reply_to = meta.Session.query(cls).filter_by(subject=real_sbj, group_id=group_id).first() return cls(message_text, message_id, group_id, message.getSubject(), message.getDate(), reply_to, in_moderation_queue)
def getAuthor(self): author_name, author_address = parseaddr(self.getHeader("from")) return User.get_global(author_address)
def getAuthor(self): author_name, author_address = parseaddr(self.mime_message['From']) return User.get_global(author_address)
def author_or_anonymous(self): if self.author: return self.author else: name, email = parseaddr(decode_and_join_header(self.mime_message['From'])) return AnonymousUser(name, email)