Ignore:
Timestamp:
02/02/07 16:28:09 (13 years ago)
Author:
lawrence
Message:

Sundry modifications associated with the deployment on glue, and better
options for viewing and downloading the underlying xml records (not yet
complete)

File:
1 edited

Legend:

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

    r2046 r2097  
    66from DIF import DIF 
    77from stubB import stubB 
     8from ndgObject import ndgObject 
    89 
    910# any class with a get method can be used here, and then only 
     
    4142        if otype=='html': 
    4243            if format=='DIF': 
    43                 r=DIF(xml,self.config) 
     44                r=DIF(xml) 
    4445            elif format=='NDG-B1': 
    4546                r=stubB(xml,self.config) 
     
    8384         
    8485        inputs=dict(parse_querystring(environ)) 
    85         print inputs 
     86        #print inputs 
    8687         
    8788        ctype='text/html'   # default content type (since the default 
     
    9293            raise ValueError,r 
    9394        else: 
    94             uri=inputs['uri'].strip() 
     95            #this will raise a ValueError if there is a problem 
     96            uri=ndgObject(inputs['uri']) 
     97            if 'repository' in inputs.keys():  
     98                db=inputs['repository'] 
     99            else: 
     100                db=uri.repository 
     101            if db in self.WScursors.keys(): 
     102                ws=self.WScursors[db] 
     103            else: 
     104                ws=DocumentRetrieve(db) 
     105                self.WScursors[db]=ws 
    95106            ok=1 
    96             bits=uri.split(':') 
    97             bits2=uri.split('__') 
    98             if len(bits)==3: 
    99                 repository,schema,localID=bits 
    100             elif len(bits2)==3: 
    101                 repository,schema,localID=bits2 
    102             else: 
    103                 bits=uri.split('/') 
    104                 if len(bits)==2: 
    105                     schema='NDG-B0' 
    106                     repository,localID=bits 
    107                 else: ok=0 
    108             if not ok: 
    109                 r='URI [%s] is not a valid NDG style URI'%uri 
    110             else: 
    111                 if 'repository' in inputs.keys():  
    112                     db=inputs['repository'] 
     107            try: 
     108                if 'format' not in inputs.keys(): 
     109                    format='NDG-B0' 
    113110                else: 
    114                     db=repository 
    115                 if db in self.WScursors.keys(): 
    116                     ws=self.WScursors[db] 
    117                 else: 
    118                     ws=DocumentRetrieve(db) 
    119                     self.WScursors[db]=ws 
     111                    format=inputs['format'] 
     112                r=ws.get(uri.repository,uri.schema,uri.localID,format=format) 
     113                if isinstance(r,int): 
     114                     r='<p> There are %s identifiers matching your request! </p>'%r 
     115                     ok=0 
     116            except Exception,e: 
     117                 r='<p> Unable to retrieve [%s], reason was [%s]</p>'%(uri,e) 
     118                 ok=0 
     119            if ok: 
    120120                try: 
    121                     if 'format' not in inputs.keys(): 
    122                         format='NDG-B0' 
    123                     else: 
    124                         format=inputs['format'] 
    125                     r=ws.get(repository,schema,localID,format=format) 
    126                     if isinstance(r,int): 
    127                         r='<p> There are %s identifiers matching your request! </p>'%r 
    128                         ok=0 
    129                 except Exception,e: 
    130                     r='<p> Unable to retrieve [%s], reason was [%s]</p>'%(uri,e) 
    131                     ok=0 
    132             if ok: 
    133                 outputType=inputs['type'] 
     121                    outputType=inputs['type'] 
     122                except KeyError: 
     123                    outputType='print' 
    134124                if outputType!='xml':  
    135                     r=self.shower.get(r,format,otype=outputType) 
     125                    try: 
     126                        r=self.shower.get(r,format,otype=outputType) 
     127                    except Exception,e: 
     128                        r='<p> Unable to show document, reason was [%s]<p>'%e 
    136129                else: 
    137130                    ctype='text/xml' 
     
    158151        ''' 
    159152        return h 
     153     
     154     
Note: See TracChangeset for help on using the changeset viewer.