Changeset 1173


Ignore:
Timestamp:
13/06/06 20:45:04 (13 years ago)
Author:
lawrence
Message:

Handling selection and browse history better ...

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

Legend:

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

    r1171 r1173  
    1111from ETxmlView import loadET 
    1212 
    13 def DIFid2NDGid(string): 
    14     ''' takes a dif thing parses it and produces an ET ndg element id ... 
    15     and use this in dif ... ''' 
    16     s=string.split(':') 
    17     try: 
    18         r='''<DIFid><schemeIdentifier>%s</schemeIdentifier> 
    19          <repositoryIdentifier>%s</repositoryIdentifier> 
    20          <localIdentifier>%s</localIdentifier></DIFid>'''%(s[1],s[0],s[2]) 
    21         return ET.fromstring(r) 
    22     except: 
    23         r='''<DIFid><schemeIdentifier>DIF</schemeIdentifier> 
    24         <repositoryIdentifier>Unknown</repositoryIdentifier> 
    25         <localIdentifier>%s</localIdentifier></DIFid>'''%string 
    26         return ET.fromstring(r) 
    2713class DIF: 
    2814    ''' Supports the NASA GCMD DIF format for python operations, 
     
    9985if __name__=="__main__": 
    10086     
    101     f=file('../../exampleD/spade.xml') 
    102     g=file('../../exampleD/ucar.xml') 
     87    f=file('../../../exampleD/spade.xml') 
     88    g=file('../../../exampleD/ucar.xml') 
    10389    dif1xml=f.read() 
    10490    dif2xml=g.read() 
     91    config=myConfig('browse.config') 
    10592    D=DIF(dif1xml,serviceFile='serviceMap.config') 
    10693    G=DIF(dif2xml,serviceFile='serviceMap.config') 
     
    11299                                <title>%s</title> 
    113100                                <LINK media="all, screen" href="../layout/style.css" type="text/css" rel="stylesheet"/> 
    114                         </head> '''%D.name+D.toHTML()+G.toHTML() 
     101                        </head> '''%D.name+D.toHTML(config)+G.toHTML(config) 
    115102    f.close() 
    116103    f=file('output.html','wb') 
    117104    f.write(y) 
     105    print str(D.binding),D.binding.url 
    118106     
    119107     
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/ServiceBinding.py

    r1171 r1173  
    1313# This module provides classes to support these activities. 
    1414 
    15 from Utilities import wrapGetText, myConfig 
     15from Utilities import wrapGetText, myConfig, DIFid2NDGid 
    1616from htmlUtilities import hyperlink,image 
    1717 
     
    5757        native service which one expects to be able to operate upon it, for example, 
    5858        an NDG-A type identifier should expect the NDG-A-Service running at the 
    59         specific repository ''' 
    60         def __init__(self,n='',nativeID=None,serviceFile='cgi/serviceMap.config',uri='local'): 
     59        specific repository. Note that we support the NDG id in one of two formats: 
     60            nativeID is an elementTree object from an xml form, and  
     61            entryID is a repository:scheme:localidentifier string  ''' 
     62        def __init__(self,n='',nativeID=None,entryID=None,serviceFile='cgi/serviceMap.config',uri='local'): 
    6163            Service.__init__(self) 
    6264            # regrettably we used different things in our ID's than we did in 
    6365            # our difs : 
    6466            self.mapping={'NDG-A0':'NDG_A_SERVICE','NDG-B0':'NDG_B_SERVICE', 
    65             'NDG-B1':'NDG_B_SERVICE'} 
     67            'NDG-B1':'NDG_B_SERVICE','DIF':'DISCOVERY'} 
    6668            self.serviceMap=ServiceMap(serviceFile=serviceFile) 
    6769            self.name=n 
    68             if nativeID is not None: self.native(nativeID,uri=uri)  
     70            if nativeID is not None:  
     71                self.native(nativeID,uri=uri) 
     72            elif entryID is not None: 
     73                self.entry(entryID) 
     74        def entry(self,id): 
     75            self.native(DIFid2NDGid(id)) 
    6976        def native(self,elem,uri='local',seqno=1): 
    7077            ''' Given an ndg id, get the native service ''' 
     
    115122        def __makeuri(self,s,b,l): 
    116123            ''' Actually create the URI ''' 
    117             if s=='NDG_B_SERVICE': 
     124            if s in ('NDG_B_SERVICE','DISCOVERY'): 
    118125                uri='%s/%s'%(b,l) 
    119126            else: 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/Utilities.py

    r1164 r1173  
    11from collections import deque # python 2.4 
     2import ElementTree as ET 
    23import ConfigParser 
    34import os 
     
    7980        result[item]=cgiFieldStorage[item].value 
    8081    return result 
    81  
     82## 
     83### convert the followign two methods into one class that can handle 
     84## xml directly too if necessary 
     85## 
     86def DIFid2NDGid(string): 
     87    ''' takes a dif thing parses it and produces an ET ndg element id ... 
     88    and use this in dif ... ''' 
     89    s=string.split(':') 
     90    try: 
     91        r='''<DIFid><schemeIdentifier>%s</schemeIdentifier> 
     92         <repositoryIdentifier>%s</repositoryIdentifier> 
     93         <localIdentifier>%s</localIdentifier></DIFid>'''%(s[1],s[0],s[2]) 
     94        return ET.fromstring(r) 
     95    except: 
     96        r='''<DIFid><schemeIdentifier>DIF</schemeIdentifier> 
     97        <repositoryIdentifier>Unknown</repositoryIdentifier> 
     98        <localIdentifier>%s</localIdentifier></DIFid>'''%string 
     99        return ET.fromstring(r) 
     100def idconvert(e): 
     101    ''' Converts an XML ndg identifier into a uri version ''' 
     102    s='%s:%s:%s'%(wrapGetText(e,'repositoryIdentifier'), 
     103                    wrapGetText(e,'schemeIdentifier'), 
     104                    wrapGetText(e,'localIdentifier')) 
     105    return s 
    82106 
    83107if __name__=="__main__": 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/browseCGI.py

    r1171 r1173  
    159159                 
    160160                if 'select' in self.FieldStorage: 
    161                     #need to sort out the name issue ... 
    162                     self.session.addToSelected(self.FieldStorage['select'],'dif') 
     161                    n=self.FieldStorage['name'] 
     162                    s=ServiceBinding(n=n, 
     163                                     entryID=self.FieldStorage['select'], 
     164                                     serviceFile=self.serviceFile) 
     165                    self.session.addToSelected(s.url,n) 
     166 
    163167                    #we also need to trim the selector off the current requestURL 
    164168                    self.requestURL=self.requestURL[0:self.requestURL.find('&select')] 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/htmlUtilities.py

    r1164 r1173  
    88        self.argument=arg 
    99        self.icon=icon 
    10     def target(self,id): 
     10    def target(self,id,name=None): 
    1111        url='%s&%s=%s'%(self.baseURL,self.argument,id) 
     12        if name is not None: url+='&name=%s'%name 
    1213        return hyperlink(image(self.icon,self.argument),url) 
    1314 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/renderDiscoverySet.py

    r1164 r1173  
    4040        ll=span(' Links: ','ndgem') 
    4141        ndg=0 
    42         s=1 
     42        ll+=d.binding.icon() 
    4343        for item in d.services: 
    44             if not s: ll+=', ' 
    45             s=0 
     44            ll+=', ' 
     45            #s=0 
    4646            if item.serviceType == 'NDG_A_SERVICE':  
    4747                ll+=item.icon() 
     
    5252            else: 
    5353                ll+=item.icon() 
     54         
    5455        if ndg<2: ndg=0 
    5556        return ndg,ll 
     
    8788                rlist[0]='%s: %s'%(span('Name','ndgem'),rlist[0]) 
    8889                rlist[0]+='<br/>%s: %s'%(span('Summary','ndgem'),abbreviate(d.abstract,200)) 
    89                 rlist[0]+=' '+hyperlink('(more)',d.entryID) 
     90                rlist[0]+=' '+hyperlink('(more)',d.binding.url) 
    9091            rlist[0]+='<br/>%s: %s.'%(span('Repository','ndgem'),d.centre.toHTML()) 
    9192            if not summary: 
    92                 rlist[0]+=' '+hyperlink('(more)',d.entryID) 
     93                rlist[0]+=' '+hyperlink('(more)',d.binding.url) 
    9394            if services:rlist[0]+=slist 
    94             if ndg and selector !=None: rlist[0]+=',&nbsp;'+selector.target(d.entryID) 
     95            if ndg and selector !=None:  
     96                rlist[0]+=',&nbsp;'+selector.target(d.entryID,name=d.abbreviation) 
    9597            if spatial: rlist.append(spatialBox(d)) 
    9698            if temporal:  
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/serviceMap.config

    r1171 r1173  
    33# service, it also provides icons associated with the services for display 
    44# 
     5[DEFAULT] 
     6localhost: http://localhost.localdomain:8000/cgi 
     7layout:    /layout 
     8#localhost: http://glue.badc.rl.ac.uk/cgi-bin/ 
     9 
    510[NDG_A_SERVICE] 
    611badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/dxui 
    7 icon: /layout/A.gif 
     12icon: %(layout)s/A.gif 
    813icon_alt: A Service 
    914service_name: A 
     
    1116 
    1217[NDG_B_SERVICE] 
    13 #badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/cgi-bin/browse.py 
    14 badc.nerc.ac.uk: http://localhost.localdomain:8000/cgi/browse.py 
    15 icon: /layout/B.gif 
     18badc.nerc.ac.uk: %(localhost)s/browse.py 
     19icon: %(layout)s/B.gif 
    1620icon_alt: B Service 
    1721service_name: B 
     
    1923 
    2024[RELATED] 
    21 icon: /layout/R.gif 
     25icon: %(layout)s/R.gif 
    2226icon_alt: Related 
    2327service_name: Related 
     28 
     29[DISCOVERY] 
     30icon: %(layout)s/D.gif 
     31icon_alt: Catalogue 
     32service_name: Catalogue 
     33badc.nerc.ac.uk: %(localhost)s/browse.py 
     34instance: D=1&uri 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/stubB.py

    r1171 r1173  
    111111                        self.name='Not Found' 
    112112                        return 
     113                id=self.tree.find('dgMetadataID') 
    113114                self.binding=ServiceBinding(n=wrapGetText(self.tree,'abbreviation'), 
    114                                 nativeID=self.tree.find('dgMetadataID'),serviceFile=serviceFile) 
     115                                nativeID=id,serviceFile=serviceFile) 
    115116                self.Burl=self.binding.url 
     117                self.entryID=idconvert(id) 
    116118                               
    117119                #Note that the root of the ElementTree instance is dgMetadataRecord 
Note: See TracChangeset for help on using the changeset viewer.