Changeset 2677


Ignore:
Timestamp:
02/07/07 09:27:38 (12 years ago)
Author:
domlowe
Message:

get_csml_doc method updated to include exist access. Working with cache except cache does not respect security yet

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

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/csml_wcs.py

    r2674 r2677  
    3030from email import encoders 
    3131 
    32 from ows_server.controllers.status import StatusController 
    33 from ows_server.models import ndgObject,ndgRetrieve 
    34 from ows_server.controllers.retrieve import RetrieveController 
    35  
    3632class CsmlWcsController(OwsController): 
    3733    _ows_parameters = { 
     
    3935        'ExceptionFormat': make_domain(['text/xml']), 
    4036        } 
    41  
    42     def _get_csml_document(self,fileoruri): 
    43         """ 
    44         Gets a csml document from file or exist when passed a file name or uri - this should make 'get_csml_doc' obselete 
    45         """ 
    46         if string.find(fileoruri,'__NDG-A0__') == -1: 
    47             #it's a local file not an identifier 
    48             file=fileoruri 
    49             csml_dir = request.environ['paste.config']['app_conf']['csml_dir'] 
    50             path = os.path.join(csml_dir, file) 
    51             if os.path.exists(path+'.csml'): 
    52                 f = path+'.csml' 
    53             elif os.path.exists(path+'.xml'): 
    54                 f = path +'.xml' 
    55             else: 
    56                 raise ValueError("Cannot find CSML file %s" % file) 
    57              
    58             d = csml.parser.Dataset() 
    59             d.parse(f) 
    60          
    61         else: 
    62             #it's an NDG identifier, get the document from exist. 
    63             uri=fileoruri 
    64             uri='badc.nerc.ac.uk__NDG-A0__ReMryRVA'         
    65             uriN=ndgObject.ndgObject(uri) 
    66             self.cf=request.environ['ndgConfig'] 
    67             self.requestor=request.environ['REMOTE_ADDR'] 
    68             print 'session',session 
    69             if 'ndgSec' in session: 
    70                 securityTokens=session['ndgSec'] 
    71             else: securityTokens=None 
    72             print securityTokens 
    73             status,x=ndgRetrieve.ndgRetrieve( 
    74                     uriN,self.cf,requestor=self.requestor, 
    75                     securityTokens=securityTokens) 
    76             print 'output from retrieve controller: ',x         
    77             print type(x) 
    78             #TODO, need to parse this output into a csml Dataset object, d 
    79              
    80         return d 
    8137 
    8238 
     
    172128        """ 
    173129        # Populate the context object with information required by the template 
    174         c.dataset = self._get_csml_document(fileoruri) 
     130        #c.dataset = get_csml_document(fileoruri) 
    175131         
    176132        #get doc from cache or disk: 
    177         #c.dataset = csmlCache[fileoruri] 
     133        c.dataset = csmlCache[fileoruri] 
    178134        return self._renderCapabilities('ows/wcs_capabilities') 
    179135 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/base.py

    r2675 r2677  
    1313from ows_common.get_capabilities import ServiceMetadata 
    1414import ows_common.xml 
     15import string 
     16 
    1517 
    1618try: 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/csml_util.py

    r2674 r2677  
    1010from pylons import Response, c, g, cache, request, session 
    1111import csml, cdms 
    12 import os 
     12import os, string 
    1313import zipfile 
    1414import tempfile 
     15from ows_server.models import ndgObject,ndgRetrieve 
    1516 
     17def get_csml_doc(fileoruri): 
     18        """ 
     19        Gets a csml document from file or exist when passed a file name or uri          
     20                
     21        Note, access control is not implemented on file access, only on exist access. 
     22         
     23        """ 
     24        if string.find(fileoruri,'__NDG-A0__') == -1: 
     25            #it's a local file not an identifier 
     26            file=fileoruri 
     27            csml_dir = request.environ['paste.config']['app_conf']['csml_dir'] 
     28            path = os.path.join(csml_dir, file) 
     29            if os.path.exists(path+'.csml'): 
     30                f = path+'.csml' 
     31            elif os.path.exists(path+'.xml'): 
     32                f = path +'.xml' 
     33            else: 
     34                raise ValueError("Cannot find CSML file %s" % file) 
     35             
     36            d = csml.parser.Dataset() 
     37            d.parse(f) 
     38         
     39        else: 
     40            #it's an NDG identifier, get the document from exist. 
     41            uri=fileoruri 
     42            uri='badc.nerc.ac.uk__NDG-A0__ReMryRVA'         
     43            uriN=ndgObject.ndgObject(uri) 
     44            cf=request.environ['ndgConfig'] 
     45            requestor=request.environ['REMOTE_ADDR'] 
     46            if 'ndgSec' in session: 
     47                securityTokens=session['ndgSec'] 
     48            else: securityTokens=None 
     49            status,x=ndgRetrieve.ndgRetrieve( 
     50                    uriN,cf,requestor=requestor, 
     51                    securityTokens=securityTokens) 
     52            d=csml.parser.Dataset() 
     53            d.parseElemTree(x.tree)                          
     54        return d 
    1655 
     56#this version of get_csml_doc can be deleted now if no problems found with new version: 
     57#def get_csml_doc(file): 
     58    #""" 
     59    #A trivial document retrieval function. 
    1760 
    18 def get_csml_doc(file): 
    19     """ 
    20     A trivial document retrieval function. 
     61    #This could be replaced with a proper csml server object that supports 
     62    #multiple stores (filesystem, exist) and cache's the results for 
     63    #performance. 
    2164 
    22     This could be replaced with a proper csml server object that supports 
    23     multiple stores (filesystem, exist) and cache's the results for 
    24     performance. 
    25  
    26     """ 
    27     csml_dir = request.environ['paste.config']['app_conf']['csml_dir'] 
    28     path = os.path.join(csml_dir, file) 
    29     if os.path.exists(path+'.csml'): 
    30         f = path+'.csml' 
    31     elif os.path.exists(path+'.xml'): 
    32         f = path +'.xml' 
    33     else: 
    34         raise ValueError("Cannot find CSML file %s" % file) 
     65    #""" 
     66    #csml_dir = request.environ['paste.config']['app_conf']['csml_dir'] 
     67    #path = os.path.join(csml_dir, file) 
     68    #if os.path.exists(path+'.csml'): 
     69        #f = path+'.csml' 
     70    #elif os.path.exists(path+'.xml'): 
     71        #f = path +'.xml' 
     72    #else: 
     73        #raise ValueError("Cannot find CSML file %s" % file) 
    3574     
    36     d = csml.parser.Dataset() 
    37     d.parse(f) 
     75    #d = csml.parser.Dataset() 
     76    #d.parse(f) 
    3877       
    39     return d 
     78    #return d 
    4079 
    4180         
Note: See TracChangeset for help on using the changeset viewer.