Ignore:
Timestamp:
06/02/07 21:23:20 (13 years ago)
Author:
lawrence
Message:

Modifications to show original records

File:
1 edited

Legend:

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

    r2098 r2118  
    4343            if format=='DIF': 
    4444                r=DIF(xml,ndgObject=ndgObject) 
    45                 print 'bnl2' 
    4645            elif format=='NDG-B1': 
    4746                r=stubB(xml,self.config) 
     
    8584         
    8685        inputs=dict(parse_querystring(environ)) 
    87         #print inputs 
    8886         
    8987        ctype='text/html'   # default content type (since the default 
    9088                            # may be an error return ...) the actual default 
    9189                            # data type for return is xml. 
    92         if 'uri' not in inputs.keys(): 
     90                             
     91        ctype,r=self._present(inputs,ctype) 
     92         
     93        start_response('200 OK', [('Content-Type', ctype)]) 
     94        return [r] 
     95                 
     96    def _present(self,inputs,ctype): 
     97        ''' This is the entry point for an  inner retrieval loop for document retrieval ''' 
     98        # we seperate this out for ease of building test cases 
     99        ori,format=0,None 
     100         
     101        if 'original' in inputs.keys(): ori=1 
     102         
     103        try: 
     104            outputType=inputs['type'] 
     105        except KeyError: 
     106            outputType='print' 
     107         
     108        if 'uri' not in inputs.keys(): 
    93109            r=self.__prompt() 
    94110            raise ValueError,r 
     
    97113            uri=ndgObject(inputs['uri']) 
    98114            uri.setConfig(self.config) 
     115            self.uri=uri 
    99116            if 'repository' in inputs.keys():  
    100117                db=inputs['repository'] 
     
    108125            ok=1 
    109126            try: 
    110                 if 'format' not in inputs.keys(): 
    111                     format='NDG-B0' 
     127                if ori: 
     128                    print 'and off we go' 
     129                    r=ws.getOriginal(uri.uri) 
     130                    if outputType=='html': outputType='print'  # sanity ...     
    112131                else: 
    113                     format=inputs['format'] 
    114                 r=ws.get(uri.repository,uri.schema,uri.localID,format=format) 
     132                    if 'format' not in inputs.keys(): 
     133                        format='NDG-B0' 
     134                    else: 
     135                        format=inputs['format'] 
     136                    r=ws.get(uri.repository,uri.schema,uri.localID,format=format)        
    115137                if isinstance(r,int): 
    116138                     r='<p> There are %s identifiers matching your request! </p>'%r 
    117139                     ok=0 
    118140            except Exception,e: 
    119                  r='<p> Unable to retrieve [%s], reason was [%s]</p>'%(uri,e) 
     141                 r='<p> Unable to retrieve [%s], reason was [%s]</p>'%(uri.uri,e) 
    120142                 ok=0 
    121             if ok: 
    122                 try: 
    123                     outputType=inputs['type'] 
    124                 except KeyError: 
    125                     outputType='print' 
    126                 if outputType!='xml':  
    127                     try: 
    128                         r=self.shower.get(r,format,otype=outputType,ndgObject=uri) 
    129                     except Exception,e: 
    130                         r='<p> Unable to show document, reason was [%s]<p>'%e 
    131                 else: 
    132                     ctype='text/xml' 
    133             start_response('200 OK', [('Content-Type', ctype)]) 
    134         return [r]     
    135                  
     143         
     144        if not ok: return ctype,r 
     145         
     146        if outputType!='xml':  
     147            try: 
     148                r=self.shower.get(r,format,otype=outputType,ndgObject=self.uri) 
     149            except Exception,e: 
     150                r='<p> Unable to show document, reason was [%s]<p>'%e 
     151        else: 
     152            ctype='text/xml' 
     153        return ctype,r 
    136154     
    137155     
     
    154172        return h 
    155173     
     174import unittest 
     175testURI='noc.soton.ac.uk__DIF__NOCSDAT193' 
     176class TestCase(unittest.TestCase): 
    156177     
     178 
     179    def testRetrieve(self): 
     180        ''' Test fundamental retrieval capability ''' 
     181        ctype='text/html'  
     182        retriever=ndgRetrieve('./') 
     183        inputs={'repository':'glue.badc.rl.ac.uk','uri':testURI,'format':'DIF','type':'html'} 
     184        ctype,r=retriever._present(inputs,ctype) 
     185         
     186    def testOriginal(self): 
     187        ''' Tests the ability to obtain an original document ''' 
     188        ctype='text/html'  
     189        retriever=ndgRetrieve('./') 
     190        inputs={'repository':'glue.badc.rl.ac.uk','uri':testURI,'format':'DIF','type':'html','original':'1'} 
     191        ctype,r=retriever._present(inputs,ctype) 
     192         
     193if __name__=="__main__": 
     194    unittest.main() 
     195     
Note: See TracChangeset for help on using the changeset viewer.