Changeset 10

Show
Ignore:
Timestamp:
01/04/07 10:35:41 (5 years ago)
Author:
nicolast
Message:

Refactored some copy-paste code

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/djangoid/fix_headers.sh

    r8 r10  
    44 
    55for sf in `find . -iname "*.py" \! -regex "\./openid/.*"`; do 
    6         if grep ${EOL} ${sf}; then 
     6        if grep ${EOL} ${sf} > /dev/null; then 
    77                echo "${sf}: got header" 
    88        else 
  • trunk/djangoid/server/views.py

    r8 r10  
    1717#EOL 
    1818from django.http import HttpResponse, HttpResponseRedirect 
    19 from openid.server import server 
    20 from djangoid.server.djangoidstore import DjangoidStore 
    2119from django.conf import settings 
    2220from django.shortcuts import render_to_response 
    2321from djangoid.users.models import DjangoidUser 
     22from djangoid.openidhandlers import checkYadisRequest, convertToOpenIDRequest, convertToHttpResponse, handleOpenIDRequest  
    2423import re 
    2524 
     
    2928#Watch the trailing / 
    3029_identityRe = re.compile(settings.BASE_URL + "(?P<uid>[^/]+)/$") 
    31  
    32 #Global OpenID server instance, using a DjangoidStore object as container 
    33 openidserver = server.Server(DjangoidStore()) 
    34  
    35 #Convert an OpenID server response to a Django-compatible HttpResponse: 
    36 #copy HTTP headers, and payload 
    37 def convertOpenidServerResponse(response): 
    38         try: 
    39                 webresponse = openidserver.encodeResponse(response) 
    40         except server.EncodingError, why: 
    41                 raise 
    42  
    43         r = HttpResponse(webresponse.body) 
    44         for header, value in webresponse.headers.iteritems(): 
    45                 r[header] = value 
    46         r.status_code = webresponse.code 
    47  
    48         return r 
    4930 
    5031#Get a DjangoidUser object, based on a delegate URI 
     
    6041def endpoint(request): 
    6142        #If this is (most likely) a YADIS request, handle it using the YADIS view function 
    62         if request.META.has_key("HTTP_ACCEPT"): 
    63                 ct = request.META["HTTP_ACCEPT"] 
    64                 if ct.startswith("application/xrds+xml"): 
    65                         return serveryadis(request) 
     43        if checkYadisRequest(request): 
     44                return serveryadis(request) 
    6645 
    67         #Copy over all query (GET and POST) key-value pairs, so we can pass them to out OpenID server. 
    68         #request.REQUEST.copy() seems not to work, as openidserver.decodeRequest seems to use some function 
    69         #on the passed object that's not implemented in the copied object. 
    70         query = {} 
    71         for i in request.REQUEST.items(): 
    72                 query[i[0]] = i[1] 
    73         try: 
    74                 r = openidserver.decodeRequest(query) 
    75         except server.ProtocolError, why: 
    76                 raise 
     46        r = convertToOpenIDRequest(request) 
    7747 
    7848        #If the request wasnt a valid OpenID server request, render some static page. 
     
    10777        #If not, let the OpenID server do everything for us :-) 
    10878        else: 
    109                 response = openidserver.handleRequest(r) 
     79                response = handleOpenIDRequest(r) 
    11080 
    111         return convertOpenidServerResponse(response) 
     81        return convertToHttpResponse(response) 
    11282 
    11383#A server YADIS document is requested. I don't think this is widely used yet, but well... Let's just return it. 
  • trunk/djangoid/users/models.py

    r8 r10  
    1717#EOL 
    1818from django.db import models 
    19 from django.contrib import auth 
     19from django.contrib.auth.models import User 
    2020 
    2121#Represent one trusted root URI. Can be shared between several users. 
     
    3232class DjangoidUser(models.Model): 
    3333        #This seems not to work: 
    34         #djangouser = models.ForeignKey(auth.models.User, primary_key = True) 
     34        #djangouser = models.ForeignKey(User, primary_key = True) 
    3535        #So using an ugly hack... TODO: Fixme! 
    3636        djangouser = models.CharField('username', maxlength = 30, primary_key = True) 
     
    5656class IdentityAttribute(models.Model): 
    5757        name = models.CharField(maxlength = 128) 
     58        title = models.CharField(maxlength = 128) 
    5859        namespace = models.CharField(maxlength = 32) 
    5960        description = models.TextField(blank = True) 
     61        regex = models.CharField(maxlength = 128, blank = True) 
    6062 
    6163        def __str__(self): 
  • trunk/djangoid/users/views.py

    r8 r10  
    2121from openid.server import server 
    2222 
    23 from djangoid.server.views import openidserver, convertOpenidServerResponse, getDjangoidUserFromIdentity 
     23from djangoid.server.views import getDjangoidUserFromIdentity 
    2424from djangoid.users.models import TrustedRoot 
     25from djangoid.openidhandlers import convertToOpenIDRequest, checkYadisRequest, convertToHttpResponse 
    2526 
    2627def useryadis(request, uid): 
     
    3233def userpage(request, uid): 
    3334        #Check whether this is a YADIS request 
    34         if request.META.has_key("HTTP_ACCEPT"): 
    35                 ct = request.META["HTTP_ACCEPT"] 
    36                 if ct.startswith("application/xrds+xml"): 
    37                         return useryadis(request, uid) 
     35        if checkYadisRequest(request): 
     36                return useryadis(request, uid) 
    3837 
    3938        res = render_to_response("users/userpage.html", {"server_url": settings.BASE_URL, "uid": uid}) 
     
    4544 
    4645def accept(request): 
    47         #Copy over all query (GET and POST) key-value pairs, so we can pass them to out OpenID server. 
    48         #request.REQUEST.copy() seems not to work, as openidserver.decodeRequest seems to use some function 
    49         #on the passed object that's not implemented in the copied object. 
    50         query = {} 
    51         for i in request.REQUEST.items(): 
    52                 query[i[0]] = i[1] 
    53         try: 
    54                 r = openidserver.decodeRequest(query) 
    55         except server.ProtocolError, why: 
    56                 raise 
     46        r = convertToOpenIDRequest(request) 
    5747 
    5848        if r is None: 
     
    6454        if request.method == "POST": 
    6555                if request.POST.has_key("cancel"): 
    66                         return convertOpenidServerResponse(r.answer(False)) 
     56                        return convertToHttpResponse(r.answer(False)) 
    6757                if request.POST.has_key("remember"): 
    6858                        user = getDjangoidUserFromIdentity(r.identity) 
    6959                        root = TrustedRoot.objects.get(root = r.trust_root) 
    7060                        user.trusted_roots.add(root) 
    71                 return convertOpenidServerResponse(r.answer(True)) 
     61                return convertToHttpResponse(r.answer(True)) 
    7262