Esempio n. 1
0
def register(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/main/')
    categories = Category.objects.all()
    subcats = SubCategory.objects.all()

    user = UserProfile()

    if request.method == 'POST':
        form = Register(request.POST)
        context = {
            'form': form,
            'my_template': 'NotLoggedIn.html',
            'categories': categories,
            'subcats': subcats
        }

        if form.is_valid():

            if form.cleaned_data['password'] != form.cleaned_data[
                    'passwordRetype']:
                form._errors["password"] = ErrorList(
                    ["Passwords do not match"])
                return render(request, 'register.html', context)
            if User.objects.filter(
                    username=form.cleaned_data['userName']).exists():
                form._errors["userName"] = ErrorList(["User already exists"])
                return render(request, 'register.html', context)
            form._errors["userName"] = ErrorList(["this user already exists"])
            user.user = User.objects._create_user(
                form.cleaned_data['userName'],
                form.cleaned_data['email'],
                form.cleaned_data['password'],
                False,
                False,
                first_name=form.cleaned_data['name'],
                last_name=form.cleaned_data['lastName'])
            user.gender = form.cleaned_data['gender']
            user.save()
            return HttpResponseRedirect('/login/')

    else:
        form = Register()
        context = {
            'form': form,
            'my_template': 'NotLoggedIn.html',
            'categories': categories,
            'subcats': subcats
        }

    return render(request, 'register.html', context)
Esempio n. 2
0
def register(request):
    """
        Register a new user and create their UserProfile
    """
    data = request.data

    try:

        # Email input check
        email = str(data['email_id'])
        if not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)",
                        email):
            return Response({'message': 'Please enter a valid email address.'},
                            status=403)

        # Unique username check
        username = str(data["username"])
        try:
            user = User.objects.get(username=username)
            return Response({"message": "Username taken"}, status=412)
        except User.DoesNotExist:
            pass

        # Already registered email check
        if UserProfile.objects.filter(auth_user__email=email).exists():
            return Response({"message": "Email already registered"},
                            status=412)

        else:
            first_name = str(data['first_name'])
            last_name = data['last_name']
            password = str(data["password"])
            confirm_pass = str(data["confirm_pass"])
            if password != confirm_pass:
                return Response({"message": "Passwords don't match"},
                                status=412)

            if last_name == None:
                last_name = ''

            if (hasNumbers(first_name) or hasNumbers(last_name)):
                return Response({"message": "Invalid first/last name format"},
                                status=412)

            gender = str(data['gender'])  # M/F/O
            valid_values = ["M", "F", "O"]
            if gender not in valid_values:
                return Response({"message": "Invalid gender value"},
                                status=412)

            age = int(data["age"])

            if not age > 0:
                return Response({"message": "Invalid age value"}, status=412)

            location = str(data["location"])
            if location == "":
                return Response({"message": "Please enter a location"},
                                status=412)

            income = int(data['income'])
            if income < 0:
                return Response({"message": "Invalid income value"},
                                status=412)

            try:
                # Create django User
                user = User()
                user.username = username
                user.email = email
                user.set_password(password)
                user.first_name = first_name
                user.last_name = last_name
                user.save()
                try:
                    # Create UserProfile
                    profile = UserProfile()
                    profile.auth_user = user
                    profile.gender = gender
                    profile.age = age
                    profile.income = income
                    profile.location = location
                    profile.save()
                    return Response({"message": "Registered!"}, status=201)
                except:
                    user.delete()
                    return Response(
                        {"message": "An error occurred. Please try again!"},
                        status=500)
            except:
                return Response(
                    {"message": "An error occurred. Please try again!"},
                    status=500)
    except KeyError as missing_data:
        return Response(
            {'message': 'Data is Missing: {}'.format(missing_data)},
            status=400)