def insert_reply(request): try: group_name = request.POST['group_name'].encode('ascii', 'ignore') subject = request.POST['subject'].encode('ascii', 'ignore') msg_text = request.POST['msg_text'].encode('ascii', 'ignore') msg_id = request.POST['msg_id'].encode('ascii', 'ignore') thread_id = request.POST['thread_id'].encode('ascii', 'ignore') poster_email = request.POST['poster_email'].encode('ascii', 'ignore') res = engine.main.insert_reply(group_name, subject, msg_text, poster_email, msg_id, thread_id) res.update({'user': request.session[SESSION_KEY]}) if(res['status']): new_msg_id = res['msg_id'] thread_id = res['thread_id'] to_send = res['recipients'] post_addr = '%s <%s>' %(group_name, group_name + '+' + str(thread_id) + '+' + str(new_msg_id) + POST_SUFFIX + '@' + HOST) mail = MailResponse(From = poster_email, To = post_addr, Subject = '%s' %(subject)) mail['References'] = msg_id mail['message-id'] = new_msg_id ps_blurb = html_ps(thread_id, msg_id, group_name, HOST) mail.Html = msg_text + ps_blurb logging.debug('TO LIST: ' + str(to_send)) if(len(to_send)>0): relay_mailer.deliver(mail, To = to_send) return HttpResponse(json.dumps(res), mimetype="application/json") except Exception, e: print sys.exc_info() logging.debug(e) return HttpResponse(request_error, mimetype="application/json")
def handle_reply(message, group_name=None, thread_id=None, msg_id=None, suffix=None, host=None): name, addr = parseaddr(message['from'].lower()) msg_id = msg_id.lower() group_name = group_name.lower() msg_text = get_body(str(message)) res = insert_reply(group_name, message['Subject'], msg_text['body'], addr, msg_id, thread_id) if(not res['status']): mail = MailResponse(From = NO_REPLY, To = addr, Subject = "Error", Body = "Error Message:%s" %(res['code'])) relay.deliver(mail) return msg_id = res['msg_id'] to_send = res['recipients'] post_addr = '%s <%s>' %(group_name, group_name + '+' + str(thread_id) + '+' + str(msg_id) + POST_SUFFIX + '@' + host) mail = MailResponse(From = message['From'], To = post_addr, Subject = message['Subject']) if 'references' in message: mail['References'] = message['References'] elif 'message-id' in message: mail['References'] = message['message-id'] mail['message-id'] = msg_id ps_blurb = html_ps(thread_id, msg_id, group_name, host) mail.Html = unicode(msg_text['body'] + ps_blurb , "utf-8") logging.debug('TO LIST: ' + str(to_send)) if(len(to_send) > 0): relay.deliver(mail, To = to_send)
def handle_post(message, address=None, host=None): address = address.lower() name, addr = parseaddr(message['From'].lower()) reserved = filter(lambda x: address.endswith(x), RESERVED) if(reserved): return group_name = address.lower() subject = '[ %s ] -- %s' %(group_name, message['Subject'].encode('ascii', 'ignore')) msg_text = get_body(str(message)) res = insert_post(group_name, subject, msg_text['body'], addr) if(not res['status']): mail = MailResponse(From = NO_REPLY, To = addr, Subject = "Error", Body = "Error Message:%s" %(res['code'])) relay.deliver(mail) return msg_id = res['msg_id'] thread_id = res['thread_id'] to_send = res['recipients'] post_addr = '%s <%s>' %(group_name, group_name + '+' + str(thread_id) + '+' + str(msg_id) + POST_SUFFIX + '@' + host) mail = MailResponse(From = message['From'], To = post_addr, Subject = subject) if 'references' in message: mail['References'] = message['References'] elif 'message-id' in message: mail['References'] = message['message-id'] mail['message-id'] = msg_id ps_blurb = html_ps(thread_id, msg_id, group_name, host) mail.Html = unicode(msg_text['body'] + ps_blurb , "utf-8") logging.debug('TO LIST: ' + str(to_send)) if(len(to_send)>0): relay.deliver(mail, To = to_send)
def add_members(group_name, emails, user): res = {'status':False} try: group = Group.objects.get(name=group_name) is_public = group.public is_admin = False if user: membergroup = MemberGroup.objects.get(group=group, member=user) is_admin = membergroup.admin if is_public or is_admin: email_list = emails.strip().lower().split(',') for email in email_list: email = email.strip() email_user = UserProfile.objects.filter(email=email) member = False if email_user.count() == 1: member = MemberGroup.objects.filter(member=email_user[0], group=group).exists() if not member: mail = MailResponse(From = 'no-reply@' + BASE_URL, To = email, Subject = "You've been subscribed to %s Mailing List" % (group_name)) if email_user.count() == 1: _ = MemberGroup.objects.get_or_create(member=email_user[0], group=group) message = "You've been subscribed to %s Mailing List. <br />" % (group_name) message += "To see posts from this list, visit <a href='http://%s/posts?group_name=%s'>http://%s/posts?group_name=%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) message += "To manage your mailing list settings, subscribe, or unsubscribe, visit <a href='http://%s/groups/%s'>http://%s/groups/%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) else: pw = password_generator() new_user = UserProfile.objects.create_user(email, pw) _ = MemberGroup.objects.get_or_create(group=group, member=new_user) message = "You've been subscribed to %s Mailing List. <br />" % (group_name) message += "An account to manage your settings has been created for you at <a href='http://%s'>http://%s</a><br />" % (BASE_URL, BASE_URL) message += "Your username is your email, which is %s and your auto-generated password is %s <br />" % (email, pw) message += "If you would like to change your password, please log in at the link above and then you can change it under your settings. <br />" message += "To see posts from this list, visit <a href='http://%s/posts?group_name=%s'>http://%s/posts?group_name=%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) message += "To manage your mailing lists, subscribe, or unsubscribe from groups, visit <a href='http://%s/groups'>http://%s/my_groups</a><br />" % (BASE_URL, BASE_URL) mail.Html = message logging.debug('TO LIST: ' + str(email)) relay_mailer.deliver(mail, To = [email]) res['status'] = True else: res['code'] = msg_code['PRIVILEGE_ERROR'] except Group.DoesNotExist: res['code'] = msg_code['GROUP_NOT_FOUND_ERROR'] except MemberGroup.DoesNotExist: res['code'] = msg_code['NOT_MEMBER'] except: res['code'] = msg_code['UNKNOWN_ERROR'] logging.debug(res) return res
def add_members(group_name, emails, user): res = {'status':False} try: group = Group.objects.get(name=group_name) membergroup = MemberGroup.objects.get(group=group, member=user) if membergroup.admin: email_list = emails.strip().lower().split(',') for email in email_list: email = email.strip() mail = MailResponse(From = 'no-reply@' + BASE_URL, To = email, Subject = "You've been subscribed to %s Mailing List" % (group_name)) email_user = UserProfile.objects.filter(email=email) if email_user.count() == 1: _ = MemberGroup.objects.get_or_create(member=email_user[0], group=group) message = "You've been subscribed to %s Mailing List. <br />" % (group_name) message += "To see posts from this list, visit <a href='http://%s/posts?group_name=%s'>http://%s/posts?group_name=%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) message += "To manage your mailing list settings, subscribe, or unsubscribe, visit <a href='http://%s/groups/%s'>http://%s/groups/%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) else: pw = password_generator() new_user = UserProfile.objects.create_user(email, pw) _ = MemberGroup.objects.get_or_create(group=group, member=new_user) message = "You've been subscribed to %s Mailing List. <br />" % (group_name) message += "An account has been created for you at <a href='http://%s'>http://%s</a><br />" % (BASE_URL, BASE_URL) message += "Your username is your email, which is %s and your auto-generated password is %s <br />" % (email, pw) message += "If you would like to change your password, please log in at the link above and then you can change it under your settings. <br />" message += "To see posts from this list, visit <a href='http://%s/posts?group_name=%s'>http://%s/posts?group_name=%s</a><br />" % (BASE_URL, group_name, BASE_URL, group_name) message += "To manage your mailing lists, subscribe, or unsubscribe from groups, visit <a href='http://%s/groups'>http://%s/my_groups</a><br />" % (BASE_URL, BASE_URL) mail.Html = message logging.debug('TO LIST: ' + str(email)) relay_mailer.deliver(mail, To = [email]) res['status'] = True else: res['code'] = msg_code['PRIVILEGE_ERROR'] except Group.DoesNotExist: res['code'] = msg_code['GROUP_NOT_FOUND_ERROR'] except MemberGroup.DoesNotExist: res['code'] = msg_code['NOT_MEMBER'] except: res['code'] = msg_code['UNKNOWN_ERROR'] logging.debug(res) return res
def upvote(post_id, email=None, user=None): res = {'status':False} p = None try: if email: user = UserProfile.objects.get(email=email) #Email the owner of the post when upvoted email_addr = email.strip() mail = MailResponse(From = 'no-reply@' + BASE_URL, To = email_addr, Subject = "Your Post Has Been Upvoted") #email_user = UserProfile.objects.filter(email=email_addr) message = "Your post %s has been upvoted by %s" % (post_id, user) mail.Html = message logging.debug('TO LIST: ' + str(email_addr)) relay_mailer.deliver(mail, To = [email_addr]) p = Post.objects.get(id=int(post_id)) l = Upvote.objects.get(post=p, user=user) res['status'] = True res['thread_id'] = p.thread.id res['post_name'] = p.subject res['post_id'] = p.id res['group_name'] = p.group.name except UserProfile.DoesNotExist: res['code'] = msg_code['USER_DOES_NOT_EXIST'] % email except Upvote.DoesNotExist: l = Upvote(post=p, user=user) l.save() res['status'] = True res['thread_id'] = p.thread.id res['post_name'] = p.subject res['post_id'] = p.id res['group_name'] = p.group.name except: res['code'] = msg_code['UNKNOWN_ERROR'] logging.debug(res) return res
def upvote(post_id, email=None, user=None): res = {'status': False} p = None try: if email: user = UserProfile.objects.get(email=email) #Email the owner of the post when upvoted email_addr = email.strip() mail = MailResponse(From='no-reply@' + BASE_URL, To=email_addr, Subject="Your Post Has Been Upvoted") #email_user = UserProfile.objects.filter(email=email_addr) message = "Your post %s has been upvoted by %s" % (post_id, user) mail.Html = message logging.debug('TO LIST: ' + str(email_addr)) relay_mailer.deliver(mail, To=[email_addr]) p = Post.objects.get(id=int(post_id)) l = Upvote.objects.get(post=p, user=user) res['status'] = True res['thread_id'] = p.thread.id res['post_name'] = p.subject res['post_id'] = p.id res['group_name'] = p.group.name except UserProfile.DoesNotExist: res['code'] = msg_code['USER_DOES_NOT_EXIST'] % email except Upvote.DoesNotExist: l = Upvote(post=p, user=user) l.save() res['status'] = True res['thread_id'] = p.thread.id res['post_name'] = p.subject res['post_id'] = p.id res['group_name'] = p.group.name except: res['code'] = msg_code['UNKNOWN_ERROR'] logging.debug(res) return res