def post(self, request):
        if 'email' not in request.data:
            return Response({'message': 'Required parameters are missing.'},
                            status=status.HTTP_400_BAD_REQUEST)
        try:
            user_profile = UserProfile.objects.get(
                user__username=request.data['email'])
        except UserProfile.DoesNotExist:
            return Response(
                {
                    'message':
                    'There is no profile with this email address. Try entering the correct email address or signing up again.'
                },
                status=status.HTTP_400_BAD_REQUEST)

        if user_profile.is_profile_verified:
            return Response(
                {
                    'message':
                    'Your profile is already verified. You now log in with your account.'
                },
                status=status.HTTP_400_BAD_REQUEST)

        send_user_verification_email(user_profile.user,
                                     user_profile.verification_key)

        return Response(
            {
                "message":
                "We have send you your verification email again. It may take up to 5 minutes to arrive. Make sure to also check your junk or spam folder."
            },
            status=status.HTTP_200_OK)
    def post(self, request):
        required_params = [
            'email',
            'password',
            'first_name',
            'last_name',
            'location',
            'send_newsletter',
        ]
        for param in required_params:
            if param not in request.data:
                raise ValidationError('Required parameter is missing')

        if User.objects.filter(username=request.data['email']).exists():
            raise ValidationError("Email already in use.")

        location = get_location(request.data['location'])

        user = User.objects.create(username=request.data['email'],
                                   email=request.data['email'],
                                   first_name=request.data['first_name'],
                                   last_name=request.data['last_name'],
                                   is_active=True)

        user.set_password(request.data['password'])
        user.save()

        url_slug = (user.first_name + user.last_name).lower() + str(user.id)
        # Get location
        user_profile = UserProfile.objects.create(
            user=user,
            location=location,
            url_slug=url_slug,
            name=request.data['first_name'] + " " + request.data['last_name'],
            verification_key=uuid.uuid4(),
            send_newsletter=request.data['send_newsletter'])
        if "from_tutorial" in request.data:
            user_profile.from_tutorial = request.data['from_tutorial']
        if "is_activist" in request.data:
            user_profile.is_activist = request.data['is_activist']
        if "last_completed_tutorial_step" in request.data:
            user_profile.last_completed_tutorial_step = request.data[
                'last_completed_tutorial_step']
        if settings.AUTO_VERIFY == True:
            user_profile.is_profile_verified = True
            message = "Congratulations! Your account has been created"
        else:
            send_user_verification_email(user, user_profile.verification_key)
            message = "You're almost done! We have sent an email with a confirmation link to {}. Finish creating your account by clicking the link.".format(
                user.email)  # NOQA
        user_profile.save()

        return Response({'success': message}, status=status.HTTP_201_CREATED)
Exemple #3
0
    def post(self, request):
        required_params = [
            'email', 'password', 'first_name', 'last_name', 'country', 'city',
            'email_project_suggestions', 'email_updates_on_projects'
        ]
        for param in required_params:
            if param not in request.data:
                raise ValidationError('Required parameter is missing')

        if User.objects.filter(username=request.data['email']).exists():
            raise ValidationError("Email already in use.")

        user = User.objects.create(username=request.data['email'],
                                   email=request.data['email'],
                                   first_name=request.data['first_name'],
                                   last_name=request.data['last_name'],
                                   is_active=True)

        user.set_password(request.data['password'])
        user.save()

        url_slug = (user.first_name + user.last_name).lower() + str(user.id)

        user_profile = UserProfile.objects.create(
            user=user,
            country=request.data['country'],
            city=request.data['city'],
            url_slug=url_slug,
            name=request.data['first_name'] + " " + request.data['last_name'],
            verification_key=uuid.uuid4(),
            email_project_suggestions=request.
            data['email_project_suggestions'],
            email_updates_on_projects=request.data['email_updates_on_projects']
        )

        if settings.AUTO_VERIFY == True:
            user_profile.is_profile_verified = True
            user_profile.save()
            message = "Congratulations! Your account has been created"
        else:
            send_user_verification_email(user, user_profile.verification_key)
            message = "You're almost done! We have sent an email with a confirmation link to {}. Finish creating your account by clicking the link.".format(
                user.email)  # NOQA

        return Response({'success': message}, status=status.HTTP_201_CREATED)