def auth(request): token_param = request.GET.get('token') email_param = request.GET['email'] # device name/identifier device_param = request.GET.get('device') email_param = email_param.lower() if token_param is None: # register new token if not settings.ENABLE_REGISTRATION: return JsonResponse({'status': 'REGISTRATION_DISABLED'}) if not email.is_email_valid(email_param) or not email_param.endswith('europa.eu'): return JsonResponse({'status': 'INVALID_EMAIL'}) user_list = User.objects.filter(email=email_param) if not user_list: u = User(email=email_param) u.reset_public_name() u.save() else: u = user_list[0] if email.is_spamming(u.email): return JsonResponse({'status': 'CANCELED_BY_SPAM_PREVENTION'}) token = AuthToken(token_string=AuthToken.gen_token_string(email_param), user=u) token.gen_validation_key() token.save() token.send_validation_mail(public_url='https://' + request.META.get('HTTP_HOST', settings.PUBLIC_URL)) token.save() return JsonResponse({'token': token.token_string, 'status': 'OK'}) else: # actual auth token_list = AuthToken.objects.filter(token_string=token_param) if len(token_list) == 0: return JsonResponse({'status': 'TOKEN_NOT_FOUND'}) token = token_list[0] if token.valid is False: return JsonResponse({'status': 'TOKEN_NOT_ACTIVATED'}) if token.valid and email_param == token.user.email: return JsonResponse({'status': 'OK', 'public_name': token.user.public_name})
def test_send_mail(self): from models import AuthToken, User from django.core import mail u = User() u.email = '*****@*****.**' u.save() auth = AuthToken() auth.user = u auth.token = AuthToken.gen_token_string('*****@*****.**') auth.gen_validation_key() auth.send_validation_mail(settings.PUBLIC_URL) self.assertEqual(len(mail.outbox), 1, msg='is settings.EMAILS_ENABLED set to True ?')