Changeset 800


Ignore:
Timestamp:
19/04/06 21:08:42 (13 years ago)
Author:
lawrence
Message:

First steps to using ElementTree to parse the stub-B so we can get
at the A urls, security metadata etc, from within python ...

Location:
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browseCGI.py

    r789 r800  
    66#import cgitb;ctitb.enable() 
    77import os 
    8 import ElementTree 
     8import ElementTree as ET 
    99from insecure import * 
    1010from collections import deque # python 2.4 
    1111from secure import * 
     12from stubB import * 
    1213 
    1314def EvaluateCredentials(ac,securityMetadata): 
     
    3738                self.ndgGate=gateway2NDGsession(cookie,url) 
    3839                self.__loadBrowseHistory() 
    39                 self.addToHistory(url) 
    4040                self.writeCookie() 
    4141        def __loadBrowseHistory(self): 
     
    4545                except: 
    4646                        strHistory='[]' 
    47                 for uri in strHistory[1:-1].split(','): self.addToHistory(uri) 
    48         def addToHistory(self,uri): 
     47                #this will definitely break when we have a real cookie ...  
     48                if strHistory !='[]': 
     49                        for uri,name in strHistory[1:-1].split(','): self.addToHistory(uri,name) 
     50        def addToHistory(self,uri,name): 
    4951                ''' Add a URI to the session history''' 
    50                 self.history.append(uri) 
     52                self.history.append((uri,name)) 
    5153        def getHistory(self): 
    5254                ''' Return a list of the items in the history ''' 
     
    5860                ''' Write out the current cookie ''' 
    5961                pass 
    60  
    61 class StubB: 
    62         ''' Holds the stub-b document and provides methods which get and manipulate it ''' 
    63          
    64         def __init__(self,uri,xsltMethod='JavaXalan'): 
    65                 '''Instantiate by getting URI from exist database''' 
    66                 #try: 
    67                 self.xml=insecureGetDoc(uri) 
    68                 #self.xml=uri 
    69                 #except: 
    70                 #       raise 'NotFound' 
    71                 self.xsltMethod=xsltMethod 
    72          
    73         def getSecurityDetails(self): 
    74                 '''Obtain the roles and attribute authority address''' 
    75                 #issue an xquery on the stub-b 
    76                 #parse for roles 
    77                 #parse for AA WSDL 
    78                 #tree=ElementTree.fromstring(self.xml) 
    79                 #sec=tree.findall('//ndgSecurity') 
    80                 roles=[] 
    81                 AAaddress='' 
    82                 return roles, AAaddress 
    83          
    84         def toHTML(self): 
    85                 x=doXSLT(self.xml,xsltMethod=self.xsltMethod) 
    86                 #return '<p>%s</p>'%x 
    87                 return x 
    8862         
    8963class CGIcontroller: 
     
    10276                self.cookie=self.env.get('HTTP_COOKIE',None) 
    10377 
    104                 self.session=BrowseSession(self.cookie,self.path) 
     78                #this will do for the moment, although I'd rather the whole 
     79                #URI was self consistent ... 
     80                 
     81                if self.FieldStorage.has_key('uri'): 
     82                        self.uri=self.FieldStorage['uri'].value 
     83                else:  
     84                        return self.error('No valid URI') 
     85                self.session=BrowseSession(self.cookie,self.uri) 
    10586                 
    10687                #Handle authorisation 
    10788                self.ac=self.session.getCredentials() 
    10889         
    109                 #this will do for the moment, although I'd rather the whole 
    110                 #URI was self consistent ... 
    111                 if self.FieldStorage.has_key('uri'): 
    112                         self.uri=self.FieldStorage['uri'].value 
    113                 else:  
    114                         return self.error('No valid URI') 
    11590                try: 
    116                         self.b=StubB(self.uri) 
     91                        self.b=stubB(self.uri) 
     92                        self.session.addToHistory(self.b.name,self.b.Burl) 
    11793                except 'NotFound': 
    11894                        return self.error('URI cannot be retrieved from DataBase') 
     
    124100                        historyHTML='<p>' 
    125101                        for item in self.session.getHistory(): 
    126                                 historyHTML+=item+'</br>' 
     102                                historyHTML+='<a href="%s">%s</a></br>'%item 
    127103                        historyHTML+='</p>' 
    128104                        return parsedHTML.replace('PutNDGBrowseHistoryHere',historyHTML) 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/insecure.py

    r772 r800  
    3737                repPath,localID=uri.split('/') 
    3838        except: 
    39                 return 'Invalid URI' 
     39                return None 
     40        returnMolesJar=jarLoc(jar) 
     41        cmd='java -jar %s %s %s xmldb:exist://glue.badc.rl.ac.uk:8080/exist/xmlrpc'%( 
     42        returnMolesJar,repPath,localID) 
     43        status,result=osCommand(cmd) 
     44        if status:  
     45                return None 
    4046        else: 
    41                 returnMolesJar=jarLoc(jar) 
    42                 cmd='java -jar %s %s %s xmldb:exist://glue.badc.rl.ac.uk:8080/exist/xmlrpc'%( 
    43                 returnMolesJar,repPath,localID) 
    44                 status,result=osCommand(cmd) 
    4547                return result 
    4648         
Note: See TracChangeset for help on using the changeset viewer.