Example #1
0
    def clean(self):
        user_fields = ('email', 'password', 'confirm_password')
        user_data = {f: self.cleaned_data.pop(f) for f in user_fields}

        try:
            validate_password(user_data['password'])
        except ValidationError as e:
            self.add_error('password', e)

        confirm_password = user_data.pop('confirm_password')
        if user_data['password'] != confirm_password:
            self.add_error(
                'confirm_password',
                ValidationError(_("The two password fields didn't match."), 'password_mismatch')
            )

        user = User(email=user_data['email'])

        try:
            user.validate_unique()
        except ValidationError as e:
            for field, er in e.error_dict.items():
                self.add_error(field, er)
        return {'user': user_data, **self.cleaned_data}