def __call__(self): # Make sure that the current user is allowed to reply: if not self.canReply(): raise Unauthorized, \ _(u"You do not have permission to respond to this message.") # Save the referring URL, either from the template form, or the # HTTP_REFERER, otherwise just use the message url. referring_url = (self.request.get('referring_url', None) or self.request.get('HTTP_REFERER', None) or self.context.absolute_url()) self.referring_url = urllib.splitquery(referring_url)[0] submitted = self.request.get('submit', None) cancelled = self.request.get('cancel', None) if cancelled: portal_status_msg = _(u"Reply Cancelled") return self.request.response.redirect(self.referring_url + '?portal_status_message=%s' % (portal_status_msg)) if submitted: self.errors = {} ml = self.getMailingList() body = decode(self.request.get('body', None), ml) subject = decode(self.request.get('subject', None), ml) if not body or body == self.reply_body(use_empty=True): self.errors['body'] = _(u'You must enter a message') if not subject: self.errors['subject'] = _( u'You must enter a subject for your message.') if not self.member_address(): self.errors['subject'] = _(u'The current user has no address.') if not self.errors: message = self.createReply() self.request.set('Mail', message) result = ml.processMail(self.request) if result == POST_ALLOWED: portal_status_msg = _(u"Post Sent") return self.request.response.redirect( self.referring_url + '?portal_status_message=%s' % (portal_status_msg)) elif result == POST_DEFERRED: portal_status_msg = _(u"Post Pending Moderation") return self.request.response.redirect( self.referring_url + '?portal_status_message=%s' % (portal_status_msg)) elif result == POST_DENIED: portal_status_msg = _( u"Post Rejected: You already have a post pending moderation." ) return self.request.response.redirect( self.referring_url + '?portal_status_message=%s' % (portal_status_msg)) else: portal_status_msg = _(u"Post Error") return self.request.response.redirect( self.referring_url + '?portal_status_message=%s' % (portal_status_msg)) return self.index()
def __call__(self): # Make sure that the current user is allowed to reply: if not self.canReply(): raise Unauthorized, \ "You do not have permission to respond to this message." # Save the referring URL, either from the template form, or the # HTTP_REFERER, otherwise just use the message url. referring_url = (self.request.get('referring_url', None) or self.request.get('HTTP_REFERER', None) or self.context.absolute_url()) self.referring_url = urllib.splitquery(referring_url)[0] submitted = self.request.get('submit', None) cancelled = self.request.get('cancel', None) if cancelled: return self.request.response.redirect(self.referring_url+ '?portal_status_message=Reply%20Cancelled') if submitted: self.errors = {} ml = self.getMailingList() body = decode(self.request.get('body', None), ml) subject = decode(self.request.get('subject', None), ml) if not body or body == self.reply_body(use_empty=True): self.errors['body'] = _(u'You must enter a message') if not subject: self.errors['subject'] = _( u'You must enter a subject for your message.') if not self.member_address(): self.errors['subject'] = _(u'The current user has no address.') if not self.errors: message = self.createReply() self.request.set('Mail', message) result = ml.processMail(self.request) if result == POST_ALLOWED: return self.request.response.redirect(self.referring_url+ '?portal_status_message=Post%20Sent') elif result == POST_DEFERRED: return self.request.response.redirect(self.referring_url+ '?portal_status_message=Post%20Pending%20Moderation') elif result == POST_DENIED: return self.request.response.redirect(self.referring_url+ '?portal_status_message=Post%20Rejected:%20You%20already%20have%20a%20post%20pending%20moderation.') else: return self.request.response.redirect(self.referring_url+ '?portal_status_message=Post%20Error') return self.index()
def _searchArchive(self, text=None): messages = [] batch = self.request.get('batch', True) batch_size = int(self.request.get('b_size', 25)) batch_start = int(self.request.get('b_start', 0)) text = text or decode(self.request.get('search_text'), '') context = self.context subscription = IMembershipList(self.getMailingList()) if text: text = text.strip() try: messages = self.search.search(text) except ParseTree.ParseError, inst: if "Token 'ATOM' required, 'EOF' found" in str(inst) or "Token 'EOF' required" in str(inst): self.request.set('portal_status_message', _(u'Invalid Search: Search phrase cannot end with \'and\', \'or\', or \'not\'')) elif "Token 'ATOM' required" in str(inst): self.request.set('portal_status_message', _(u'Invalid Search: Search phrase cannot begin with \'and\', \'or\', or \'not\'')) elif "a term must have at least one positive word" in str(inst): self.request.set('portal_status_message', _(u'Invalid Search: Search phrase cannot begin with \'not\'')) elif "Query contains only common words" in str(inst): self.request.set('portal_status_message', _(u'Invalid Search: Search phrase must contain words other than \'and\', \'or\', and \'not\'')) else: messages = catalogMessageIterator(messages, sub_mgr=subscription) if len(messages) == 0: self.request.set('portal_status_message', _(u'There were no messages found'))
def createMessage(self): """Generate a basic message, MailBoxer will take care of all the important headers, hopefully.""" headers = {'Message-Id': self.new_message_id(), 'Date': self.rfc_date(),} ml = self.getMailingList() encoding = getSiteEncoding(ml) body = decode(self.request.get('body'), ml) subject = decode(self.request.get('subject'), ml) message = construct_simple_encoded_message(from_addr=self.member_address(), to_addr=self.list_address(), subject=subject, body=body, other_headers=headers, encoding=encoding) return message.as_string()
def createMessage(self): """Generate a basic message, MailBoxer will take care of all the important headers, hopefully.""" headers = { 'Message-Id': self.new_message_id(), 'Date': self.rfc_date(), } ml = self.getMailingList() encoding = getSiteEncoding(ml) body = decode(self.request.get('body'), ml) subject = decode(self.request.get('subject'), ml) message = construct_simple_encoded_message( from_addr=self.member_address(), to_addr=self.list_address(), subject=subject, body=body, other_headers=headers, encoding=encoding) return message.as_string()
def _searchArchive(self, text=None): messages = [] batch = self.request.get('batch', True) batch_size = int(self.request.get('b_size', 25)) batch_start = int(self.request.get('b_start', 0)) text = text or decode(self.request.get('search_text'), '') context = self.context subscription = IMembershipList(self.getMailingList()) if text: text = text.strip() try: messages = self.search.search(text) except ParseTree.ParseError, inst: if "Token 'ATOM' required, 'EOF' found" in str( inst) or "Token 'EOF' required" in str(inst): self.request.set( 'portal_status_message', _(u'Invalid Search: Search phrase cannot end with \'and\', \'or\', or \'not\'' )) elif "Token 'ATOM' required" in str(inst): self.request.set( 'portal_status_message', _(u'Invalid Search: Search phrase cannot begin with \'and\', \'or\', or \'not\'' )) elif "a term must have at least one positive word" in str( inst): self.request.set( 'portal_status_message', _(u'Invalid Search: Search phrase cannot begin with \'not\'' )) elif "Query contains only common words" in str(inst): self.request.set( 'portal_status_message', _(u'Invalid Search: Search phrase must contain words other than \'and\', \'or\', and \'not\'' )) else: messages = catalogMessageIterator(messages, sub_mgr=subscription) if len(messages) == 0: self.request.set('portal_status_message', _(u'There were no messages found'))