Changeset 4302 for TI05-delivery


Ignore:
Timestamp:
07/10/08 17:40:41 (11 years ago)
Author:
cbyrom
Message:

Add code to allow the association of granules + deployments with data entities
+ generisise some of the template methods to allow re-use amongst these
new sections.

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

Legend:

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

    r4297 r4302  
    4141                saveData = None) 
    4242    map.connect('atomHome', controller = 'listatom', action='atomHome') 
    43     map.connect('listAtom/:searchData/:associatedAtomID/:associatedAtomType', \ 
     43    map.connect('listAtom/:searchData/:associatedAtomID/:associatedAtomType/:associationType', \ 
    4444                controller = 'listatom', action='list', searchData='', \ 
    45                 associatedAtomID='', associatedAtomType='') 
     45                associatedAtomID='', associatedAtomType='', associationType='') 
    4646    map.connect('viewDeployments/:uri', controller = 'retrieve', action='viewDeployments') 
    4747 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/editatom.py

    r4297 r4302  
    2020from ndgUtils.models.MolesEntity import MolesEntity as ME 
    2121from ndgUtils.vocabtermdata import VocabTermData as VTD 
    22 from ows_server.templates.htmlUtilities import getVocabTermDataDropdown 
     22import ows_server.templates.htmlUtilities as utils 
    2323 
    2424class AtomFormSchema(Schema): 
     
    6363 
    6464        self.inputs=dict(parse_querystring(request.environ)) 
     65 
     66        c.vtd = VTD() 
    6567 
    6668        logging.info("EditatomController set up") 
     
    103105                c.atom.subtype = self.getLatestTermURLFromDropDownInput( \ 
    104106                        inputs.get('subtype')) 
     107                c.atom.subtypeID = c.atom.subtype.split('/')[-1] 
    105108 
    106109        self.saveAtomToExist(c.atom) 
     
    170173        # adjust atom type to cope with activity deployment exception 
    171174        atomType = c.atom.atomTypeID 
    172         if c.atom.atomTypeID == VTD.ACTIVITY_TERM and \ 
     175        c.isDE = False 
     176        c.isGranule = False 
     177        if atomType == VTD.ACTIVITY_TERM and \ 
    173178            c.atom.subtypeID == VTD.DEPLOYMENT_TERM: 
    174179            atomType = VTD.DEPLOYMENT_TERM 
     180         
     181        elif atomType == VTD.DE_TERM: 
     182            c.isDE = True 
     183        elif atomType == VTD.GRANULE_TERM: 
     184            c.isGranule = True 
    175185             
    176         c.addLink = h.url_for(controller='listatom',action='list', searchData = '0', \ 
     186        c.addEntityLink = h.url_for(controller='listatom',action='list', searchData = '0', \ 
    177187                               associatedAtomID = c.atom.ndgURI, \ 
    178                                associatedAtomType = atomType) 
     188                               associatedAtomType = atomType,  
     189                               associationType = utils.ENTITY_ASSOCIATION) 
     190             
     191        c.addGranuleLink = h.url_for(controller='listatom',action='list', searchData = '0', \ 
     192                               associatedAtomID = c.atom.ndgURI, \ 
     193                               associatedAtomType = atomType,  
     194                               associationType = utils.GRANULE_ASSOCIATION) 
     195             
     196        c.addDeploymentLink = h.url_for(controller='listatom',action='list', searchData = '0', \ 
     197                               associatedAtomID = c.atom.ndgURI, \ 
     198                               associatedAtomType = atomType,  
     199                               associationType = utils.DEPLOYMENT_ASSOCIATION) 
    179200 
    180201        # account for special case where we're dealing with deployments 
     
    186207                listVals = [self.VTD.TERM_DATA[self.VTD.DEPLOYMENT_TERM]] 
    187208                c.notDeployment = False 
    188         c.subTypes = getVocabTermDataDropdown(listVals, \ 
     209        c.subTypes = utils.getVocabTermDataDropdown(listVals, \ 
    189210                                        selected=c.atom.subtype) 
     211         
    190212         
    191213        self.addRelatedLinksDropDowns() 
     
    217239        # values 
    218240        logging.debug("Setting up drop down lists for related links") 
    219         c.relatedLinkTerms = getVocabTermDataDropdown(\ 
     241        c.relatedLinkTerms = utils.getVocabTermDataDropdown(\ 
    220242                self.VTD.getValidTypes(self.VTD.ONLINE_REF_CATEGORY)) 
    221243         
     
    224246            logging.debug("Adding dropdown for related link, '%s'" %(str(link))) 
    225247            c.relatedLinkSelectedLists[str(link)] = \ 
    226                 getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.ONLINE_REF_CATEGORY), \ 
     248                utils.getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.ONLINE_REF_CATEGORY), \ 
    227249                                                     selected=link.rel) 
    228250 
     
    412434        # - this is just a specialised activity - i.e. with subtype preset 
    413435        deploymentActivity = self.VTD.TERM_DATA[self.VTD.ACTIVITY_DEPLOYMENT_TERM] 
    414         c.atomTypes = getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.ATOM_CATEGORY), 
     436        c.atomTypes = utils.getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.ATOM_CATEGORY), 
    415437                                               defaultVal = deploymentActivity) 
    416         c.providerIDs = getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.PROVIDER_CATEGORY)) 
     438        c.providerIDs = utils.getVocabTermDataDropdown(self.VTD.getValidTypes(self.VTD.PROVIDER_CATEGORY)) 
    417439 
    418440        try: 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/listatom.py

    r4297 r4302  
    2121from ndgUtils.models.MolesEntity import MolesEntity as ME 
    2222from ndgUtils.vocabtermdata import VocabTermData as VTD, VocabTermItem as VTI 
    23 from ows_server.templates.htmlUtilities import getVocabTermDataDropdown 
     23import ows_server.templates.htmlUtilities as utils 
    2424from editatom import EditatomController as ec 
    2525 
     
    5555 
    5656     
    57     def list(self, searchData=None, associatedAtomID=None, associatedAtomType=None): 
     57    def list(self, searchData=None, associatedAtomID=None, \ 
     58             associatedAtomType=None, associationType=None): 
    5859        '''  
    5960        Provide a simple search interface to the atoms data  
     
    6263        @keyword associatedAtomID: the ID of an atom to which other atoms 
    6364        should be linked - via deployments  
     65        @keyword associatedAtomType: type of atom that the data is being  
     66        associated with 
     67        @keyword associationType: type of association to be done - NB, use 
     68        the constants in htmlUtilities for these  
    6469        ''' 
    6570        try: 
     
    8893             
    8994            # set up the drop down content 
    90             # set default value 
    91             defaultVal = VTI(ndg_eXist.DEFAULT_ALL_VAL, ndg_eXist.DEFAULT_ALL_VAL) 
    92             c.atomTypes = getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.ATOM_CATEGORY), \ 
     95            # NB, if we are here whilst doing an association, restrict the filter 
     96            # appropriately 
     97            listVals = [] 
     98            defaultVal = None 
     99            # set up a default 'all' value 
     100            allVal = VTI(ndg_eXist.DEFAULT_ALL_VAL, ndg_eXist.DEFAULT_ALL_VAL) 
     101            if associationType: 
     102                val = int(associationType) 
     103                if val == utils.GRANULE_ASSOCIATION: 
     104                    c.title += ' - to create associations with granule data' 
     105                    listVals = [c.vtd.TERM_DATA[c.vtd.GRANULE_TERM]] 
     106                elif val == utils.DEPLOYMENT_ASSOCIATION: 
     107                    c.title += ' - to create associations with deployment data' 
     108                    listVals = [c.vtd.TERM_DATA[c.vtd.ACTIVITY_TERM]] 
     109                elif val == utils.ENTITY_ASSOCIATION: 
     110                    c.title += ' - to create associations with activity/data production tool/observation station data' 
     111                    listVals = c.vtd.getValidTypes(c.vtd.DEPLOYABLE_ATOM_CATEGORY) 
     112            else: 
     113                listVals = c.vtd.getValidTypes(c.vtd.ATOM_CATEGORY) 
     114                defaultVal = allVal 
     115             
     116                 
     117            #self.VTD.getTermItemfromFullVocabURI(c.atom.subtype) 
     118            c.atomTypes = utils.getVocabTermDataDropdown(listVals, \ 
    93119                                                   defaultVal = defaultVal, \ 
    94120                                                   selected = inputs.get('atomTypeID')) 
    95             c.providerIDs = getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.PROVIDER_CATEGORY),  
    96                                                      defaultVal = defaultVal, \ 
     121            c.providerIDs = utils.getVocabTermDataDropdown(c.vtd.getValidTypes(c.vtd.PROVIDER_CATEGORY),  
     122                                                     defaultVal = allVal, \ 
    97123                                                     selected = inputs.get('providerID')) 
    98124 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/atom_editor.html

    r4297 r4302  
    5656                        </div> 
    5757 
    58                 <div py:if="c.notDeployment" py:replace="Summary(c.atom.Summary, c.saveLink)"/> 
     58                <div py:if="c.notDeployment and not c.isGranule" py:replace="TextArea('Summary', c.atom.Summary, c.saveLink)"/> 
     59                <div py:if="c.notDeployment and not c.isGranule" py:replace="TextArea('Content', c.atom.Content, c.saveLink)"/> 
    5960                        <div py:replace="People('Author', [c.atom.author], c.saveLink)"/> 
    60                         <div py:if="c.notDeployment" py:replace="OnlineReferences(c.atom.relatedLinks, c.saveLink)"/> 
    61                         <div py:if="not c.notDeployment" py:replace="Associations(c.atom.relatedLinks, c.addLink, c.saveAssoc)"/> 
    6261                        <div py:if="c.notDeployment" py:replace="People('Contributors', c.atom.contributors, c.saveLink)"/> 
     62                        <div py:if="c.notDeployment and not c.isGranule" py:replace="OnlineReferences(c.atom.relatedLinks, c.saveLink)"/> 
     63                        <div py:if="not c.notDeployment" py:replace="Associations('Associated Data', c.atom.relatedLinks, c.addEntityLink, c.saveAssoc)"/> 
     64                        <div py:if="c.isDE" py:replace="Associations('Associated Data Granules', c.atom.getLinksOfType(c.vtd.GRANULE_TERM), c.addGranuleLink, c.saveAssoc)"/> 
     65                        <div py:if="c.isDE" py:replace="Associations('Associated Deployments', c.atom.getLinksOfType(c.vtd.DEPLOYMENT_TERM), c.addDeploymentLink, c.saveAssoc)"/> 
    6366                        <div py:if="c.notDeployment" py:replace="FullParameterList(c.atom.parameters)"/> 
    6467                        <div py:replace="FullDeployments(c.atom.ME.deployments)"/> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/atom_functions.html

    r4297 r4302  
    1 <?python  
    2         from ndgUtils.vocabtermdata import VocabTermData as VTD 
    3  ?> 
    41<!--! A collection of template definitions for use in atom output construction --> 
    52<html xmlns="http://www.w3.org/1999/xhtml"  
     
    107    <xi:include href="utils.html" /> 
    118     
    12     <div class="metadataSection" py:def="Summary(summary,editLink)"> 
     9    <div class="metadataSection" py:def="TextArea(name, value, editLink)"> 
    1310        <?python         
    14                                 divID = 'summaryDiv' 
     11                                divID = name + 'Div' 
    1512                                edID=divID+'ed'  
    1613                ?> 
    17         <table py:if="summary or editLink"> 
     14        <table py:if="value or editLink"> 
    1815            <tr><td class="linehead"> 
    1916                    <table> 
    20                         <tr><td>Summary</td> 
     17                        <tr><td>${name}</td> 
    2118                            <span py:if="editLink" py:strip=""> 
    2219                                <td align="right"> 
     
    3330            <tr><td> 
    3431                <div id = "$divID"> 
    35                                 ${Markup(summary)} 
     32                                ${Markup(value or 'No data specified at present')} 
    3633                        </div> 
    3734                        </td></tr> 
     
    4138                                        <table> 
    4239                                <tr><td> 
    43                                         ${Markup(h.text_area('Summary',summary, class_="fullWidth", rows="9"))} 
     40                                        ${Markup(h.text_area(name, value, class_="fullWidth", rows="9"))} 
    4441                                </td></tr> 
    4542                                <tr><td> 
     
    229226        <?python 
    230227                rel=link.vocabUrl.upper() 
    231                 if rel.startswith(VTD.ACTIVITY_TERM): 
     228                if rel.startswith(c.vtd.ACTIVITY_TERM): 
    232229                                rel = "Activity" 
    233                 elif rel.startswith(VTD.OBS_TERM): 
     230                elif rel.startswith(c.vtd.OBS_TERM): 
    234231                                rel = "Observation Station" 
    235                 elif rel.startswith(VTD.DPT_TERM): 
     232                elif rel.startswith(c.vtd.DPT_TERM): 
    236233                                rel = "Data Production Tool" 
    237234        ?> 
     
    277274                                displayVal = link.title  
    278275                                if not displayVal: 
    279                                                         from ndgUtils.vocabtermdata import VocabTermData as VTD 
    280                                                         vti = VTD().getTermItemfromFullVocabURI(link.rel) 
     276                                                        vti = c.vtd.getTermItemfromFullVocabURI(link.rel) 
    281277                                                        displayVal = vti.title 
    282278                                if not displayVal: 
     
    299295    </div> 
    300296 
    301     <div class="metadataSection" py:def="Associations(links, addLink, editLink)"> 
     297    <div class="metadataSection" py:def="Associations(sectionName, links, addLink, editLink)"> 
    302298        <?python         
    303                                 divID = 'associationsDiv' 
     299                                divID = sectionName + 'Div' 
    304300                                edID = divID+'ed'  
    305301                ?> 
     
    307303            <tr><td class="linehead"> 
    308304                    <table> 
    309                         <tr><td>Associated Data</td> 
     305                        <tr><td>${sectionName}</td> 
    310306                            <span py:if="addLink" py:strip=""> 
    311307                                <td align="right"> 
     
    355351                        # get the default display value 
    356352                        displayVal = link.title or link.href 
    357                         from ndgUtils.vocabtermdata import VocabTermData as VTD 
    358                         vtd = VTD() 
    359                         vti = vtd.getTermItemfromFullVocabURI(link.rel) 
    360                         subType = vtd.tidySubTypeTitle(vti.title) 
     353                        vti = c.vtd.getTermItemfromFullVocabURI(link.rel) 
     354                        subType = c.vtd.tidySubTypeTitle(vti.title) 
    361355                        inputLabel = refLabel + link.href + delim + (link.title or "") + delim + link.rel 
    362356                            ?> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/atom_list.html

    r4297 r4302  
    8282                                                                if not subTypeVTI or subTypeVTI.termID != c.vtd.DEPLOYMENT_TERM: 
    8383                                                                        allowAdd = True 
    84                                                         elif c.assocAtomType == c.vtd.DE_TERM and c.vtd.isDeployment(vti): 
     84                                                        elif c.assocAtomType == c.vtd.DE_TERM and (c.vtd.isDeployment(subTypeVTI) or c.vtd.isGranule(vti)): 
    8585                                                                allowAdd = True 
    8686                                                if allowAdd: 
     
    106106                                </td> 
    107107                                <td py:if="allowAdd" align="center"> 
    108                                 ${Markup(h.check_box(refLabel + atom.href + delim + (atom.name or "") + delim + atom.subtype))} 
     108                                ${Markup(h.check_box(refLabel + atom.href + delim + (atom.name or "") + delim + (atom.subtype or "")))} 
    109109                                </td> 
    110110                                </tr> 
    111111                                <tr py:if="c.assocAtomType and c.showAddButton"> 
    112112                                <td colspan = "6"/> 
    113                                 <td> 
     113                                <td align="center"> 
    114114                            ${Markup(h.submit(value="Add selections"))} 
    115115                        </td></tr> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/htmlUtilities.py

    r4283 r4302  
    33# 
    44import logging 
     5 
     6GRANULE_ASSOCIATION = 1 
     7DEPLOYMENT_ASSOCIATION = 2 
     8ENTITY_ASSOCIATION = 3 
    59 
    610class selector: 
Note: See TracChangeset for help on using the changeset viewer.