Changeset 2330 for TI07-MOLES


Ignore:
Timestamp:
26/03/07 22:21:36 (12 years ago)
Author:
lawrence
Message:

Sundry testcases plus a a bug fix for ticket:666 ... it's done, but I
don't like this bugfix because it shows that I don't really understand
unicode properly. Need to revisit unicode again ... later.

Location:
TI07-MOLES/trunk/PythonCode/wsgi
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/wsgi/DIF.py

    r2315 r2330  
    7979            #print '[%s]\n%s'%(name,ET.tostring(parameter)) 
    8080            if name=='': 
    81                 name=parameter.text 
     81                name=helper.getText(parameter,'./')#.text 
    8282                if name is not None:  
    8383                    #self.parameters.append(name.replace('>','/')) 
     
    117117        if (self.authors!='' and self.date!='' and self.title!=''): 
    118118            self.briefCitation='%s (%s): %s'%(self.authors,self.date,self.title) 
    119  
    120119        #services 
    121120        self.services=[] 
     
    182181        ''' Testing obtaining parameters from an edmed dif in original format ''' 
    183182        print 'Parameters %s'%self.dif.parameters 
     183         
     184    def testDifficult(self): 
     185        ''' Grab a test example from the internet and load it ''' 
     186        from ndgRetrieve import ndgRetrieve 
     187        retriever=ndgRetrieve('./') 
     188        testURI='grid.bodc.nerc.ac.uk__DIF__EDMED1048008' 
     189        inputs={'repository':'glue.badc.rl.ac.uk','uri':testURI,'format':'original','type':'xml','original':'1'} 
     190        ctype,r=retriever._present(inputs,'text/html') 
     191        d=DIF(r) 
     192        print d.entryID,[str(i) for i in d.services] 
     193 
    184194 
    185195if __name__=="__main__": 
  • TI07-MOLES/trunk/PythonCode/wsgi/DiscoveryGUI.py

    r2319 r2330  
    77from Utilities import myConfig 
    88from ndgObject import ndgObject 
    9  
     9debug=1 
    1010class DiscoveryGUI: 
    1111    ''' This class handles the NDG gui search interface, and is intimately related to the  
     
    136136                    obj=ndgObject(result[0]) 
    137137                    obj.setConfig(self.config) 
    138                     print result[0],obj.gettable 
    139138                    difs.append(DIF(result[1],ndgObject=obj)) 
     139                    if debug: print 'DIF record obtained: %s'%difs[-1].entryID 
    140140                if results==[]: 
    141141                    self.html+='<p>No results for "%s"!</p>'%searchString 
     
    145145                               summary=1,spatial=1,temporal=1,services=1) 
    146146            except ValueError,e: 
    147                 self.html='<p> Error retrieving documents for %s hits is [%s]</p>'%(hits,e) 
     147                if debug:  
     148                    raise ValueError,str(e) 
     149                else: 
     150                    self.html='<p> Error retrieving documents for %s hits is [%s]</p>'%(hits,e) 
    148151                                
    149152        self.standardInterface() 
  • TI07-MOLES/trunk/PythonCode/wsgi/DocumentRetrieve.py

    r2319 r2330  
    4949            id,summary=self.executeQuery(xquery) 
    5050            hits=summary['hits'] 
    51             print 'bnl',targetCollection,xquery 
     51            #print 'bnl',targetCollection,xquery 
    5252             
    5353            if hits!=1: raise ValueError,'%s documents returned for uri %s:%s:%s'%(hits,repository,'NDG-B0',localID) 
  • TI07-MOLES/trunk/PythonCode/wsgi/ETxmlView.py

    r2278 r2330  
    3232    ''' provides an xpath interface to element tree nodes which 
    3333    is namespace agnostic ''' 
    34     def __init__(self,root=None): 
     34    def __init__(self,root=None,encoding='utf-8'): 
    3535        ''' Provide a root element with namespace definitions when 
    3636        instantiatin ''' 
     37        self.encoding=encoding 
    3738        if root is None:  
    3839            self.xmlns='' 
     
    4950                    ns,local=root.tag.split('}') 
    5051                    self.xmlns='{%s}'%ns[1:] 
     52         
    5153    def __str__(self): 
    5254        return 'Element Tree namespace helper with namespace: [%s]'%self.xmlns 
     
    7476                    t=i.text  
    7577                    if t is not None:  
    76                         rr.append(t) 
     78                        rr.append(t.encode(self.encoding)) 
    7779                    else: rr.append('') 
    7880        except: 
     
    8082        if multiple:  
    8183                return rr 
    82         else: return rr[0]  
     84        else: return rr[0] 
    8385         
    8486    def find(self,elem,xpathExpression): 
  • TI07-MOLES/trunk/PythonCode/wsgi/ndgRetrieve.py

    r2319 r2330  
    131131                    print 'Original Document Request' 
    132132                    r=ws.getOriginal(uri.uri) 
     133                    print 'Succeeded' 
    133134                    if outputType=='html': outputType='print'  # sanity ...     
    134135                else: 
     
    181182#testURI='noc.soton.ac.uk__DIF__NOCSDAT193' 
    182183#testURI='ndg.noc.soton.ac.uk__NDG-B0__NOCSDAT274' 
    183 testURI='grid.bodc.nerc.ac.uk__DIF__EDMED1048034' 
     184#testURI='grid.bodc.nerc.ac.uk__DIF__EDMED1048034' 
     185testURI='grid.bodc.nerc.ac.uk__DIF__EDMED1048008' 
    184186retriever=ndgRetrieve('./') 
    185187class TestCase(unittest.TestCase): 
  • TI07-MOLES/trunk/PythonCode/wsgi/renderDiscoverySet.py

    r2299 r2330  
    44from htmlUtilities import * 
    55from renderService import * 
    6  
     6debug=1 
    77def renderDiscoverySet(difSet,state,config,summary=0,services=0,spatial=0,temporal=0, 
    88    linkto='NDG_B_SERVICE',selector=None): 
     
    4444        serviceRenderer=renderService(config) 
    4545        if d.binding is not None: ll+=serviceRenderer.get(d.binding)[0] 
     46        for i in d.services: print i.url 
    4647        for item in d.services: 
    4748            ll+=', ' 
     
    5152            elif item.contentType == 'NDG_B_SERVICE': 
    5253                ndg+=1 
     54            print 'starting services',item.url 
    5355            ll+=serviceRenderer.get(item)[0] 
    54          
     56            print 'finishing services',item.url 
    5557        if ndg<2: ndg=0 
    5658        return ndg,ll 
     
    8082        bgc={1:'rbgWhite',-1:'rbgGrey'}[i] 
    8183        i=-1*i 
    82          
     84        if debug: print 'Rendering ',d.entryID 
    8385        if d.tree is None: 
    8486            html+='<tr class="%s"><td colspan="%s"> Unparseable record </td></tr>'%(bgc,len(columns)) 
     
    104106                rlist.append(htmlTime(d.timeCoverage[1])) 
    105107            html+=row(rlist,bgcolor=bgc) 
     108        print 'Completed rendering ',d.entryID 
    106109 
    107110    html+='</tbody></table>' 
  • TI07-MOLES/trunk/PythonCode/wsgi/renderService.py

    r2296 r2330  
    44        self.config=config 
    55    def get(self,service): 
    6         print 'BNL',service 
    76        if service.contentType.upper() not in ['NDG_A_SERVICE','NDG_B_SERVICE','DISCOVERY']: 
    87            section='RELATED' 
     
    2221            description=service.description+' Note that NDG services are not currently enabled.' 
    2322        else: 
    24             description=service.description 
    25         return ('<a href="%s" title="%s"><img src="%s" alt="%s"/></a>'%( 
     23            #this is a bug fix, and it worries me that I had to do it ... I don't understand why 
     24            #ideally this should apply to all the attributes of a DIF ...  
     25            description=service.description.decode('utf-8') 
     26        x=('<a href="%s" title="%s"><img src="%s" alt="%s"/></a>'%( 
    2627                url,description,icon,alt),description) 
    27  
     28        return x 
    2829 
    2930import unittest 
     
    3132from Utilities import myConfig 
    3233 
     34configFile='examples/example.config' 
    3335class TestCase(unittest.TestCase): 
    3436 
    3537    def testDIFBinding(self): 
    3638        ''' Tests a DIF binding does the right thing ''' 
    37         configFile='examples/example.config' 
     39         
    3840        s=DIFService('NDG_B_SERVICE','grid.bodc.rl.ac.uk','The NDG service for browsing metadata') 
    3941        c=myConfig(configFile) 
     
    4143        print x.get(s) 
    4244         
     45    def testOdditity(self): 
     46        '''Tests a specific record for misbehaviour''' 
     47        from ndgRetrieve import ndgRetrieve 
     48        from DIF import DIF 
     49        from ndgObject import ndgObject 
     50        testURI='grid.bodc.nerc.ac.uk:DIF:EDMED1048008' 
     51        inputs={'repository':'glue.badc.rl.ac.uk','uri':testURI,'format':'DIF','type':'xml','original':'1'} 
     52        retriever=ndgRetrieve('./') 
     53        ctype,r=retriever._present(inputs,'text/xml') 
     54        con=myConfig(configFile) 
     55        obj=ndgObject(testURI) 
     56        obj.setConfig(con) 
     57        d=DIF(r,ndgObject=obj) 
     58        for s in d.services: 
     59            h=renderService(con) 
     60            print h.get(s) 
     61 
     62         
    4363if __name__=="__main__": 
    4464    unittest.main() 
  • TI07-MOLES/trunk/PythonCode/wsgi/xmlHandler.py

    r2315 r2330  
    5757 
    5858        f=arg 
    59         if string ==1: f=StringIO.StringIO(arg) 
     59        # The following is an ugly unicode bug fix, and I don't like it ... we should really 
     60        # use the encoding specified in the file ... but we don't know it properly. 
     61        if string ==1: f=StringIO.StringIO(arg.encode('utf-8')) 
    6062        self.html='' 
    6163        self.text='' 
Note: See TracChangeset for help on using the changeset viewer.