Пример #1
0
    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_active = False
        if commit:
            user.save()
            domain = get_current_site(self.request)
            email_text = render_to_string(
                'email/acc_active.txt', {
                    'user': user,
                    'domain': domain,
                    'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                    'token': account_activation_token.make_token(user)
                })
            email_html = render_to_string(
                'email/acc_active.html', {
                    'user': user,
                    'domain': domain,
                    'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                    'token': account_activation_token.make_token(user)
                })

            profile = Profile(user=user,
                              phone_number=self.cleaned_data['phone_number'],
                              organization=self.cleaned_data['organization'],
                              age=self.cleaned_data['age'])
            profile.save()

            send_mail(subject='Activate Your Account',
                      message=email_text,
                      from_email='Sharif AI Challenge <*****@*****.**>',
                      recipient_list=[user.email],
                      fail_silently=False,
                      html_message=email_html)

        return user
Пример #2
0
 def post(self, request, user_id):
     template_name = 'registration/email_confirmed.html'
     if 'send_email' in request.POST:
         user = User.objects.get(pk=user_id)
         current_site = get_current_site(request)
         email_context = {
             'email': user.email,
             'name': user.display_name,
             'protocol': request.scheme,
             'domain': current_site.domain,
             'uid': user.pk,
             'token': account_activation_token.make_token(user),
         }
         send_email.apply_async(('activation', email_context))
         messages.add_message(request, SUCCESS,
                              '¡Correo enviado nuevamente!')
         return render(request, template_name)
     return render(request, template_name)
Пример #3
0
def register_parent_child(request):
    json_to_parse = request.POST.get('jsonToDb', None)
    parsed_json = json.loads(json_to_parse)
    if parsed_json is not None:
        try:
            validate_email(parsed_json['parent_email'])
        except ValidationError as e:
            return Response(ERROR_INVALID_EMAIL, status=status.HTTP_400_BAD_REQUEST)  # NOQA
        try:
            user = User.objects.get(email=parsed_json['parent_email'])
            return Response({'code': '111'})
        except User.DoesNotExist:
            try:
                user = User.objects.create_user(
                    email=parsed_json['parent_email'],
                    password=parsed_json['parent_password'],
                )
                children = user.create_children(
                    first_name=parsed_json['child_name'],
                    dob=str_to_date(parsed_json['child_dob'])
                )
                Suscription.create_trial(user, children)
                ChildrenTowiIsland.create_towi_island(user, children)
                current_site = get_current_site(request)
                email_context = {
                    'email': user.email,
                    'name': user.display_name,
                    'protocol': request.scheme,
                    'domain': current_site.domain,
                    'uid': user.pk,
                    'token': account_activation_token.make_token(user),
                }
                send_email.apply_async(('activation', email_context))
                return Response({
                    'code': '200',
                    'key': user.key,
                    'child_id': str(children.id)
                    })
            except Exception as e:
                if user:
                    user.delete()
                return Response(status=status.HTTP_500_SERVER_ERROR)
    else:
        return Response(ERROR_MISSING_JSON, status=status.HTTP_400_BAD_REQUEST)
Пример #4
0
    def post(self, request):
        if request.user.is_authenticated:
            return redirect('profile')
        signup_form = CustomRegistrationForm(request.POST)
        if signup_form.is_valid():
            user = signup_form.save(
                commit=False)  # save to DB only if activation mail is sent
            user.is_active = False

            current_site = get_current_site(request)
            subject = 'Aktywuj swoje konto na charity.com'
            message = render_to_string(
                'accounts/registration_mail.html', {
                    'user': user,
                    'domain': current_site.domain,
                    'uname': urlsafe_base64_encode(force_bytes(user.email)),
                    'token': account_activation_token.make_token(user)
                })
            try:
                user.email_user(subject=subject, message=message)
            except Exception as exc:
                print(_('Błąd: '), exc)
                error_msg = _(
                    'Błąd przy wysyłaniu wiadomości aktywacyjnej, użytkownik nie został utworzony. '
                    'Spróbuj ponownie, jeśli widzisz tę wiadomość kolejny raz skontaktuj się z nami.'
                )
                signup_form.add_error(None, error_msg)
            else:
                user.save()
                user_mail_domain = user.email.split("@")[1]
                message = _(
                    'Email aktywacyjny został wysłany. Dziękujemy za rejestrację! '
                )
                link = f"<a href='http://{user_mail_domain}' class='messages-link' target='_blank''>" \
                       + _('Przejdź do swojej poczty') + '</a>'
                confirmation = message + link
                messages.success(request, confirmation)
                return redirect('login')
        return render(request, 'accounts/register.html', {'form': signup_form})
Пример #5
0
 def post(self, request):
     template_name = 'login1.html'
     data = request.POST
     action = request.POST['action']
     context = {'form': LoginForm(), 'registerForm': RegisterForm()}
     if action == 'login':
         form = LoginForm(request.POST)
         if form.is_valid():
             user = authenticate(username=form.cleaned_data['email'],
                                 password=form.cleaned_data['password'])
             if user is None:
                 messages.error(
                     request,
                     'Tu correo ó contraseña son incorrectos, inténtalo de nuevo.'
                 )  # NOQA
             # elif user.confirmed_email is False:
             #     messages.error(request, 'Por favor verifica tu correo')  # NOQA
             #     return redirect('activation-sent', user.id)
             else:
                 login(request, user)
                 deactivate_childs.apply_async((user.id, ))
                 return redirect('/subscripciones/')
         else:
             if form.errors:
                 for field in form:
                     for error in field.errors:
                         messages.add_message(request, ERROR, error)
     elif action in REGISTRO:
         form = RegisterForm(request.POST)
         if form.is_valid():
             cd = form.cleaned_data
             dob = request.POST['year'] + '-' + request.POST[
                 'month'] + '-' + request.POST['day']
             picture = ''
             cd['child_dob'] = dob
             if action == 'registro_familiar':
                 user_type = 'familiar'
                 picture = 'avatars/male.png'
             elif action == 'registro_pacientes':
                 user_type = 'especialista'
                 picture = 'avatars/doctor-male.png'
             else:
                 user_type = 'escuela'
                 picture = 'avatars/boy-aquamarine.png'
             try:
                 user = User.objects.create_user(
                     first_name=cd['first_name'],
                     email=cd['email'],
                     password=cd['password'],
                     user_type=user_type,
                     picture=picture)
                 children = user.create_children(cd['child_name'],
                                                 cd['child_dob'])
                 Suscription.create_trial(user, children)
                 ChildrenTowiIsland.create_towi_island(user, children)
                 current_site = get_current_site(request)
                 email_context = {
                     'email': user.email,
                     'name': user.display_name,
                     'protocol': request.scheme,
                     'domain': current_site.domain,
                     'uid': user.pk,
                     'token': account_activation_token.make_token(user),
                 }
                 send_email.apply_async(('activation', email_context))
                 login(request, user)
                 return redirect('/subscripciones/')
             except Exception as e:
                 if user:
                     user.delete()
                 messages.error(
                     request,
                     'Ocurrio un error inesperado inténtalo mas tarde.')
         else:
             template_name = 'login1.html'
             messages.error(request,
                            'Ingresaste datos incorrectos, corrigelos.')
             context = {'registerForm': form, 'form': LoginForm()}
             return render(request, template_name, context)
     return render(request, template_name, context)