Commit 1e4f8901 by Renzo Lucioni

Send confirmation email on successful photo submission

parent 3b8b6a33
...@@ -25,6 +25,7 @@ from django.test.utils import override_settings ...@@ -25,6 +25,7 @@ from django.test.utils import override_settings
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core import mail
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from util.testing import UrlResetMixin from util.testing import UrlResetMixin
...@@ -923,6 +924,15 @@ class TestSubmitPhotosForVerification(UrlResetMixin, TestCase): ...@@ -923,6 +924,15 @@ class TestSubmitPhotosForVerification(UrlResetMixin, TestCase):
response = self.client.post(url, params) response = self.client.post(url, params)
self.assertEqual(response.status_code, expected_status_code) self.assertEqual(response.status_code, expected_status_code)
if expected_status_code == 200:
# Verify that photo submission confirmation email was sent
self.assertEqual(len(mail.outbox), 1)
self.assertEqual("Verification photos received", mail.outbox[0].subject)
else:
# Verify that photo submission confirmation email was not sent
self.assertEqual(len(mail.outbox), 0)
return response return response
def _assert_full_name(self, full_name): def _assert_full_name(self, full_name):
......
...@@ -9,7 +9,7 @@ import datetime ...@@ -9,7 +9,7 @@ import datetime
from collections import namedtuple from collections import namedtuple
from pytz import UTC from pytz import UTC
from edxmako.shortcuts import render_to_response from edxmako.shortcuts import render_to_response, render_to_string
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
...@@ -24,6 +24,7 @@ from django.views.generic.base import View ...@@ -24,6 +24,7 @@ from django.views.generic.base import View
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _, ugettext_lazy from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.mail import send_mail
from openedx.core.djangoapps.user_api.api import profile as profile_api from openedx.core.djangoapps.user_api.api import profile as profile_api
...@@ -43,6 +44,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError ...@@ -43,6 +44,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from .exceptions import WindowExpiredException from .exceptions import WindowExpiredException
from xmodule.modulestore.django import modulestore from xmodule.modulestore.django import modulestore
from microsite_configuration import microsite
from util.json_request import JsonResponse from util.json_request import JsonResponse
...@@ -843,12 +845,14 @@ def submit_photos_for_verification(request): ...@@ -843,12 +845,14 @@ def submit_photos_for_verification(request):
if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user): if SoftwareSecurePhotoVerification.user_has_valid_or_pending(request.user):
return HttpResponseBadRequest(_("You already have a valid or pending verification.")) return HttpResponseBadRequest(_("You already have a valid or pending verification."))
username = request.user.username
# If the user wants to change his/her full name, # If the user wants to change his/her full name,
# then try to do that before creating the attempt. # then try to do that before creating the attempt.
if request.POST.get('full_name'): if request.POST.get('full_name'):
try: try:
profile_api.update_profile( profile_api.update_profile(
request.user.username, username,
full_name=request.POST.get('full_name') full_name=request.POST.get('full_name')
) )
except profile_api.ProfileUserNotFound: except profile_api.ProfileUserNotFound:
...@@ -873,6 +877,21 @@ def submit_photos_for_verification(request): ...@@ -873,6 +877,21 @@ def submit_photos_for_verification(request):
attempt.mark_ready() attempt.mark_ready()
attempt.submit() attempt.submit()
profile_dict = profile_api.profile_info(username)
if profile_dict:
# Send a confirmation email to the user
context = {
'full_name': profile_dict.get('full_name'),
'platform_name': settings.PLATFORM_NAME
}
subject = _("Verification photos received")
message = render_to_string('emails/photo_submission_confirmation.txt', context)
from_address = microsite.get_value('default_from_email', settings.DEFAULT_FROM_EMAIL)
to_address = profile_dict.get('email')
send_mail(subject, message, from_address, [to_address], fail_silently=False)
return HttpResponse(200) return HttpResponse(200)
......
<%! from django.utils.translation import ugettext as _ %>
${_("Hi {full_name},").format(full_name=full_name)}
${_("Thanks for submitting your photos!")}
${_("We've received your information and the verification process has begun. You can check the status of the verification process on your dashboard.")}
${_("Thank you,")}
${_("The {platform_name} team").format(platform_name=platform_name)}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment