Changeset 4198 for TI05-delivery


Ignore:
Timestamp:
15/09/08 14:12:49 (11 years ago)
Author:
cbyrom
Message:

Add genshi support to ows server code + add genshi templates for
atom rendering + add code to allow use of both kid and genshi templates
+ extend logging.

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server
Files:
5 added
4 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/config/environment.py

    r3893 r4198  
    3030    config.init_app(global_conf, app_conf, package='ows_server', 
    3131                    template_engine='kid', paths=paths) 
    32  
     32    config.add_template_engine("genshi", "ows_server.templates", {}) 
     33     
    3334    config['pylons.g'] = app_globals.Globals() 
    3435    config['pylons.h'] = ows_server.lib.helpers 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/discovery.py

    r4183 r4198  
    11import socket # Handle Discovery service down socket.error 
    22import logging 
    3 log = logging.getLogger(__name__) 
    43 
    54from ows_server.lib.base import * 
     
    1514from ows_server.lib.mailer import mailHandler 
    1615from ndgUtils.xmlHandler2 import xmlHandler 
    17 import logging 
    1816 
    1917logging.basicConfig(level=logging.DEBUG, 
     
    169167                                geoSearchType=geoSearch) 
    170168        except socket.error, e: 
    171             log.error("Socket error for discovery service search: %s" % e) 
     169            logging.error("Socket error for discovery service search: %s" % e) 
    172170            c.xml='The Discovery Service is unavailable.  Please check with '+\ 
    173171                    'your system administrator' 
    174172            return render('error') 
    175173        except Exception, e: 
    176             log.error("Calling discovery service search: %s" % e) 
     174            logging.error("Calling discovery service search: %s" % e) 
    177175            c.xml='An internal error occured.  Please check with ' + \ 
    178176                    'your system administrator' 
     
    190188        searchConstraints=self.__buildconstraints(dateRange,bbox,scope,\ 
    191189                                                  searchString,geoSearch) 
    192          
    193190        hits=ws.hits 
    194191        if hits==0: 
    195             outMessage = 'No records found [%s]' %c.state.constraints 
     192            outMessage = 'No records found [contraints: %s]' %searchConstraints 
    196193            logging.info(outMessage)  
    197194            c.xml='<p>' + outMessage + '</p>' 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r4183 r4198  
    88from ows_server.lib.ndgInterface import interface  
    99from xml.parsers.expat import ExpatError 
    10  
    1110import logging 
    12 log = logging.getLogger(__name__) 
    13  
    1411 
    1512class RetrieveController(BaseController): 
     
    2724            return e 
    2825 
    29         self.logger=0 
    30         if logger: self.logger=logger 
    3126        self.inputs=dict(parse_querystring(request.environ)) 
    3227 
     
    3530        #   outputSchema=(original, someSchema)  
    3631        self.format='' 
    37         if 'format' in self.inputs: self.format=self.inputs['format'] 
     32        if 'format' in self.inputs:  
     33            self.format=self.inputs['format'] 
    3834        self.outputSchema='' 
    39         if 'outputSchema' in self.inputs: self.outputSchema=self.inputs['outputSchema'] 
     35        if 'outputSchema' in self.inputs:  
     36            self.outputSchema=self.inputs['outputSchema'] 
    4037 
    4138        # Add selected granules to context 
     
    7572            return render('error') 
    7673 
     74        logging.info("Retrieving document to view") 
    7775        status,x=interface.GetXML(uri,outputSchema=self.outputSchema) 
    7876        c.title='Viewing [%s]'%self.uri 
    79         
    80         if status: 
     77         
     78        # NB, legacy code uses kid templates - newer stuff should use genshi 
     79        templateType = "kid" 
     80        if status: 
     81            logging.debug("Document retrieved ok - now processing results") 
    8182            #(the return object x is an xmlHandler object) 
    8283            viewFormat=self.uri.schema 
    83             if self.outputSchema!='': viewFormat=self.outputSchema 
    84             if self.format not in ('xml','raw'): 
    85                 if viewFormat=='NDG-B1': 
    86                     r='stubB' 
    87                     c.doc=stubB.stubB(x.tree,self.cf) 
    88                     c.tbinfo=self.__mytb(c.doc.name) 
    89                     name=c.doc.abbreviation 
    90                 elif viewFormat=='NDG-A0': 
    91                     r='csml' 
    92                     name=self.uri.localID 
    93                     #for now we'll handle as pretty print xml 
    94                     c.xml=x.tohtml() 
    95                     r='content' 
    96                     c.tab='Details' 
    97                 elif viewFormat=='DIF': 
    98                     r='dif' 
    99                     c.doc=DIF.DIF(x.tree,et=1,ndgObj=self.uri) 
    100                     name=c.doc.name 
    101                 elif viewFormat=='NumSim': 
    102                     r='numsim' 
    103                     c.xmlh=x 
    104                     c.tbinfo=self.__mytb('') 
    105                     name=x.getText('NS_Name') 
    106                     c.name=name 
    107                 else: 
    108                     c.xml=x.tohtml() 
    109                     r='content' 
     84            if self.outputSchema!='':  
     85                viewFormat=self.outputSchema 
     86 
     87            logging.debug("Doc format: %s, View format: %s" \ 
     88                           %(self.format, viewFormat)) 
     89 
     90            name=str(self.uri) 
     91            if self.format=='xml': 
     92                c.xml=x.tohtml() 
     93                renderTemplate = 'content' 
     94                c.tab='Details' 
     95 
     96            elif self.format=='raw': 
     97                c.xml=x.xmls 
     98                response.headers['Content-Type'] = 'application/xml' 
     99                return response.write(c.xml) 
     100                 
     101            elif viewFormat == ndgObject.ATOM_DOC_TYPE or \ 
     102                viewFormat ==  ndgObject.ATOM_BACKUP_DOC_TYPE: 
     103                renderTemplate = 'atom' 
     104                c.xmlh=x 
     105                c.r = info = self.__mytb('') 
     106                c.title=x.getText('title') 
     107                templateType = "genshi" 
     108 
     109            elif viewFormat == ndgObject.MOLES_DOC_TYPE: 
     110                renderTemplate = 'stubB' 
     111                c.doc=stubB.stubB(x.tree,self.cf) 
     112                c.tbinfo=self.__mytb(c.doc.name) 
     113                name=c.doc.abbreviation 
     114                 
     115            elif viewFormat == ndgObject.NDGA0_DOC_TYPE: 
     116                #renderTemplate = 'csml' 
     117                renderTemplate = 'content' 
     118                name=self.uri.localID 
     119                #for now we'll handle as pretty print xml 
     120                c.xml=x.tohtml() 
     121                c.tab='Details' 
     122                 
     123            elif viewFormat == ndgObject.DIF_DOC_TYPE: 
     124                renderTemplate = 'dif' 
     125                c.doc=DIF.DIF(x.tree,et=1,ndgObj=self.uri) 
     126                name=c.doc.name 
     127                 
     128            elif viewFormat == ndgObject.NUMSIM_DOC_TYPE: 
     129                renderTemplate = 'numsim' 
     130                c.xmlh=x 
     131                c.r = info = self.__mytb('') 
     132                name=x.getText('NS_Name') 
     133                c.name=name 
     134                 
    110135            else: 
    111                 name=str(self.uri) 
    112                 if self.format=='xml': 
    113                     c.xml=x.tohtml() 
    114                     r='content' 
    115                     c.tab='Details' 
    116                 elif self.format=='raw': 
    117                     c.xml=x.xmls 
    118                     response.headers['Content-Type'] = 'application/xml' 
    119                     return response.write(c.xml) 
     136                c.xml=x.tohtml() 
     137                renderTemplate = 'content' 
    120138             
    121139            needed=0 
    122             if 'lastViewed' not in session: needed=1 
     140            if 'lastViewed' not in session:  
     141                needed=1 
     142                 
    123143            session['lastViewed']=h.current_url() 
    124             if needed: c.pageTabs.append(('Details',session['lastViewed'])) 
     144            if needed:  
     145                c.pageTabs.append(('Details',session['lastViewed'])) 
    125146             
    126147            session.save() 
    127148            code=200 
    128149        else: 
     150            renderTemplate = 'error' 
    129151            if x.startswith('<p> Access Denied'): 
    130152                code=401 
    131153            else: code=400 
    132154            c.xml='%s'%x 
    133             r='error' 
     155            logging.error(x) 
    134156             
    135157        response.status_code = code 
    136158        try: 
    137             return render(r) 
     159            return render(templateType, renderTemplate) 
    138160         
    139161        except ExpatError, e: 
     
    141163            c.doc=str(x) 
    142164            response.status_code = 400 
    143             log.error("Retrieving [%s] - XML content: %s" % (uri, e)) 
     165            logging.error("Error retrieving [%s] - XML content: %s" % (uri, e)) 
    144166            return render('error') 
    145167 
     
    150172            c.doc='' 
    151173            response.status_code = 400 
     174            logging.error(c.xml) 
    152175            return render('error') 
    153176     
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/public/layout/ndg2.css

    r3893 r4198  
    114114 
    115115/* StubB */ 
    116 .headingblock{background-color: #f0f0f0;border: 1px solid #3c78b5; margin:10px 60px 20px 50px; padding-top:5px;} 
     116.headingblock{ 
     117        background-color: #f0f0f0; 
     118        border: 1px solid #3c78b5;  
     119        margin:10px 60px 20px 50px;  
     120        padding-top:5px; 
     121} 
    117122/* .bottomblock{border: 1px solid #3c78b5; margin-left:5px;margin-right:5px;padding:5px;}*/ 
    118123 
     
    124129    text-align:center; 
    125130    } 
    126      
    127    
     131 
    128132/* top right bottom left */ 
    129133.metadata #abstract {MARGIN: 5px 20px 10px 20px; font-size:100%;  padding: 8px 8px 8px 8px; text-align:justify;}  
     
    137141.metadata table {padding-top:10px;} 
    138142 
     143.metadataSection table 
     144{ 
     145        width:100%; 
     146        padding-top:10px; 
     147        cellspacing:0; 
     148        cellpadding:3; 
     149        border:0; 
     150        width:100%; 
     151} 
     152 
     153.centredSection { 
     154    font-size: 140%; 
     155    font-weight: bold; 
     156    color: #003366; 
     157    padding: 4px; 
     158    text-align:center; 
     159    } 
     160 
    139161.linehead { 
    140162    font-size: 120%; 
     
    147169    margin: 0px 0px 4px 0px; 
    148170} 
     171 
    149172.emphatic {font-size: 120%; 
    150173    line-height: normal; 
Note: See TracChangeset for help on using the changeset viewer.