Example #1
0
def send_message(request, data, is_registered, source=None):
	dajax = Dajax()

#	sender = request.user
	if is_registered:
		form = ComposeForm(QueryDict(data))
		if form.is_valid():
			sender = str(request.user.client)

			lines = []
			lines.append("From: %s" % sender)
			lines.append("Email: %s" % request.user.email)
			lines.append("")
			lines.append("Subject: %s" % form.cleaned_data['subject'])
			lines.append("")
			lines.append(form.cleaned_data['body'])

			message = "\n".join(lines)

			ctx = {
				"SITE_NAME": settings.SITE_NAME,
				"sender": sender,
				"message": message,
				"reply_url": absolute_url(reverse('messages_inbox'))
			}

			subject = render_to_string("account/emails/send_message_unregistered_subject.txt", ctx)

			send_hs_mail(subject, "account/emails/send_message_unregistered_body.txt", ctx, settings.DEFAULT_FROM_EMAIL, [form.cleaned_data['recipient'][0].email])

	else:
		qd = QueryDict(data)

		try:
			recipient = Healer.objects.get(user__username__iexact=qd['recipient_username'])
		except Healer.DoesNotExist:
			return

		form = ComposeFormUnregistered(qd)
		form.recipient = recipient.user.email

	dajax.remove_css_class('#new_message_form input','error')
	dajax.remove_css_class('#new_message_form textarea','error')
	if form.is_valid():
		m = form.save(sender=request.user)
		if source:
			MessageExtra.objects.create(message=m[0], source=source)
#		request.user.message_set.create(
#			message=_(u"Message successfully sent."))
#		success_url = reverse('messages_inbox')
#		if request.GET.has_key('next'):
#			success_url = request.GET['next']

		dajax.script("new_message_success();")

	else:
		for error in form.errors:
			if error == "captcha":
				css_class = '#new_message_form #id_%s_1'
			else:
				css_class = '#new_message_form #id_%s'
			dajax.add_css_class(css_class % error,'error')

	#update captcha
	challenge, response = captcha_settings.get_challenge()()
	store = CaptchaStore.objects.create(challenge=challenge, response=response)
	dajax.assign('img.captcha', 'src', reverse('captcha-image',kwargs=dict(key=store.hashkey)))
	dajax.assign('#id_msg_security_verification_0', 'value', store.hashkey)
	dajax.assign('#id_msg_security_verification_1', 'value', '')

	return dajax.json()

#def new_message_form_processor(request):
#
#	if request.user.is_authenticated():
#		new_message_form = ComposeForm()
#	else:
#		new_message_form = None
#
#	return { "new_message_form" : new_message_form }
Example #2
0
	def post(self, request, format=None):
		try:
			data = request.POST['data'].encode('utf-8')
			source = request.POST.get('source', None)
		except:
			return HttpResponseBadRequest()

		if request.user.is_authenticated():
			form = ComposeForm(QueryDict(data))
			if form.is_valid():
				sender = str(request.user.client)

				lines = []
				lines.append("From: %s" % sender)
				lines.append("Email: %s" % request.user.email)
				lines.append("")
				lines.append("Subject: %s" % form.cleaned_data['subject'])
				lines.append("")
				lines.append(form.cleaned_data['body'])

				message = "\n".join(lines)

				ctx = {
					"SITE_NAME": settings.SITE_NAME,
					"sender": sender,
					"message": message,
					"reply_url": absolute_url(reverse('messages_inbox'))
				}

				subject = render_to_string("account/emails/send_message_unregistered_subject.txt", ctx)

				send_hs_mail(subject, "account/emails/send_message_unregistered_body.txt", ctx, settings.DEFAULT_FROM_EMAIL, [form.cleaned_data['recipient'][0].email])

		else:
			qd = QueryDict(data)

			try:
				recipient = Healer.objects.get(user__username__iexact=qd['recipient_username'])
			except Healer.DoesNotExist:
				return

			form = ComposeFormUnregistered(qd)
			form.recipient = recipient.user.email

		if form.is_valid():
			m = form.save(sender=request.user)
			if source:
				MessageExtra.objects.create(message=m[0], source=source)
	#		request.user.message_set.create(
	#			message=_(u"Message successfully sent."))
	#		success_url = reverse('messages_inbox')
	#		if request.GET.has_key('next'):
	#			success_url = request.GET['next']

		#update captcha
		challenge, captcha_response = captcha_settings.get_challenge()()
		store = CaptchaStore.objects.create(challenge=challenge, response=captcha_response)
		errors, error_elements, _ = get_errors(form)

		return Response({'errors': errors,
						'error_elements': error_elements,
						'captcha': {
							'img': reverse('captcha-image', kwargs=dict(key=store.hashkey)),
							'code': store.hashkey}})