Changeset 4348


Ignore:
Timestamp:
20/10/08 09:13:36 (11 years ago)
Author:
cbyrom
Message:

Move vocabdata object into global variable to allow efficient re-use +
simplify some of the edit control logic + remove unused routings.

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

Legend:

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

    r4302 r4348  
    3434     
    3535    # following is the shell for the rest of the ndg  
    36     map.connect('editAtom/:uri/:saveData', controller = 'editatom', action='edit') 
    3736    map.connect('editAtom/:uri', controller = 'editatom', action='edit') 
    3837    map.connect('saveAtom/:uri/:saveLevel', controller = 'editatom', \ 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/editatom.py

    r4315 r4348  
    1414from xml.parsers.expat import ExpatError 
    1515import logging 
    16 from ndgUtils.models.Atom import Atom, Person, Link, Category 
     16from ndgUtils.models.Atom import Atom, Person, Link, Category, ValidationError 
    1717from formencode import Invalid 
    1818from genshi.filters import HTMLFormFiller 
     
    3636        self.cf=request.environ['ndgConfig'] 
    3737 
    38         if not c.vtd: 
    39             c.vtd = VTD() 
    40          
    4138        if uri: 
    4239            try: 
     
    5148     
    5249     
    53     @validate(schema=AtomFormSchema(), form='saveAtom') 
    5450    def saveAtom(self, uri, saveLevel=0): 
    5551        ''' 
     
    9490                c.atom.subtypeID = c.atom.subtype.split('/')[-1] 
    9591 
     92        logging.info("Validating input") 
     93        try: 
     94        #    validator = AtomFormSchema() 
     95        #    validator.to_python(inputs) 
     96            c.atom.validate() 
     97            logging.info("- input valid") 
     98        except ValidationError, e: 
     99        #    c.error = e.message 
     100            c.errors = e.unpack_errors() 
     101            return self.edit(uri) 
     102 
    96103        self.saveAtomToExist(c.atom) 
    97104 
     
    136143        logging.info("Data model set up") 
    137144 
    138      
    139     @validate(schema=AtomFormSchema(), form='edit') 
    140     def edit(self, uri, saveData=0, **data): 
    141         '''  
    142         Edit the specified uri 
    143         ''' 
    144         logging.info("Setting up atom edit template") 
    145         c.errors = {} 
     145 
     146    def prepareEditForm(self, uri): 
     147        ''' 
     148        Get everything set up for displaying the edit form 
     149        @param uri: ndg url for the atom to load in edit mode 
     150        ''' 
    146151        try: 
    147             self.prepareDataModel(uri) 
     152            # NB, can get here directly from saveAtom - if there have been errors 
     153            # - in this case keep original data 
     154            if not c.atom: 
     155                self.prepareDataModel(uri) 
    148156        except SystemError, e: 
    149157            logging.error(e.message) 
     
    160168        # adjust atom type to cope with activity deployment exception 
    161169        atomType = c.atom.atomTypeID 
    162         c.isDE = False 
    163         c.isGranule = False 
    164         if atomType == c.vtd.ACTIVITY_TERM and \ 
    165             c.atom.subtypeID == c.vtd.DEPLOYMENT_TERM: 
    166             atomType = c.vtd.DEPLOYMENT_TERM 
    167          
    168         elif atomType == c.vtd.DE_TERM: 
    169             c.isDE = True 
    170         elif atomType == c.vtd.GRANULE_TERM: 
    171             c.isGranule = True 
    172              
     170        if atomType == g.vtd.ACTIVITY_TERM and \ 
     171            c.atom.subtypeID == g.vtd.DEPLOYMENT_TERM: 
     172            atomType = g.vtd.DEPLOYMENT_TERM 
     173         
    173174        c.addEntityLink = h.url_for(controller='listatom',action='list', searchData = '0', \ 
    174175                               associatedAtomID = c.atom.ndgURI, \ 
     
    187188 
    188189        # account for special case where we're dealing with deployments 
    189         c.notDeployment = True 
    190         listVals = c.vtd.getValidSubTypes(c.atom.atomTypeID) 
    191         if c.atom.subtype: 
    192             subtypeTermID = c.vtd.getTermItemfromFullVocabURI(c.atom.subtype).termID 
    193             if subtypeTermID == c.vtd.getVTI(c.vtd.DEPLOYMENT_TERM).termID: 
    194                 listVals = [c.vtd.TERM_DATA[c.vtd.DEPLOYMENT_TERM]] 
    195                 c.notDeployment = False 
     190        listVals = g.vtd.getValidSubTypes(c.atom.atomTypeID) 
     191        if c.atom.isDeployment(): 
     192            listVals = [g.vtd.TERM_DATA[g.vtd.DEPLOYMENT_TERM]] 
     193 
    196194        c.subTypes = utils.getVocabTermDataDropdown(listVals, \ 
    197195                                        selected=c.atom.subtype) 
     
    199197         
    200198        self.addRelatedLinksDropDowns() 
     199 
     200     
     201    def edit(self, uri): 
     202        '''  
     203        Edit the specified uri 
     204        ''' 
     205        logging.info("Setting up atom edit template") 
     206 
     207        self.prepareEditForm(uri) 
    201208 
    202209        try: 
     
    227234        logging.debug("Setting up drop down lists for related links") 
    228235        c.relatedLinkTerms = utils.getVocabTermDataDropdown(\ 
    229                 c.vtd.getValidTypes(c.vtd.ONLINE_REF_CATEGORY)) 
     236                g.vtd.getValidTypes(g.vtd.ONLINE_REF_CATEGORY)) 
    230237         
    231238        c.relatedLinkSelectedLists = {} 
     
    233240            logging.debug("Adding dropdown for related link, '%s'" %(str(link))) 
    234241            c.relatedLinkSelectedLists[str(link)] = \ 
    235                 utils.getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.ONLINE_REF_CATEGORY), \ 
     242                utils.getVocabTermDataDropdown(g.vtd.getValidTypes(g.vtd.ONLINE_REF_CATEGORY), \ 
    236243                                                     selected=link.rel) 
    237244 
     
    401408        ''' 
    402409        termData = inputVal.split('--') 
    403         return c.vtd.getCurrentVocabURI(termData[0]) + \ 
     410        return g.vtd.getCurrentVocabURI(termData[0]) + \ 
    404411                        "/" + termData[1] 
    405412 
     
    441448     
    442449                # activity deployments should have subtype deployment specified automatically 
    443                 if atomTypeID == c.vtd.ACTIVITY_DEPLOYMENT_TERM: 
    444                     inputs['subtypeID'] = c.vtd.DEPLOYMENT_TERM 
    445                     inputs['atomTypeID'] = c.vtd.ACTIVITY_TERM 
     450                if atomTypeID == g.vtd.ACTIVITY_DEPLOYMENT_TERM: 
     451                    inputs['subtypeID'] = g.vtd.DEPLOYMENT_TERM 
     452                    inputs['atomTypeID'] = g.vtd.ACTIVITY_TERM 
    446453                     
    447454                inputs['providerID'] = inputs.get('providerID').split('--')[1] 
     
    459466        # set up the drop down content - NB, add special case, 'deployment activity' 
    460467        # - this is just a specialised activity - i.e. with subtype preset 
    461         if not c.vtd: 
    462             c.vtd = VTD() 
    463         deploymentActivity = c.vtd.TERM_DATA[c.vtd.ACTIVITY_DEPLOYMENT_TERM] 
    464         c.atomTypes = utils.getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.ATOM_CATEGORY), 
     468        deploymentActivity = g.vtd.TERM_DATA[g.vtd.ACTIVITY_DEPLOYMENT_TERM] 
     469        c.atomTypes = utils.getVocabTermDataDropdown(g.vtd.getValidTypes(g.vtd.ATOM_CATEGORY), 
    465470                                               defaultVal = deploymentActivity, \ 
    466471                                               selected = inputs.get('atomTypeID')) 
    467472        c.providerIDs = utils.getVocabTermDataDropdown( 
    468                             c.vtd.getValidTypes(c.vtd.PROVIDER_CATEGORY),  
     473                            g.vtd.getValidTypes(g.vtd.PROVIDER_CATEGORY),  
    469474                            selected = inputs.get('providerID')) 
    470475 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/listatom.py

    r4315 r4348  
    6969        ''' 
    7070        try: 
    71             if not c.vtd: 
    72                 c.vtd = VTD() 
    73      
    7471            inputs = request.params 
    7572            c.searchData = None 
     
    8986            if associatedAtomID: 
    9087                c.associateLink = h.url_for(controller='editatom', action='saveAtom', \ 
    91                     saveLevel = ec.ADD_ASSOCIATIONS, uri = associatedAtomID) 
     88                    uri = associatedAtomID, saveLevel = ec.ADD_ASSOCIATIONS) 
    9289            c.searchLink = h.url_for(controller = 'listatom', action='list', \ 
    9390                                     searchData='1', associatedAtomID = associatedAtomID) 
     
    106103                if val == utils.GRANULE_ASSOCIATION: 
    107104                    c.title += ' - to create associations with granule data' 
    108                     listVals = [c.vtd.TERM_DATA[c.vtd.GRANULE_TERM]] 
     105                    listVals = [g.vtd.TERM_DATA[g.vtd.GRANULE_TERM]] 
    109106                elif val == utils.DEPLOYMENT_ASSOCIATION: 
    110107                    c.title += ' - to create associations with deployment data' 
    111                     listVals = [c.vtd.TERM_DATA[c.vtd.ACTIVITY_TERM]] 
     108                    listVals = [g.vtd.TERM_DATA[g.vtd.ACTIVITY_TERM]] 
    112109                elif val == utils.ENTITY_ASSOCIATION: 
    113110                    c.title += ' - to create associations with activity/data production tool/observation station data' 
    114                     listVals = c.vtd.getValidTypes(c.vtd.DEPLOYABLE_ATOM_CATEGORY) 
     111                    listVals = g.vtd.getValidTypes(g.vtd.DEPLOYABLE_ATOM_CATEGORY) 
    115112                    defaultVal = allVal 
    116113            else: 
    117                 listVals = c.vtd.getValidTypes(c.vtd.ATOM_CATEGORY) 
     114                listVals = g.vtd.getValidTypes(g.vtd.ATOM_CATEGORY) 
    118115                defaultVal = allVal 
    119116             
     
    121118                                                   defaultVal = defaultVal, \ 
    122119                                                   selected = inputs.get('atomTypeID')) 
    123             c.providerIDs = utils.getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.PROVIDER_CATEGORY),  
     120            c.providerIDs = utils.getVocabTermDataDropdown(g.vtd.getValidTypes(g.vtd.PROVIDER_CATEGORY),  
    124121                                                     defaultVal = allVal, \ 
    125122                                                     selected = inputs.get('providerID')) 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r4315 r4348  
    143143            elif viewFormat == ndgObject.ATOM_DOC_TYPE or \ 
    144144                viewFormat ==  ndgObject.ATOM_BACKUP_DOC_TYPE: 
    145                 renderTemplate = 'atom' 
     145                renderTemplate = 'atom_editor' 
    146146                c.xmlh=x 
    147147                c.atom = Atom(xmlString=str(x), ndgObject = self.uri) 
    148148                c.r = info = self.__mytb('') 
    149                 if not c.vtd: 
    150                     c.vtd = VTD() 
     149                c.title = 'Viewing [%s]'%self.uri 
    151150                c.deploymentsURL = h.url_for(controller='retrieve', \ 
    152151                                             action='viewDeployments', \ 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/app_globals.py

    r3536 r4348  
    11from pylons import config 
     2from ndgUtils.vocabtermdata import VocabTermData as VTD 
    23 
    34class Globals(object): 
    45    def __init__(self): 
    5         pass 
     6        self.vtd = VTD() 
    67 
Note: See TracChangeset for help on using the changeset viewer.