scripts/archive/vieux/accounts/cransaccounts/views.py

53 lines
No EOL
1.8 KiB
Python

# Create your views here.
from models import Credential
from django.http import HttpResponse, HttpResponseRedirect
import datetime
import uuid
from django.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
from django.template import RequestContext
def index( request ):
return render_to_response('account_index.html', context_instance=RequestContext(request) )
index = login_required(index)
def auth( request ):
service = request.GET['service']
# create credential
## generat token
token = str( uuid.uuid4() )
## save in db
cred = Credential( service=service, token=token, user=request.user )
cred.save()
# redirect
## by service...
if service == "blogs":
return callbacks.blogs_callback( cred )
return HttpResponse("cred=%s" % cred.token)
auth = login_required(auth)
def check_credential( request ):
cred = request.GET['cred']
service = request.GET['service']
# retreive credential in db
try:
cred = Credential.objects.get(token=cred, service=service)
## if not to old, accept
if cred.date.today() - cred.date < datetime.timedelta( minutes=10 ):
response = HttpResponse("VALID")
response['username'] = cred.user.username
response['fullname'] = cred.user.get_full_name()
response['email'] = cred.user.email
return response
return HttpResponse("INVALID")
except Credential.DoesNotExist:
return HttpResponse("INVALID")
## else, or if not exist reject
class callbacks:
def blogs_callback( cred ):
url="http://blogtest.crans.org/actions/auth/return?cred=" + cred.token
return HttpResponseRedirect(url)
blogs_callback = staticmethod(blogs_callback)