Changeset 2695


Ignore:
Timestamp:
04/07/07 09:09:37 (12 years ago)
Author:
lawrence
Message:

wcs now security and cache compliant

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

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/development.ini

    r2670 r2695  
    2929csml_dir = /research/home/spascoe/host/saturn/data/ddc_data/obs 
    3030tmp_dir = %(here)s/data/tmp 
    31 publish_dir=%(here)s/ows_server/public/filestore  #used for wcs "store" 
     31#used for wcs "store": 
     32publish_dir=%(here)s/ows_server/private/filestore   
    3233ows_common_config = %(here)s/eg_ows_capabilities.xml 
    3334 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/csml_wcs.py

    r2693 r2695  
    1010 
    1111#NOTE, much of this is straight from WMS and needs to be overhauled. 
     12 
     13try: #python 2.5 
     14    from xml.etree import ElementTree as ET 
     15except ImportError: 
     16    try: 
     17        # if you've installed it yourself it comes this way 
     18        import ElementTree as ET 
     19    except ImportError: 
     20        # if you've egged it this is the way it comes 
     21        from elementtree import ElementTree as ET 
     22 
    1223import os, time, string, StringIO 
    1324 
     
    1627import ows_server.lib.validators as V 
    1728 
    18 from elementtree import ElementTree as ET 
    1929from ows_common import exceptions as OWS_E 
    2030from ows_common.wcs import * 
     
    2333 
    2434from ows_server.lib.csml_util import get_csml_doc, extractToNetCDF 
    25 from ows_server.lib.csml_cache import csmlCache, extractCache 
     35from ows_server.lib.ndgInterface import interface 
    2636 
    2737from email.mime.multipart import MIMEMultipart 
     
    130140         
    131141        #get doc from cache or disk: 
    132         c.dataset = csmlCache[fileoruri] 
     142        c.dataset = interface.GetParsedCSML(fileoruri) 
    133143        if type(c.dataset) is str: 
    134144            #If not a csml datset is some message from exist such as 'access denied'            
     
    148158    # Dimension parameters Time, Elevation, etc. are handled separately 
    149159    def GetCoverage(self, fileoruri, version, format, identifier, boundingbox, timesequence, store=False, status=False): 
    150         try: 
     160            #try: 
    151161                    # Retrieve dataset and selected feature             
    152             dataset = csmlCache[fileoruri] 
     162            rstatus,dataset=interface.GetParsedCSML(fileoruri) 
     163            if not rstatus: raise ValueError(dataset) 
    153164            feature = dataset.getFeature(identifier) 
    154165            if feature is None: 
     
    229240                return Response(content=msg, mimetype='multipart')  
    230241                   
    231         except Exception, e: 
    232             if isinstance(e, OWS_E.OwsError): 
    233                 raise e 
    234             else: 
    235                 raise OWS_E.NoApplicableCode(e) 
    236          
    237          
     242        #except Exception, e: 
     243         #   raise Exception,e 
     244          #  if isinstance(e, OWS_E.OwsError): 
     245           #     raise e 
     246            #else: 
     247             #   raise OWS_E.NoApplicableCode(e) 
     248         
     249         
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/logout.py

    r2626 r2695  
    1717         
    1818        # easy to kill our cookie 
    19         del session['ndgSec'] 
     19        if 'ndgSec' in session: del session['ndgSec'] 
     20        if 'ndgCleared' in session: del session['ndgCleared'] 
     21         
    2022        session.save() 
    2123        
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/ndgInterface.py

    r2694 r2695  
    99from cache import Cache 
    1010import os, tempfile 
    11 import cdms 
     11import cdms, csml 
    1212from ows_server.models import ndgRetrieve, ndgObject 
    1313from pylons import request,session 
    1414import logging 
    15 logger = logging.getLogger('csml_cache') 
     15logger = logging.getLogger('ndgInterface') 
    1616from ows_server.models.ndgSecurity import HandleSecurity 
    1717 
     
    121121            xmlh=self.XMLHCache[uri] 
    122122            status=1 
     123            logging.info('XMLH Cache hit for [%s]'%uri) 
    123124        except: 
     125            logging.info('XMLH Cache miss for [%s]'%uri) 
    124126            if localFile: 
    125127                status,xmlH=self.__getLocal(uri) 
     
    146148        ''' This method gets a parsed CSML object corresponding to the URI ''' 
    147149         
     150        # do we need an xml handler instance to test the security? 
    148151        if 'ndgCleared' not in session: 
    149             # we know we have to get the xml handler instance to test the security 
    150152            status,xmlh=self.GetXML(uri) 
    151         else: 
    152             if uri not in session['ndgCleared']: status,xmlh=self.GetXML(uri) 
    153         if not status: return status,xmlh  
     153        else:  
     154            if uri not in session['ndgCleared']:  
     155                status,xmlh=self.GetXML(uri) 
     156            else: status=1 
     157        if not status: return status,xmlh 
    154158         
    155159        try: 
    156160            d=self.CSMLDocCache[uri] 
     161            logging.info('CSML Cache hit for [%s]'%uri) 
    157162        except: 
     163            logging.info('CSML Cache miss for [%s]'%uri) 
     164            status,xmlh=self.GetXML(uri) 
     165            if not status: return status,xmlh     
    158166            d=csml.parser.Dataset() 
    159167            d.parseElemTree(xmlh.tree) 
    160168            self.CSMLDocCache[uri]=d 
    161          
    162169        status=1 
    163170        return status,d 
     
    200207        
    201208 
     209 
    202210interface=ndgInterface() 
Note: See TracChangeset for help on using the changeset viewer.