Beispiel #1
0
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")
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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