Esempio n. 1
0
def send_repair_email(request):
    """API функция по отправке эл. писем для восстановления 
       забытого пароля.
    """
    resp_dict = dict()
    resp_dict['errors'] = ''
    # в демо режиме запрос не обрабытываем
    if settings.DEMO:
        resp_dict['errors'] = 'In demo mode repair pass not work!'
        return JsonResponse(resp_dict)

    form = SendMail(request.POST)
    if form.is_valid():
        data_in_post = form.cleaned_data
        email = data_in_post.get('email', '')
        obj = AnconUser.objects.filter(email=email)
        if not obj:
            resp_dict['errors'] = _('Email was not found.')
            return JsonResponse(resp_dict)

        if len(obj) > 1:
            resp_dict['errors'] = _('Email should not be repeated for different users.')
            return JsonResponse(resp_dict)

        title = _('Forgotten password recovery')
        # Генерируем случайную буквенно цифорвую последовательность
        chars = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        secret_key = get_random_string(64, chars)
        # сохраняем ключ в объекте пользователя
        user_obj = AnconUser.objects.get(email=email)
        user_obj.secret_key = secret_key
        user_obj.save()
        domain = request.get_host()
        text = """
        Для восстановления забытого пароля перейдите по ссылке http://%s/manage_users/recover_password/%s
        """ 
        text = text % (domain, secret_key, )
        try:
            send_email(reciver=email, title=title, text=text)
        except Exception as e:
            resp_dict['errors'] =str(e)
        else:
            resp_dict['text'] = _('Mail successfully sended!')
    else:
        # если форма содержит ошибки, то сообщаем о них пользователю.
        resp_dict['errors'] = form.errors.as_text()

    return JsonResponse(resp_dict)
Esempio n. 2
0
def send_test_email(request):
    """
    """
    resp_dict = dict()
    form = SendTestMail(request.POST)
    if form.is_valid():
        data_in_post = form.cleaned_data
        email = data_in_post.get('email', '')
        text  = data_in_post.get('text', '')
        resp_dict['errors'] = ''
        try:
            send_email(reciver=email, title=text, text=text)
        except Exception as e:
            resp_dict['errors'] =str(e)
        else:
            resp_dict['text'] = _('Mail successfully sended!')
            
    else:
        # если форма содержит ошибки, то сообщаем о них пользователю.
        error_message = dict([(key, [error for error in value]) for key, value in form.errors.items()])
        resp_dict['errors'] = error_message
    
    return JsonResponse(resp_dict)