blob: 193d14fcdda89442d585f048ddb0f9786534ce94 [file] [log] [blame]
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse
from django.core import serializers
from rest_framework import generics
from rest_framework.views import APIView
from core.models import *
from services.hpc.models import *
from services.requestrouter.models import *
from django.forms import widgets
from django.core.exceptions import PermissionDenied
from django.contrib.contenttypes.models import ContentType
import json
import socket
import time
import django.middleware.csrf
from xos.exceptions import *
from django.forms.models import model_to_dict
def serialize_user(model):
serialized = model_to_dict(model)
del serialized['last_login']
del serialized['timezone']
del serialized['password']
print serialized
return json.dumps(serialized)
class LoginView(APIView):
method_kind = "list"
method_name = "login"
def do_login(self, request, username, password):
if not username:
raise XOSMissingField("No username specified")
if not password:
raise XOSMissingField("No password specified")
u = User.objects.filter(email=username)
if not u:
raise PermissionDenied("Permission Denied")
u=u[0]
if not u.check_password(password):
raise PermissionDenied("Permission Denied")
auth = {"username": username, "password": password}
request.session["auth"] = auth
request.session.save()
return Response({
"xoscsrftoken": django.middleware.csrf.get_token(request),
"xossessionid": request.session.session_key,
"user": serialize_user(u)
})
def get(self, request, format=None):
username = request.GET.get("username", None)
password = request.GET.get("password", None)
return self.do_login(request, username, password)
def post(self, request, format=None):
username = request.DATA.get("username", None)
password = request.DATA.get("password", None)
return self.do_login(request, username, password)