This commit is contained in:
Cristian Salamea 2015-01-08 19:57:33 +00:00
commit e3168f5ce8
8 changed files with 36 additions and 19 deletions

View File

@ -44,17 +44,19 @@ INSTALLED_APPS = (
'django.contrib.staticfiles',
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'allauth',
'allauth.account',
'rest_auth.registration',
# 'allauth',
# 'allauth.account',
# 'rest_auth.registration',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
@ -105,3 +107,12 @@ SITE_ID = 1
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
CORS_ORIGIN_ALLOW_ALL = True
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}

View File

@ -33,5 +33,6 @@ urlpatterns = patterns('',
url(r'^rest-auth/', include('rest_auth.urls')),
url(r'^rest-auth/registration/', include('rest_auth.registration.urls')),
url(r'^account/', include('allauth.urls')),
url(r'^admin/', include(admin.site.urls)),
)

View File

@ -7,8 +7,9 @@ class SocialLoginSerializer(serializers.Serializer):
access_token = serializers.CharField(required=True)
def validate_access_token(self, attrs, source):
access_token = attrs[source]
def validate(self, attrs):
access_token = attrs['access_token']
view = self.context.get('view')
request = self.context.get('request')
@ -38,6 +39,6 @@ class SocialLoginSerializer(serializers.Serializer):
if not login.is_existing:
login.lookup()
login.save(request, connect=True)
self.object = {'user': login.account.user}
attrs['user'] = login.account.user
return attrs

View File

@ -58,12 +58,12 @@ class PasswordResetSerializer(serializers.Serializer):
password_reset_form_class = PasswordResetForm
def validate_email(self, attrs, source):
def validate_email(self, value):
# Create PasswordResetForm with the serializer
self.reset_form = self.password_reset_form_class(data=attrs)
self.reset_form = self.password_reset_form_class(data={'email': value})
if not self.reset_form.is_valid():
raise serializers.ValidationError('Error')
return attrs
return value
def save(self):
request = self.context.get('request')
@ -103,6 +103,7 @@ class PasswordResetConfirmSerializer(serializers.Serializer):
self.user = UserModel._default_manager.get(pk=uid)
except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist):
self._errors['uid'] = ['Invalid value']
raise serializers.ValidationError('Invalid UID')
self.custom_validation(attrs)
@ -115,6 +116,8 @@ class PasswordResetConfirmSerializer(serializers.Serializer):
if not default_token_generator.check_token(self.user, attrs['token']):
self._errors['token'] = ['Invalid value']
return attrs
def save(self):
self.set_password_form.save()
@ -138,19 +141,20 @@ class PasswordChangeSerializer(serializers.Serializer):
self.request = self.context.get('request')
self.user = getattr(self.request, 'user', None)
def validate_old_password(self, attrs, source):
def validate_old_password(self, value):
if self.old_password_field_enabled and self.user and \
not self.user.check_password(attrs.get(source, '')):
not self.user.check_password(value):
raise serializers.ValidationError('Invalid password')
return attrs
return value
def validate(self, attrs):
self.set_password_form = self.set_password_form_class(user=self.user,
data=attrs)
if not self.set_password_form.is_valid():
self._errors = self.set_password_form.errors
return None
#self._errors = self.set_password_form.errors
#return None
raise serializers.ValidationError(self.set_password_form.errors)
return attrs
def save(self):

View File

@ -64,7 +64,7 @@ class BaseAPITestCase(object):
is_json = bool(
filter(lambda x: 'json' in x, self.response._headers['content-type']))
if is_json and self.response.content:
self.response.json = json.loads(self.response.content)
self.response.json = json.loads(self.response.content.decode())
else:
self.response.json = {}
if status_code:
@ -176,7 +176,7 @@ class APITestCase1(TestCase, BaseAPITestCase):
result['uid'] = int_to_base36(user.pk)
else:
from django.utils.http import urlsafe_base64_encode
result['uid'] = urlsafe_base64_encode(force_bytes(user.pk))
result['uid'] = urlsafe_base64_encode(force_bytes(user.pk)).decode()
result['token'] = default_token_generator.make_token(user)
return result

View File

@ -31,7 +31,7 @@ class Login(GenericAPIView):
response_serializer = TokenSerializer
def login(self):
self.user = self.serializer.object['user']
self.user = self.serializer.validated_data['user']
self.token, created = self.token_model.objects.get_or_create(
user=self.user)
if getattr(settings, 'REST_SESSION_LOGIN', True):

View File

@ -29,7 +29,7 @@ setup(
zip_safe=False,
install_requires=[
'Django>=1.5.0',
'djangorestframework>=2.3.13, <3.0',
'djangorestframework>=3.0',
'six>=1.8.0',
],
test_suite='runtests.runtests',

View File

@ -1,2 +1,2 @@
django-allauth>=0.18.0
django-allauth==0.18.0
responses>=0.2.2