From 1862befc8fc60b6ef545aeb6d8b718e8e8358ca6 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Tue, 16 Feb 2010 15:40:53 +0530 Subject: [PATCH] recover --- oxdb/backend/views.py | 2 +- oxdb/oxuser/views.py | 43 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/oxdb/backend/views.py b/oxdb/backend/views.py index 2160b2c..98229eb 100644 --- a/oxdb/backend/views.py +++ b/oxdb/backend/views.py @@ -29,7 +29,7 @@ import utils from daemon import send_bg_message from oxuser.models import getUserJSON -from oxuser.views import api_login, api_logout, api_register, api_recover, api_preferences +from oxuser.views import api_login, api_logout, api_register, api_contact, api_recover, api_preferences def api(request): diff --git a/oxdb/oxuser/views.py b/oxdb/oxuser/views.py index b4f50bf..60984a9 100644 --- a/oxdb/oxuser/views.py +++ b/oxdb/oxuser/views.py @@ -10,6 +10,7 @@ from django.shortcuts import render_to_response, get_object_or_404, get_list_or_ from django.template import RequestContext, loader, Context from django.utils import simplejson as json from django.conf import settings +from django.core.mail import send_mail, BadHeaderError from oxdjango.shortcuts import render_to_json_response, json_response from oxdjango.decorators import login_required_json @@ -36,13 +37,15 @@ def api_login(request): if user.is_active: login(request, user) user_json = models.getUserJSON(user) - response = json_response({'user': user_json}, text='You are logged in.') + response = json_response({'user': user_json}, + text='You are logged in.') else: response = json_response(status=401, text='Your account is disabled.') else: - response = json_response(status=401, - text='Your username and password were incorrect.') + errors = json_errors(form) + response = json_response(errors, + status=401, text='Your username and password were incorrect.') else: response = json_response(status=400, text='invalid data') @@ -150,6 +153,40 @@ def recover(request, key): return redirect('/#settings') return redirect('/') +class ContactForm(forms.Form): + email = forms.EmailField() + subject = forms.TextInput() + message = forms.TextInput() + +def api_contact(request): + ''' + param data + {'email': string, 'message': string} + + return {'status': {'code': int, 'text': string}} + ''' + data = json.loads(request.POST['data']) + form = ContactForm(data, request.FILES) + if form.is_valid(): + email = data['email'] + template = loader.get_template('contact_email.txt') + context = RequestContext(request, { + 'sitename': settings.SITENAME, + 'email': email, + 'message': data['message'], + }) + message = template.render(context) + subject = '%s contact: %s' % (settings.SITENAME, data['subject']) + response = json_response(text='message sent') + try: + send_mail(subject, message, email, [settings.DEFAULT_FROM_EMAIL, ]) + except BadHeaderError: + response = json_response(status=400, text='invalid data') + else: + response = json_response(status=400, text='invalid data') + return render_to_json_response(response) + + @login_required_json def api_preferences(request): '''