Now the login api return more data about the custom user

remotes/origin/enhancement/email-actions
Jesús Espino 2013-03-27 19:20:08 +01:00
parent 64eb9bb3b3
commit b2cb2a065f
2 changed files with 28 additions and 4 deletions

View File

@ -2,13 +2,19 @@ from rest_framework import serializers
class UserLogged(object): class UserLogged(object):
def __init__(self, token, username, first_name, last_name, email, last_login): def __init__(self, session_token, username, first_name, last_name, email, last_login, color, description, default_language, default_timezone, token, colorize_tags):
self.token = token self.session_token = session_token
self.username = username self.username = username
self.first_name = first_name self.first_name = first_name
self.last_name = last_name self.last_name = last_name
self.email = email self.email = email
self.last_login = last_login self.last_login = last_login
self.color = color
self.description = description
self.default_language = default_language
self.default_timezone = default_timezone
self.token = token
self.colorize_tags = colorize_tags
class LoginSerializer(serializers.Serializer): class LoginSerializer(serializers.Serializer):
@ -18,6 +24,12 @@ class LoginSerializer(serializers.Serializer):
last_name = serializers.CharField(max_length=30) last_name = serializers.CharField(max_length=30)
email = serializers.EmailField() email = serializers.EmailField()
last_login = serializers.DateTimeField() last_login = serializers.DateTimeField()
color = serializers.CharField(max_length=9)
description = serializers.CharField()
default_language = serializers.CharField(max_length=20)
default_timezone = serializers.CharField(max_length=20)
token = serializers.CharField(max_length=200)
colorize_tags = serializers.BooleanField()
def restore_object(self, attrs, instance=None): def restore_object(self, attrs, instance=None):
""" """
@ -31,5 +43,11 @@ class LoginSerializer(serializers.Serializer):
instance.last_name = attrs.get('last_name', instance.last_name) instance.last_name = attrs.get('last_name', instance.last_name)
instance.email = attrs.get('email', instance.email) instance.email = attrs.get('email', instance.email)
instance.last_login = attrs.get('last_login', instance.last_login) instance.last_login = attrs.get('last_login', instance.last_login)
instance.color = attrs.get('color', instance.color)
instance.description = attrs.get('description', instance.description)
instance.default_language = attrs.get('default_language', instance.default_language)
instance.default_timezone = attrs.get('default_timezone', instance.default_timezone)
instance.token = attrs.get('token', instance.token)
instance.colorize_tags = attrs.get('colorize_tags', instance.colorize_tags)
return instance return instance
return UserLogged(**attrs) return UserLogged(**attrs)

View File

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib.auth import logout, login, authenticate from django.contrib.auth import logout, login, authenticate
from django.contrib.auth.models import User
from django.contrib.auth.views import login as auth_login, logout as auth_logout from django.contrib.auth.views import login as auth_login, logout as auth_logout
from django import http from django import http
@ -12,6 +11,7 @@ from rest_framework.views import APIView
from rest_framework.response import Response from rest_framework.response import Response
from greenmine.base.serializers import LoginSerializer, UserLogged from greenmine.base.serializers import LoginSerializer, UserLogged
from greenmine.base.models import User
class ApiRoot(APIView): class ApiRoot(APIView):
@ -47,12 +47,18 @@ class Login(APIView):
login(request, user) login(request, user)
return_data = LoginSerializer(UserLogged(**{ return_data = LoginSerializer(UserLogged(**{
'token': request.session.session_key, 'session_token': request.session.session_key,
'username': request.user.username, 'username': request.user.username,
'first_name': request.user.first_name, 'first_name': request.user.first_name,
'last_name': request.user.last_name, 'last_name': request.user.last_name,
'email': request.user.email, 'email': request.user.email,
'last_login': request.user.last_login, 'last_login': request.user.last_login,
'color': request.user.color,
'description': request.user.description,
'default_language': request.user.default_language,
'default_timezone': request.user.default_timezone,
'token': request.user.token,
'colorize_tags': request.user.colorize_tags,
})) }))
return http.HttpResponse(JSONRenderer().render(return_data.data), return http.HttpResponse(JSONRenderer().render(return_data.data),