Changeset 1182 for TI07-MOLES
- Timestamp:
- 14/06/06 21:44:17 (15 years ago)
- 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 69 69 70 70 #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) 72 72 self.curator=DIFcontact(self.tree) 73 73 -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/ETxmlView.py
r1175 r1182 34 34 else: 35 35 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('') 38 43 except: 39 44 rr=['',] … … 52 57 return elem.findall(xe) 53 58 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 63 def et2text(elem,indent='',html=0,space=' ',helper=None): 55 64 '''Lightweight pretty printing of elementTree elements''' 56 65 def estrip(elem): … … 60 69 else: 61 70 return elem.strip() 71 ns=helper 72 if ns is None: ns=nsdumb(elem) 62 73 strAttrib='' 63 74 for att in elem.attrib: 64 75 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)) 66 77 children=len(elem) 67 78 if children: 68 79 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)) 71 82 else: 72 result+='</%s>'%( elem.tag)83 result+='</%s>'%(ns.strip(elem.tag)) 73 84 return result 74 85 75 86 76 def et2html(elem,matchList=[],number=0 ):87 def et2html(elem,matchList=[],number=0,helper=None): 77 88 #this method is NDG code ... copyright CCLRC ... 78 89 '''Lightweight HTML pretty printing of elementTree elements + highlight … … 95 106 return x 96 107 lt,gt='<b><</b>','<b>></b>' 108 ns=helper 109 if ns is None: ns=nsdumb(elem) 97 110 strAttrib='' 98 111 for att in elem.attrib: 99 112 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)) 101 114 children=len(elem) 102 115 if children: 103 116 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) 106 119 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) 108 121 return div(result,'xmlElem') 109 122 -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/People.py
r1164 r1182 1 1 from Utilities import wrapGetText 2 from ETxmlView import nsdumb 3 from htmlUtilities import * 4 2 5 class Name: 3 6 ''' Handles the name type in MOLES ''' … … 31 34 def toHTML(self,prefix=''): 32 35 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 n37 36 html=prefix #para start? 38 37 if self.data['personName']!='': 39 38 if self.data['personEmail']!='': 40 html+= makelink(self.data['personEmail'],self.data['personName'])39 html+=hyperlink(self.data['personName'],self.data['personEmail']) 41 40 if self.data['personPhone']!='': html+='<br/>Phone: %s'%self.data['personPhone'] 42 41 br='' 43 42 if html!='': br='<br/>' #only need a linebreak if there is already content ... or '<p> 44 43 if self.data['orgName']!='': 45 html+=br+makelink(self.data['orgURL'],self.data['orgName'])44 html+=br+hyperlink(self.data['orgName'],self.data['orgURL']) 46 45 if self.data['searchlink']!='': html+='<br/>'+self.data['searchlink'] 47 46 html+='' # para end? … … 69 68 70 69 class 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() 72 72 self.elem=elem 73 73 contact.__init__(self) 74 74 if self.elem is None: return 75 75 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') 78 78 else: 79 79 self.data['personName']='placeholder for DIF contact' -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/ServiceBinding.py
r1175 r1182 31 31 def __init__(self,serviceFile='cgi/serviceMap.config'): 32 32 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') 35 40 def do(self,serviceType,dataProvider): 36 41 ''' Return an actual endpoint for a given service from the data provider, e.g. … … 39 44 r=self.get(serviceType,dataProvider) 40 45 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,a45 except: pass46 47 46 # just return the URL 48 47 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 56 52 57 53 class Service: … … 69 65 specific repository. Note that we support the NDG id in the abbreviated format 70 66 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'): 72 68 Service.__init__(self) 73 69 # regrettably we used different things in our ID's than we did in … … 103 99 #<URL>http://badc.nerc.ac.uk/browse/badc/CDs/spade9293</URL> 104 100 #</Related_URL> 101 #following call simply sets some defaults 105 102 s,r,l,b=self.__getsrlb(entryID) 106 # now ovewrite the self description above with107 # detail from this particular rleated url103 #which we now overwrite with detail from this particular rleated url 104 #following helps us avoid namespace problems 108 105 if helper is None:helper=nsdumb() 109 106 self.description=helper.getText(elem,'Description') … … 111 108 self.serviceType=s 112 109 if s!='': 110 #we (NDG) know about this type of URL ... 113 111 r=helper.getText(elem,'URL') 114 112 b=self.serviceMap.do(s,r) … … 116 114 self.url=self.__makeurl(s,b,uri,seqno) 117 115 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')) 119 119 return self 120 120 def __str__(self): … … 150 150 s,r,l='DISCOVERY','',entryID 151 151 b=self.serviceMap.get(s,'default') 152 self.serviceMap.seticon(s) 152 153 return s,r,l,b 153 154 -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/browse.config
r1171 r1182 9 9 jarLoc: returnstubb.jar 10 10 javaBinary: java 11 searchWSDL: http://superglue.badc.rl.ac.uk/exist/services/Discovery?WSDL 11 12 12 13 [db] … … 16 17 17 18 [layout] 18 19 19 localLink: http://www.badc.rl.ac.uk 20 20 localImage: /layout/bodc_logo.gif -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/browseCGI.py
r1175 r1182 226 226 if self.b.constraints.exist: 227 227 # we need to evaluate them 228 #result=self.ndgGate.check(self.b.constraints.SimpleCondition) 228 229 try: 229 230 result=self.ndgGate.check(self.b.constraints.SimpleCondition) … … 232 233 else: 233 234 access=0 234 except :235 except Exception,e: 235 236 #unable to make ndggate check ... deny 236 237 access=0 237 238 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) 238 241 else: 239 242 access=1 … … 259 262 title='Search for '+searchString 260 263 try: 261 ws=DiscoveryWS( )264 ws=DiscoveryWS(wsdl=self.config.get('services','searchWSDL')) 262 265 except Exception, e: 263 266 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 17 17 18 18 def 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 21 24 def image(l,a): 22 25 return '<img src="%s" alt="%s"/>'%(l,a) -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/insecure.py
r1175 r1182 60 60 61 61 if __name__=="__main__": 62 import sys 63 id=sys.argv[1] 64 print id 62 65 javaBin='java' 63 66 jarLoc='../../returnstubb.jar' 64 id='badc.nerc.ac.uk/dataent2' 67 #id='badc.nerc.ac.uk/dataent2' 68 #id='badc.nerc.ac.uk/metdesc2' 65 69 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') 67 71 print d 68 72 #print d -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/renderPage.py
r1164 r1182 64 64 #now get the banner section 65 65 #note we have to escape the % ... 66 html+='''<body><div class="ndgHeader"> 66 67 banner=''' 67 68 <table cellpadding="0" cellspacing="0" width="100%%"> 68 69 <tbody><tr> … … 74 75 <a href="%s"> <img src="%s" alt="%s"/> </a> </td> 75 76 </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) 78 80 79 81 gotoA=image(selImage,'DataService') … … 90 92 </div> 91 93 <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%%"> 94 96 %s 95 97 </div> -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/serviceMap.config
r1175 r1182 9 9 10 10 [NDG_A_SERVICE] 11 badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/ dxui11 badc.nerc.ac.uk: http://glue.badc.rl.ac.uk/cgi-bin/dxui 12 12 icon: %(layout)s/A.gif 13 13 icon_alt: A Service … … 26 26 icon_alt: Related 27 27 service_name: Related 28 instance: uri 28 29 29 30 [DISCOVERY] -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browse/stubB.py
r1175 r1182 123 123 self.constraints=AccessControl(self.tree.find('dgMetadataSecurity')) 124 124 self.abbreviation=wrapGetText(self.tree,'abbreviation') 125 if self.abbreviation=='': self.abbreviation=self.name[0:min(5,len(self.name))] 125 126 126 127 elem=self.tree.find('dgDataEntity') -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/layout/style.css
r1105 r1182 26 26 #Content { 27 27 PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 10px; 28 MARGIN-LEFT: 190px; 28 MARGIN-LEFT: 190px; MARGIN-RIGHT: 10px; 29 29 } 30 30 tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF} -
TI07-MOLES/trunk/StubB/XSLT/browse/portal/returnmoles.Readme.txt
r993 r1182 26 26 userpw - default = "guest" 27 27 28 format - default = "NDG-B0". Also supports values of "DC" and "DIF" 29 28 30 29 31 Note that everything is case-sensitive, but parameters can be in any order. … … 33 35 java -jar returnstubb.jar repositoryID badc.nerc.ac.uk localID dataent1 repository xmldb:exist://glue.badc.rl.ac.uk:8080/exist/xmlrpc userpw secret 34 36 35 This will return the MOLES for a data entity from glue using the guest ID.37 This will return the MOLES for a data entity from glue using the ID ndgquery. 36 38 39 Another 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 43 This will return the DIF for a data entity from livglue using the ID ndgquery. 37 44 38 45 3) Non-zero return codes:
Note: See TracChangeset
for help on using the changeset viewer.