Changeset 1182 for TI07-MOLES


Ignore:
Timestamp:
14/06/06 21:44:17 (13 years ago)
Author:
lawrence
Message:

A large number of small modifications to browse
dealing with a range of bugs ...

Location:
TI07-MOLES/trunk/StubB/XSLT/browse/portal
Files:
14 edited

Legend:

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

    r1175 r1182  
    6969             
    7070        #Data curator information 
    71         self.centre=DIFcontact(helper.find(self.tree,'Data_Center'),ctype='centre') 
     71        self.centre=DIFcontact(helper.find(self.tree,'Data_Center'),ctype='centre',helper=helper) 
    7272        self.curator=DIFcontact(self.tree) 
    7373             
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/ETxmlView.py

    r1175 r1182  
    3434        else: 
    3535                r=[elem.find(self.xmlns+xpathExpression),] 
    36         try: 
    37                 rr=[i.text for i in r] 
     36        try:  # if element is None, this should fail ... 
     37                rr=[] 
     38                for i in r: 
     39                    t=i.text  
     40                    if t is not None:  
     41                        rr.append(t) 
     42                    else: rr.append('') 
    3843        except: 
    3944                rr=['',] 
     
    5257       return elem.findall(xe) 
    5358 
    54 def et2text(elem,indent='',html=0,space='   '): 
     59    def strip(self,tag): 
     60        ''' Given a tag, strip the default namespace ''' 
     61        return tag.lstrip(self.xmlns) 
     62 
     63def et2text(elem,indent='',html=0,space='   ',helper=None): 
    5564        '''Lightweight pretty printing of elementTree elements''' 
    5665        def estrip(elem): 
     
    6069                else: 
    6170                        return elem.strip() 
     71        ns=helper 
     72        if ns is None: ns=nsdumb(elem) 
    6273        strAttrib='' 
    6374        for att in elem.attrib: 
    6475                strAttrib+=' %s="%s"'%(att,elem.attrib[att]) 
    65         result='%s<%s%s>%s'%(indent,elem.tag,strAttrib,estrip(elem.text)) 
     76        result='%s<%s%s>%s'%(indent,ns.strip(elem.tag),strAttrib,estrip(elem.text)) 
    6677        children=len(elem) 
    6778        if children: 
    6879                for item in elem: 
    69                         result+='\n'+et2text(item,indent=indent+space) 
    70                 result+='\n%s%s</%s>'%(indent,estrip(item.tail),elem.tag) 
     80                        result+='\n'+et2text(item,indent=indent+space,helper=ns) 
     81                result+='\n%s%s</%s>'%(indent,estrip(item.tail),ns.strip(elem.tag)) 
    7182        else: 
    72                 result+='</%s>'%(elem.tag) 
     83                result+='</%s>'%(ns.strip(elem.tag)) 
    7384        return result 
    7485 
    7586 
    76 def et2html(elem,matchList=[],number=0): 
     87def et2html(elem,matchList=[],number=0,helper=None): 
    7788    #this method is NDG code ... copyright CCLRC ...  
    7889    '''Lightweight HTML pretty printing of elementTree elements + highlight 
     
    95106        return x 
    96107    lt,gt='<b>&lt;</b>','<b>&gt;</b>' 
     108    ns=helper 
     109    if ns is None: ns=nsdumb(elem)  
    97110    strAttrib='' 
    98111    for att in elem.attrib: 
    99112        strAttrib+=' %s="%s"'%(span(att,'xmlAttrTyp'),span(elem.attrib[att],'xmlAttrVal')) 
    100     result='%s%s%s%s%s'%(lt,span(elem.tag,"xmlElemTag"),strAttrib,gt,match(elem.text)) 
     113    result='%s%s%s%s%s'%(lt,span(ns.strip(elem.tag),"xmlElemTag"),strAttrib,gt,match(elem.text)) 
    101114    children=len(elem) 
    102115    if children: 
    103116        for item in elem: 
    104             result+=et2html(item,matchList) 
    105         result+='%s%s/%s%s'%(match(item.tail),lt,span(elem.tag,'xmlElemTag'),gt) 
     117            result+=et2html(item,matchList,helper=ns) 
     118        result+='%s%s/%s%s'%(match(item.tail),lt,span(ns.strip(elem.tag),'xmlElemTag'),gt) 
    106119    else: 
    107         result+='%s/%s%s'%(lt,span(elem.tag,'xmlElemTag'),gt) 
     120        result+='%s/%s%s'%(lt,span(ns.strip(elem.tag),'xmlElemTag'),gt) 
    108121    return div(result,'xmlElem') 
    109122     
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/People.py

    r1164 r1182  
    11from Utilities import wrapGetText 
     2from ETxmlView import nsdumb 
     3from htmlUtilities import * 
     4 
    25class Name: 
    36        ''' Handles the name type in MOLES ''' 
     
    3134        def toHTML(self,prefix=''): 
    3235            if self.elem is None: return '' 
    33             def makelink(r,n): 
    34                 if r!='': 
    35                     return '<a href="%s">%s</a>'%(r,n) 
    36                 else: return n 
    3736            html=prefix #para start? 
    3837            if self.data['personName']!='': 
    3938                if self.data['personEmail']!='': 
    40                     html+=makelink(self.data['personEmail'],self.data['personName']) 
     39                    html+=hyperlink(self.data['personName'],self.data['personEmail']) 
    4140                if self.data['personPhone']!='': html+='<br/>Phone: %s'%self.data['personPhone'] 
    4241            br='' 
    4342            if html!='': br='<br/>' #only need a linebreak if there is already content ... or '<p> 
    4443            if self.data['orgName']!='': 
    45                     html+=br+makelink(self.data['orgURL'],self.data['orgName']) 
     44                html+=br+hyperlink(self.data['orgName'],self.data['orgURL']) 
    4645            if self.data['searchlink']!='': html+='<br/>'+self.data['searchlink'] 
    4746            html+='' # para end? 
     
    6968         
    7069class DIFcontact(contact): 
    71     def __init__(self,elem,ctype='centre'): 
     70    def __init__(self,elem,ctype='centre',helper=None): 
     71        if helper is None: helper=nsdumb() 
    7272        self.elem=elem 
    7373        contact.__init__(self) 
    7474        if self.elem is None: return 
    7575        if ctype=='centre': 
    76             self.data['orgName']=wrapGetText(self.elem,'Data_Center_Name/Short_Name') 
    77             self.data['orgURL']=wrapGetText(self.elem,'Data_Center_URL') 
     76            self.data['orgName']=helper.getText(self.elem,'Data_Center_Name/Short_Name') 
     77            self.data['orgURL']=helper.getText(self.elem,'Data_Center_URL') 
    7878        else: 
    7979            self.data['personName']='placeholder for DIF contact' 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/ServiceBinding.py

    r1175 r1182  
    3131    def __init__(self,serviceFile='cgi/serviceMap.config'): 
    3232        myConfig.__init__(self,serviceFile) 
    33         self.icon=self.get('RELATED','icon') 
    34         self.iconalt=self.get('RELATED','icon_alt') 
     33        self.seticon('RELATED') 
     34    def seticon(self,t): 
     35        ''' Set icon type t, or if it doesn't exist, use RELATED ''' 
     36        self.icon=self.get(t,'icon') 
     37        if self.icon is None: 
     38            self.seticon('RELATED') 
     39        else: self.iconalt=self.get(t,'icon_alt') 
    3540    def do(self,serviceType,dataProvider): 
    3641        '''  Return an actual endpoint for a given service from the data provider, e.g. 
     
    3944        r=self.get(serviceType,dataProvider) 
    4045        if r is None: 
    41             #see if we have an icon anyway ... 
    42             try: 
    43                 i,a=self.get(serviceType,'icon'),self.get(serviceType,'icon_alt') 
    44                 if (i,a)!=(None,None):self.icon,self.iconalt=i,a 
    45             except: pass 
    46                  
    4746            # just return the URL 
    4847            if dataProvider[0:4]!='http': 
    49                 return 'http://%s'%dataProvider 
    50             else: return dataProvider 
    51         else: 
    52             # this is a service type known to ndg, so we have constructed an endpoint 
    53             self.icon=self.get(serviceType,'icon') 
    54             self.iconalt=self.get(serviceType,'icon_alt') 
    55             return r 
     48                r='http://%s'%dataProvider 
     49            else: r=dataProvider 
     50        self.seticon(serviceType) 
     51        return r 
    5652         
    5753class Service: 
     
    6965        specific repository. Note that we support the NDG id in the abbreviated format 
    7066        entryID is a repository:scheme:localidentifier string ''' 
    71         def __init__(self,n='',entryID=None,serviceFile='cgi/serviceMap.config'): 
     67        def __init__(self,n='',entryID=None,serviceFile='serviceMap.config'): 
    7268            Service.__init__(self) 
    7369            # regrettably we used different things in our ID's than we did in 
     
    10399            #<URL>http://badc.nerc.ac.uk/browse/badc/CDs/spade9293</URL> 
    104100            #</Related_URL> 
     101            #following call simply sets some defaults 
    105102            s,r,l,b=self.__getsrlb(entryID) 
    106             #now ovewrite the self description above with  
    107             #detail from this particular rleated url 
     103            #which we now overwrite with detail from this particular rleated url 
     104            #following helps us avoid namespace problems 
    108105            if helper is None:helper=nsdumb() 
    109106            self.description=helper.getText(elem,'Description') 
     
    111108            self.serviceType=s 
    112109            if s!='': 
     110                #we (NDG) know about this type of URL ... 
    113111                r=helper.getText(elem,'URL') 
    114112                b=self.serviceMap.do(s,r) 
     
    116114                self.url=self.__makeurl(s,b,uri,seqno) 
    117115            else: 
    118                 self.url=helper.getText(elem,'URL') 
     116                #unknown type 
     117                self.serviceType='RELATED' 
     118                self.url=self.serviceMap.do(self.serviceType,helper.getText(elem,'URL')) 
    119119            return self 
    120120        def __str__(self): 
     
    150150                s,r,l='DISCOVERY','',entryID 
    151151                b=self.serviceMap.get(s,'default') 
     152                self.serviceMap.seticon(s) 
    152153            return s,r,l,b 
    153154             
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/browse.config

    r1171 r1182  
    99jarLoc:          returnstubb.jar 
    1010javaBinary:      java 
     11searchWSDL:     http://superglue.badc.rl.ac.uk/exist/services/Discovery?WSDL 
    1112 
    1213[db] 
     
    1617 
    1718[layout] 
    18  
    1919localLink:      http://www.badc.rl.ac.uk 
    2020localImage:     /layout/bodc_logo.gif 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/browseCGI.py

    r1175 r1182  
    226226                    if  self.b.constraints.exist: 
    227227                        # we need to evaluate them 
     228                        #result=self.ndgGate.check(self.b.constraints.SimpleCondition) 
    228229                        try: 
    229230                             result=self.ndgGate.check(self.b.constraints.SimpleCondition) 
     
    232233                             else: 
    233234                                access=0 
    234                         except: 
     235                        except Exception,e: 
    235236                             #unable to make ndggate check ... deny 
    236237                             access=0 
    237238                             result=self.error('Unable to connect to security gateway, access to secure resource denied') 
     239                             result+='<p>%s</p>'%str(self.b.constraints.SimpleCondition) 
     240                             result+='<p>%s</p>'%str(e) 
    238241                    else: 
    239242                        access=1 
     
    259262                title='Search for '+searchString 
    260263                try: 
    261                     ws=DiscoveryWS() 
     264                    ws=DiscoveryWS(wsdl=self.config.get('services','searchWSDL')) 
    262265                except Exception, e: 
    263266                    return self.error('<p>%s<br/>%s'%(e,'Unable to connect to Search BackEnd')),'Error' 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/htmlUtilities.py

    r1173 r1182  
    1717 
    1818def hyperlink(n,u): 
    19     return '<a href="%s">%s</a>'%(u,n) 
    20  
     19    ''' Make a hyperlink ... provided there is an address to jump to ''' 
     20    if u !='': 
     21        return '<a href="%s">%s</a>'%(u,n) 
     22    else: return n 
     23     
    2124def image(l,a): 
    2225    return '<img src="%s" alt="%s"/>'%(l,a) 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/insecure.py

    r1175 r1182  
    6060         
    6161if __name__=="__main__": 
     62        import sys 
     63        id=sys.argv[1] 
     64        print id 
    6265        javaBin='java' 
    6366        jarLoc='../../returnstubb.jar' 
    64         id='badc.nerc.ac.uk/dataent2' 
     67        #id='badc.nerc.ac.uk/dataent2' 
     68        #id='badc.nerc.ac.uk/metdesc2' 
    6569        db='glue.badc.rl.ac.uk' 
    66         d= insecureGetDoc(id,db=db,jar=jarLoc,javaBin=javaBin,format='DIF') 
     70        d= insecureGetDoc(id,db=db,jar=jarLoc,javaBin=javaBin)#,format='DIF') 
    6771        print d 
    6872        #print d 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/renderPage.py

    r1164 r1182  
    6464        #now get the banner section 
    6565        #note we have to escape the % ... 
    66         html+='''<body><div class="ndgHeader"> 
     66         
     67        banner='''     
    6768            <table cellpadding="0" cellspacing="0" width="100%%"> 
    6869            <tbody><tr> 
     
    7475              <a href="%s"> <img src="%s" alt="%s"/> </a> </td> 
    7576            </tr> 
    76             </tbody></table></div>'''%(ndgLink,ndgImage,ndgAlt,localLink,localImage,localAlt) 
    77                          
     77            </tbody></table>'''%(ndgLink,ndgImage,ndgAlt,localLink,localImage,localAlt) 
     78        html+='<body><div class="ndgHeader">%s</div>'%banner 
     79        #html+='<body>'+fancybox(banner)                 
    7880         
    7981        gotoA=image(selImage,'DataService') 
     
    9092            </div> 
    9193            <div id="Content"> 
    92                <div style="CLEAR: none; LEFT: 0px; WIDTH: 98%%; TOP: 0px"> 
    93                <div style="CLEAR: none; WIDTH: 98%%"> 
     94               <div style="CLEAR: none; LEFT: 0px; WIDTH: 100%%; TOP: 0px"> 
     95               <div style="CLEAR: none; WIDTH: 100%%"> 
    9496                %s 
    9597                </div> 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/serviceMap.config

    r1175 r1182  
    99 
    1010[NDG_A_SERVICE] 
    11 badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/dxui 
     11badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/cgi-bin/dxui 
    1212icon: %(layout)s/A.gif 
    1313icon_alt: A Service 
     
    2626icon_alt: Related 
    2727service_name: Related 
     28instance: uri 
    2829 
    2930[DISCOVERY] 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/stubB.py

    r1175 r1182  
    123123                self.constraints=AccessControl(self.tree.find('dgMetadataSecurity')) 
    124124                self.abbreviation=wrapGetText(self.tree,'abbreviation') 
     125                if self.abbreviation=='': self.abbreviation=self.name[0:min(5,len(self.name))] 
    125126                 
    126127                elem=self.tree.find('dgDataEntity') 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/layout/style.css

    r1105 r1182  
    2626#Content { 
    2727        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px;  PADDING-TOP: 10px; 
    28         MARGIN-LEFT: 190px;  
     28        MARGIN-LEFT: 190px; MARGIN-RIGHT: 10px; 
    2929} 
    3030tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF} 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/returnmoles.Readme.txt

    r993 r1182  
    2626        userpw - default = "guest" 
    2727 
     28        format - default = "NDG-B0". Also supports values of "DC" and "DIF" 
     29 
    2830 
    2931Note that everything is case-sensitive, but parameters can be in any order. 
     
    3335        java -jar returnstubb.jar repositoryID badc.nerc.ac.uk localID dataent1 repository xmldb:exist://glue.badc.rl.ac.uk:8080/exist/xmlrpc userpw secret 
    3436 
    35 This will return the MOLES for a data entity from glue using the guest ID. 
     37This will return the MOLES for a data entity from glue using the ID ndgquery. 
    3638 
     39Another sample invocation: 
     40 
     41        java -jar returnstubb.jar repositoryID grid.bodc.nerc.ac.uk localID HGFS3751 repository xmldb:exist://livglue.badc.nerc-liv.ac.uk/exist/xmlrpc user ndgquery userpw secret format DIF 
     42 
     43This will return the DIF for a data entity from livglue using the ID ndgquery. 
    3744 
    38453) Non-zero return codes: 
Note: See TracChangeset for help on using the changeset viewer.