Changeset 4487


Ignore:
Timestamp:
24/11/08 17:15:57 (11 years ago)
Author:
cbyrom
Message:

Further restructure of codebase - moving datamodels into ndgUtils to allow reuse + create visualise and browse sub structures to better
organise related code. Separate out some inner classes into their own
modules to make more visible.

Files:
11 added
4 deleted
9 edited
1 copied
21 moved

Legend:

Unmodified
Added
Removed
  • MILK/trunk/milk_server/milk_server/config/routing.py

    r4482 r4487  
    3131                controller = 'atom_editor/listatom', action='list', searchData='', \ 
    3232                associatedAtomID='', associatedAtomType='', associationType='') 
    33     map.connect('viewDeployments/:uri', controller = 'retrieve', action='viewDeployments') 
     33    map.connect('viewDeployments/:uri', controller = 'browse/retrieve', action='viewDeployments') 
    3434 
    3535    # routing for the browse/discovery server 
     
    3838    map.connect('wayf', controller='wayf') 
    3939    map.connect('logout', controller='logout') 
    40     map.connect('semantic',controller='discovery', action='semantic') 
    41     map.connect('view/:uri', controller = 'retrieve', action='view') 
    42     map.connect('askCorrect/:uri', controller='retrieve', action='askCorrect') 
    43     map.connect('correct/:uri', controller='retrieve', action='correct') 
    44     map.connect('retrieve/:uri', controller = 'retrieve') 
    45     map.connect('selectedItems',controller='selectedItems',action='index') 
    46     map.connect('viewItems',controller='viewItems',action='index') 
     40    map.connect('semantic',controller='browse/discovery', action='semantic') 
     41    map.connect('view/:uri', controller = 'browse/retrieve', action='view') 
     42    map.connect('askCorrect/:uri', controller='browse/retrieve', action='askCorrect') 
     43    map.connect('correct/:uri', controller='browse/retrieve', action='correct') 
     44    map.connect('retrieve/:uri', controller = 'browse/retrieve') 
     45    map.connect('selectedItems',controller='visualise/selectedItems',action='index') 
     46    map.connect('viewItems',controller='visualise/viewItems',action='index') 
    4747    map.connect('addSelectedItem/:entryid/:divid', 
    48                 controller='selectedItems',action='addSelectedItem') 
    49     map.connect('unSelectItem/:entryid/:divid', controller='selectedItems',action='unSelectItem') 
    50     map.connect('removeSelectedItem/:entryid',controller='selectedItems',action='removeSelectedItem') 
     48                controller='visualise/selectedItems',action='addSelectedItem') 
     49    map.connect('unSelectItem/:entryid/:divid', controller='visualise/selectedItems',action='unSelectItem') 
     50    map.connect('removeSelectedItem/:entryid',controller='visualise/selectedItems',action='removeSelectedItem') 
    5151 
    52     map.connect('discovery',controller='discovery') 
     52    map.connect('discovery',controller='browse/discovery') 
    5353    #do this last or else you'll get bizarre behaviour 
    54     map.connect('',controller='discovery',action='index') 
    55     map.connect('clearSession',controller='discovery',action='clearSession') 
     54    map.connect('',controller='browse/discovery',action='index') 
     55    map.connect('clearSession',controller='browse/discovery',action='clearSession') 
    5656    return map 
  • MILK/trunk/milk_server/milk_server/controllers/browse/discovery.py

    r4482 r4487  
    1 import socket # Handle Discovery service down socket.error 
    2 import logging 
    3  
    4 from milk_server.lib.base import * 
     1''' 
     2Controller for the discovery search functionality 
     3''' 
     4import socket, logging 
    55from paste.request import parse_querystring 
    6 from milk_server.lib.Date import * 
    76from ndgUtils import ndgSearch 
    87from ndgUtils import DocumentRetrieve 
    98from ndgUtils.DocumentRetrieve import ndgVocabPOX as VS 
    109from ndgUtils import ndgObject 
    11 from milk_server.models.DIF import DIF 
     10from ndgUtils.models.DIF import DIF 
     11from milk_server.lib.base import * 
     12from milk_server.lib.Date import * 
    1213from milk_server.models.DiscoveryState import DiscoveryState,constraints 
    1314from milk_server.lib.mailer import mailHandler 
     
    130131            return response 
    131132 
    132     def doText(self,searchString,textTarget,start,howmany,scope=None,dateRange=None,bbox=None,geoSearch='overlaps'): 
     133 
     134    def doText(self,searchString,textTarget,start, \ 
     135               howmany,scope=None,dateRange=None,bbox=None,geoSearch='overlaps'): 
    133136         
    134137        ''' Carry out a text search for <searchString>  
     
    221224            errors=[] 
    222225            for result in results:  
    223                 obj=ndgObject(result[0], config = self.cf.config) 
     226                obj=ndgObject(result[0], config = self.cf) 
    224227                try: 
    225228                    difs.append(DIF(result[1],ndgObj=obj)) 
     
    256259                    c.pageTabs.append(('Results',session['results'])) 
    257260                    c.pageTabs.append(('Selections', 
    258                                        h.url_for(controller='selectedItems', 
     261                                       h.url_for(controller='browse/selectedItems', 
    259262                                                 action='index'))) 
    260263                elif c.pageTabs[1][0]!='Results': 
     
    266269                        if selectionsNeeded: 
    267270                            c.pageTabs.append(('Selections', 
    268                                        h.url_for(controller='selectedItems', 
     271                                       h.url_for(controller='browse/selectedItems', 
    269272                                                 action='index'))) 
    270273                             
    271                 return render('results') 
     274                return render('browse/results') 
    272275                 
    273276        except ValueError,e: 
     
    311314                c.source=searchConstraints['scope'] 
    312315            c.geoSearchType=(searchConstraints['geoSearchType'] or 'overlaps') 
    313         return render('advanced') 
     316        return render('browse/advanced') 
    314317         
    315318    def __checkbox(self,bbox): 
     
    376379            c.semError='.' 
    377380         
    378         return render('semantic',fragment=True) 
     381        return render('browse/semantic',fragment=True) 
    379382     
    380383    def moreSearch(self,ws): 
     
    386389            r.link={'Browse':n.BURL,'NumSim':n.URL}[c.searchTarget] 
    387390         
    388         return render('short_results') 
     391        return render('browse/short_results') 
    389392             
    390393    def clearSession(self): 
     
    392395        session.clear() 
    393396        session.save()             
    394          
    395  
    396     
    397          
    398          
     397      
  • MILK/trunk/milk_server/milk_server/controllers/browse/retrieve.py

    r4482 r4487  
    33from ndgUtils import ndgObject 
    44from paste.request import parse_querystring 
    5 from milk_server.models import stubB,DIF 
     5from ndgUtils.models import stubB, DIF 
    66from milk_server.lib import mailer 
    77from milk_server.lib.ndgInterface import interface  
     8from ndgUtils.models.DIF import DIF 
    89from xml.parsers.expat import ExpatError 
    910import logging 
     
    2223        self.cf=request.environ['ndgConfig'] 
    2324        try: 
    24             self.uri=ndgObject(uri, config=self.cf.config) 
     25            self.uri=ndgObject(uri, config=self.cf) 
    2526        except ValueError,e: 
    2627            return e 
     
    172173 
    173174            elif viewFormat == ndgObject.MOLES_DOC_TYPE: 
    174                 renderTemplate = 'stubB' 
    175                 c.doc=stubB.stubB(x.tree,self.cf.config) 
     175                renderTemplate = 'browse/stubB' 
     176                c.doc=stubB.stubB(x.tree,self.cf) 
    176177                name=c.doc.abbreviation 
    177178                 
     
    184185                 
    185186            elif viewFormat == ndgObject.DIF_DOC_TYPE: 
    186                 renderTemplate = 'dif' 
     187                renderTemplate = 'browse/dif' 
    187188                c.doc=DIF.DIF(x.tree,et=1,ndgObj=self.uri) 
    188189                name=c.doc.name 
    189190                 
    190191            elif viewFormat == ndgObject.NUMSIM_DOC_TYPE: 
    191                 renderTemplate = 'numsim' 
     192                renderTemplate = 'browse/numsim' 
    192193                c.xmlh=x 
    193194                name=x.getText('NS_Name') 
  • MILK/trunk/milk_server/milk_server/controllers/visualise/selectedItems.py

    r4482 r4487  
    4040                response.headers['Content-Type'] = 'text/plain or application/vnd.google-earth.kml+xml' 
    4141                response.headers['Content-Disposition'] = 'attachment;filename=kmlAggregate.kml' 
    42                 return render('kml_aggregate', format='xml') 
     42                return render('visualise/kml_aggregate', format='xml') 
    4343 
    4444        elif 'PlotSelectedInConTerra' in self.inputs: 
     
    7171 
    7272                # redirect to the view tab index code 
    73                 h.redirect_to(h.url_for(controller='viewItems',action='index')) 
     73                h.redirect_to(h.url_for(controller='visualise/viewItems',action='index')) 
    7474         
    7575        else: 
     
    8686                    return getConTerraDoc(wmcURLs) 
    8787             
    88         return render('selectedItems') 
     88        return render('visualise/selectedItems') 
    8989 
    9090     
     
    154154        logging.info('Creating form doc with data to post to Con Terra mapClient') 
    155155        c.redirectToConterra = True; 
    156         response.write(render('selectedItems')) 
     156        response.write(render('visualise/selectedItems')) 
    157157     
    158158    def addSelectedItem(self,entryid,divid): 
     
    196196            c.current='Results' 
    197197            c.pageTabs.append(('Selections', 
    198                                h.url_for(controller='selectedItems', 
     198                               h.url_for(controller='visualise/selectedItems', 
    199199                                         action='index'))) 
    200200 
     
    203203        return h.link_to_remote('Unselect', 
    204204                              dict(update=divid, 
    205                                     url=h.url_for(controller="selectedItems", 
     205                                    url=h.url_for(controller="visualise/selectedItems", 
    206206                                               action="unSelectItem", 
    207207                                               entryid=entryid, 
     
    216216        self.deleteSelectedItem(entryid) 
    217217        # rerender selections to update with item removed 
    218         return render('selectedItems') 
     218        return render('visualise/selectedItems') 
    219219 
    220220     
     
    256256        return h.link_to_remote("Select", 
    257257                               dict(update=divid, 
    258                                     url=h.url_for(controller="selectedItems", 
     258                                    url=h.url_for(controller="visualise/selectedItems", 
    259259                                               action="addSelectedItem", 
    260260                                               entryid=deletedItem.entryID, 
  • MILK/trunk/milk_server/milk_server/controllers/visualise/viewItems.py

    r4482 r4487  
    6464        # avoid page crashing if we come here without view items defined 
    6565        if 'viewItems' not in session: 
    66             h.redirect_to(h.url_for(controller='discovery')) 
     66            h.redirect_to(h.url_for(controller='browse/discovery')) 
    6767                                         
    6868        session.save() 
     
    7070        # check if page has been visited before; if not display tab 
    7171        if (Utilities.isTabRequired(c.pageTabs, 'View')): 
    72             c.pageTabs.append(('View', h.url_for(controller='viewItems',action='index'))) 
     72            c.pageTabs.append(('View', \ 
     73                               h.url_for(controller='visualise/viewItems', \ 
     74                                         action='index'))) 
    7375 
    74         return render('viewItems') 
     76        return render('visualise/viewItems') 
    7577 
    7678 
  • MILK/trunk/milk_server/milk_server/lib/Utilities.py

    r4469 r4487  
    1 from collections import deque # python 2.4 
    2 try: #python 2.5 
    3     from xml.etree import ElementTree as ET 
    4 except ImportError: 
    5     try: 
    6         # if you've installed it yourself it comes this way 
    7         import ElementTree as ET 
    8     except ImportError: 
    9         # if you've egged it this is the way it comes 
    10         from elementtree import ElementTree as ET 
    11 from ndgUtils.ETxmlView import * 
    12  
    13 import ConfigParser, os, re, urllib, logging 
    14  
    15 class myConfig: 
    16      
    17    ''' Handle missing sections and variables in a config file a bit gracefully. Also 
    18    instantiates a logger if necessary ''' 
    19     
    20    def __init__(self,configfile,logName='NDGLOG'): 
    21        self.config=ConfigParser.ConfigParser() 
    22        if not os.path.exists(configfile):  
    23            raise ValueError("Config file [%s] doesn't exist in [%s]"%(configfile,os.getcwd())) 
    24        self.config.read(configfile) 
    25        logfile=self.get('logging','debugLog',None) 
    26        # move to a wsgi logger ... safer I think in a multithread environment 
    27        #  
    28        #self.logfile=None #deprecated 
    29        self.logger=None 
    30        self.logfile=logfile 
    31        # 
    32        if logfile is not None: 
    33            #logger=logging.getLogger(logName) 
    34            #handler=logging.FileHandler(logfile) 
    35            #formatter=logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
    36            #handler.setFormatter(formatter) 
    37            #logger.addHandler(handler) 
    38            #logger.setLevel(logging.INFO) 
    39            #self.logger=logger 
    40            self.logger=None 
    41          
    42    def get(self,section,key,default=None): 
    43        ''' Return a config file value for key frm section ''' 
    44        try: 
    45            return self.config.get(section,key) 
    46        except: 
    47            return default 
    48          
    49    def log(self,string): 
    50        ''' Log some debug information ''' 
    51        if self.logger is None: return 
    52        if string is not None: 
    53           self.logger.info(string) 
    54        else: 
    55           self.logger.info('empty log entry') 
    56            
    57    def getLog(self): 
    58        return self.logger 
    59  
    60 class RingBuffer(deque): 
    61     #deque is a python 2.4 class! 
    62     #credit http://www.onlamp.com/pub/a/python/excerpt/pythonckbk_chap1/index1.html 
    63     def __init__(self, size_max): 
    64         deque.__init__(self) 
    65         self.size_max = size_max 
    66     def append(self, datum): 
    67         deque.append(self, datum) 
    68         if len(self) > self.size_max: 
    69             self.popleft( ) 
    70     def tolist(self): 
    71         return list(self) 
    72     def remove(self,value): 
    73         try: # python 2.5 
    74             deque.remove(self,value) 
    75         except: # python 2.4 
    76             #yuck, two copies ... 
    77             x=self.tolist() 
    78             x.remove(value) 
    79             self.clear() 
    80             for i in x:self.append(i) 
    81              
    82  
    83 def wrapGetText(element,xpathExpression,multiple=0): 
    84         ''' Wraps a call to ET to get a text object in an error handler ''' 
    85         def none2txt(i): 
    86             if i is None: return '' 
    87             return i 
    88         if element is None: 
    89             if multiple: 
    90                  return ['',] 
    91             else: return '' 
    92         if multiple: 
    93                 r=element.findall(xpathExpression) 
    94         else: 
    95                 r=[element.find(xpathExpression),] 
    96         try: 
    97                 rr=[i.text for i in r] 
    98         except: 
    99                 rr=['',] 
    100         rr=map(none2txt,rr)  
    101         if multiple:  
    102                 return rr 
    103         else: return rr[0]  
    104  
    105 def getURLdict(cgiFieldStorage): 
    106     ''' takes a cgi field storage object and converts it to a dictionary ''' 
    107     result={} 
    108     for item in cgiFieldStorage: 
    109             result[item]=cgiFieldStorage[item].value 
    110     return result 
    111 ## 
    112 ### convert the followign two methods into one class that can handle 
    113 ## xml directly too if necessary 
    114 ## 
    115 def DIFid2NDGid(string): 
    116     ''' takes a dif thing parses it and produces an ET ndg element id ... 
    117     and use this in dif ... ''' 
    118     s=string.split(':') 
    119     try: 
    120         r='''<DIFid><schemeIdentifier>%s</schemeIdentifier> 
    121          <repositoryIdentifier>%s</repositoryIdentifier> 
    122          <localIdentifier>%s</localIdentifier></DIFid>'''%(s[1],s[0],s[2]) 
    123         return ET.fromstring(r) 
    124     except: 
    125         r='''<DIFid><schemeIdentifier>DIF</schemeIdentifier> 
    126         <repositoryIdentifier>Unknown</repositoryIdentifier> 
    127         <localIdentifier>%s</localIdentifier></DIFid>'''%string 
    128         return ET.fromstring(r) 
    129  
    130 def EnumerateString(string): 
    131     """ Takes a string, and if it's got a number on the end, increments it, 
    132     otherwise adds a number on the end, used to differentiate strings which 
    133     would otherwise be identical """ 
    134     def addNum(matchObj): 
    135         s=matchObj.group() 
    136         return str(int(s)+1) 
    137     r=re.sub('\d+$',addNum,string) 
    138     if r==string: r=r+'1' 
    139     return r 
    140  
    141 def dateParse(string,instruction): 
    142     ''' Simple date manipulations on a string, if it is understood ...  
    143        if instruction = YYYY, return the year ''' 
    144     s=string.split('-') 
    145     if instruction=='YYYY': 
    146         if len(s)==3: # expecting year,mon,day or day,mon,year ...  
    147             if int(s[0])>int(s[2]):  
    148                 return s[0] 
    149             else: 
    150                 return s[2] 
    151         else: 
    152             return string # unknown format as yet ... 
    153     else: 
    154         return 'unknown instruction to dateParse %s'%instruction 
    155  
    156 def idget(xml,dataType='DIF'): 
    157     ''' Given an xml document (string), parse it using ElementTree and  
    158     find the identifier within it. Supports dataTypes of 'DIF' ... 
    159     (actually only DIF for now). 
    160     ''' 
    161     et=loadET(xml) 
    162     helper=nsdumb(et) 
    163     if dataType=='DIF': 
    164         return helper.getText(et,'Entry_ID') 
    165     else: 
    166         raise TypeError,'idget does not support datatype [%s]'%dataType 
    167      
     1import urllib, logging 
    1682 
    1693def recreateListFromUnicode(string): 
     
    19226    return newList 
    19327 
     28 
    19429def isTabRequired(pageTabs, string): 
    19530    for tab in pageTabs: 
     
    20641    return '|'.join(urllib.quote(x, '%') for x in urlList) 
    20742 
     43 
    20844def urlListDecode(string): 
    20945    """ 
  • MILK/trunk/milk_server/milk_server/lib/base.py

    r4482 r4487  
    5757            c.pageTabs.append(('Results',session['results'])) 
    5858            # make selections tab available once results are shown - to simplify associated business logic 
    59             c.pageTabs.append(('Selections',h.url_for(controller='selectedItems',action='index'))) 
     59            c.pageTabs.append(('Selections', \ 
     60                               h.url_for(controller='visualise/selectedItems', \ 
     61                                         action='index'))) 
    6062             
    61         if 'lastViewed' in session: c.pageTabs.append(('Details',session['lastViewed'])) 
     63        if 'lastViewed' in session: 
     64            c.pageTabs.append(('Details',session['lastViewed'])) 
    6265 
    63         if g.atomEditorEnabled: c.pageTabs.append(('Editor', session.get('currentEditor') or \ 
    64                                                        h.url_for(controller='atom_editor/listatom',action='atomHome'))) 
     66        if g.atomEditorEnabled: 
     67            c.pageTabs.append(('Editor', \ 
     68                               session.get('currentEditor') or \ 
     69                               h.url_for(controller='atom_editor/listatom', \ 
     70                                         action='atomHome'))) 
    6571         
    6672        return _BaseController.__call__(self, environ, start_response) 
  • MILK/trunk/milk_server/milk_server/lib/geoUtilities.py

    r4469 r4487  
    1 from Utilities import wrapGetText 
    2  
    31def geoString2float(x): 
    42    if x[-1:] in 'NE': 
  • MILK/trunk/milk_server/milk_server/templates/browse/advanced.kid

    r3691 r4487  
    1 <html py:extends="'ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22    <!-- provides the main introduction and "advanced" search page --> 
    33    <head> 
  • MILK/trunk/milk_server/milk_server/templates/browse/dif.kid

    r3544 r4487  
    1 <html py:extends="ndgPage.kid,meta.kid" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="../ndgPage.kid,../meta.kid" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22 
    33    <head> 
  • MILK/trunk/milk_server/milk_server/templates/browse/numsim.kid

    r4189 r4487  
    1 <html py:extends="'ndgPage.kid',NSfunctions10.kid,NSfunctions.kid" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid',NSfunctions10.kid,NSfunctions.kid" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22    <head> 
    33    <replace py:replace="pagehead()"/> 
  • MILK/trunk/milk_server/milk_server/templates/browse/results.kid

    r3543 r4487  
    1 <html py:extends="'ndgPage.kid','meta.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid','../meta.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22 
    33    <head> 
  • MILK/trunk/milk_server/milk_server/templates/browse/semantic.kid

    r3249 r4487  
    1 <html py:extends="'ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22    <body> 
    33        <div id="SemanticSearchResults"> 
  • MILK/trunk/milk_server/milk_server/templates/browse/short_results.kid

    r3989 r4487  
    1 <html py:extends="'ndgPage.kid','meta.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid','../meta.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22 
    33    <head> 
  • MILK/trunk/milk_server/milk_server/templates/browse/stubB.kid

    r3901 r4487  
    1 <html py:extends="ndgPage.kid,meta.kid" xmlns="http://www.w3.org/1999/xhtml" 
     1<html py:extends="../ndgPage.kid, ../meta.kid" xmlns="http://www.w3.org/1999/xhtml" 
    22    xmlns:py="http://purl.org/kid/ns#"> 
    33 
  • MILK/trunk/milk_server/milk_server/templates/meta.kid

    r4472 r4487  
    213213                        if item.entryID == d.entryID: 
    214214                                        selected=True 
    215                 select_url = h.url_for(controller="selectedItems", 
     215                select_url = h.url_for(controller="visualise/selectedItems", 
    216216                                       action="addSelectedItem", 
    217217                                       entryid=d.entryID, 
     
    227227                        ${XML(h.link_to_remote("Unselect", 
    228228                                        dict(update=select_td_id, 
    229                                                  url=h.url_for(controller="selectedItems", 
     229                                                 url=h.url_for(controller="visualise/selectedItems", 
    230230                                                                   action="unSelectItem", 
    231231                                                                   entryid=d.entryID, 
  • MILK/trunk/milk_server/milk_server/templates/visualise/selectedItems.kid

    r4482 r4487  
    1 <html py:extends="'ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     1<html py:extends="'../ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
    22    <head> 
    33      <replace py:replace="pagehead()"/> 
     
    9797                                                                ${XML(h.link_to_remote("Remove", 
    9898                                                                        dict(update="entirepage", 
    99                                                                 url=h.url_for(controller="selectedItems", 
     99                                                                url=h.url_for(controller="visualise/selectedItems", 
    100100                                                                                action="removeSelectedItem", 
    101101                                                                                entryid=i.entryID))))} 
  • MILK/trunk/milk_server/milk_server/tests/functional/testNdgInterface.py

    r4472 r4487  
    1313from milk_server.lib import ndgInterface as NI 
    1414from pylons.wsgiapp import PylonsApp 
    15 from milk_server.config.ndgMiddleware import ndgMiddleware 
     15from milk_server.config.milkMiddleware import milkMiddleware 
    1616from milk_server.config.middleware import make_app 
    1717from paste.deploy import loadapp 
     
    4545         
    4646        try: 
    47             response = self.app.get(url_for(controller='retrieve',uri='blah')) 
     47            response = self.app.get(url_for(controller='browse/retrieve',uri='blah')) 
    4848            fail('An exception should have been thrown here') 
    4949        except Exception, e: 
     
    5757        # handling middleware underneath 
    5858 
    59         #app = ndgMiddleware(app, g) 
     59        #app = milkMiddleware(app, g) 
    6060 
    6161        pylons.session._push_object({'user':'user_id'}) 
  • MILK/trunk/milk_server/milk_server/tests/functional/test_retrieve.py

    r4472 r4487  
    2222    def testInvalidURIIndex(self): 
    2323        try: 
    24             response = self.app.get(url_for(controller='retrieve', uri='blah')) 
     24            response = self.app.get(url_for(controller='browse/retrieve', uri='blah')) 
    2525            self.fail('An exception should have been thrown here') 
    2626        except Exception, e: 
     
    3232    def testValidDEURIIndex(self): 
    3333        try: 
    34             response = self.app.get(url_for(controller='retrieve',uri='badc.nerc.ac.uk__DIF__dataent_ERBE')) 
     34            response = self.app.get(url_for(controller='browse/retrieve',uri='badc.nerc.ac.uk__DIF__dataent_ERBE')) 
    3535            self.assertEqual(response.status, 200) 
    3636        except Exception, e: 
     
    4242    def testValidNDGB1URIIndex(self): 
    4343        try: 
    44             response = self.app.get(url_for(controller='retrieve',uri='badc.nerc.ac.uk__NDG-B1__dataent_ERBE')) 
     44            response = self.app.get(url_for(controller='browse/retrieve',uri='badc.nerc.ac.uk__NDG-B1__dataent_ERBE')) 
    4545            self.assertEqual(response.status, 200) 
    4646        except Exception, e: 
     
    5252    def testValidAtomURIIndex(self): 
    5353        try: 
    54             response = self.app.get(url_for(controller='retrieve',uri='badc.nerc.ac.uk__ATOM__dataent_11679938403412067')) 
     54            response = self.app.get(url_for(controller='browse/retrieve',uri='badc.nerc.ac.uk__ATOM__dataent_11679938403412067')) 
    5555            self.assertEqual(response.status, 200) 
    5656        except Exception, e: 
     
    6161    def testValidDEURIView(self): 
    6262        try: 
    63             response = self.app.get(url_for(controller='retrieve', action='view', uri='badc.nerc.ac.uk__DIF__dataent_ERBE')) 
     63            response = self.app.get(url_for(controller='browse/retrieve', action='view', uri='badc.nerc.ac.uk__DIF__dataent_ERBE')) 
    6464            self.assertEqual(response.status, 200) 
    6565        except Exception, e: 
  • MILK/trunk/milk_server/milk_server/tests/functional/test_selectedItems.py

    r4472 r4487  
    33class TestSelectionController(TestController): 
    44    def test_index(self): 
    5         response = self.app.get(url_for(controller='selectedItems')) 
     5        response = self.app.get(url_for(controller='visualise/selectedItems')) 
    66        # Test response... 
  • MILK/trunk/milk_server/milk_server/tests/lib/testutilities.py

    r4472 r4487  
    55    """ Tests as required """ 
    66 
    7     # TODO: these files are not available in the codebase... fix! 
    8     configFile='examples/example.config' 
    9     difFile='examples/neodc.eg1.dif' 
    107     
    118    def setUp(self): 
    12         # If pkg_resources is available assume the module is eggified and 
    13         # get a stream to the input data from the egg. 
    14         #try: 
    15         #    import pkg_resources 
    16         #    f = pkg_resources.resource_stream(__name__, self.configFile) 
    17         #except ImportError: 
    18             # Else take the input file from __file__ 
    19             #import os 
    20         self.config=myConfig(self.configFile) 
    21         f=file(self.difFile,'r') 
    22         self.difxml=f.read() 
    23             #f=file(os.path.join(os.path.basepath(__file__), self.configFile)) 
     9        print "TODO..." 
    2410 
    25         #self.config=myConfig(f) 
    26  
    27     def testConfig(self): 
    28         print 'Discovery Icon [%s]'%self.config.get('DISCOVERY','icon') 
     11    #def testConfig(self): 
     12    #    print "TODO..." 
    2913         
    30     def testidget(self): 
    31         self.assertEqual(idget(self.difxml),'NOCSDAT192') 
    32  
    33  
    3414if __name__=="__main__": 
    3515    unittest.main() 
  • exist/trunk/python/ndgUtils/models/AccessControl.py

    r4469 r4487  
    1 from milk_server.lib.Utilities import wrapGetText 
     1from ndgUtils.models.utilities import wrapGetText 
    22class AccessControl: 
    33         
  • exist/trunk/python/ndgUtils/models/DIF.py

    r4469 r4487  
    22# renderEntity etc ... 
    33# 
    4 from milk_server.lib.Utilities import * 
    5 from milk_server.lib.geoUtilities import * 
     4from ndgUtils.models.utilities import formatDateYYYY 
     5from ndgUtils.models.molesbounding import Bounding as Bounding 
    66from People2 import * 
    77from AccessControl import AccessControl 
     
    1010from ndgUtils.ndgObject import ndgObject 
    1111from stubB import collapse2 
    12 import urllib 
     12import urllib, logging 
    1313 
    1414try: #python 2.5 
     
    4444        '''Initialise a python dif instance based on an xml document (expected 
    4545        to be an input string if et=0, otherwise an ElementTree instance) ''' 
     46        logging.info("Setting up DIF data model") 
    4647        if et: 
    4748            try: 
     
    157158        # Let's first see if we get an author out of the citation, 
    158159        self.authors=helper.getText(self.tree,'Data_Set_Citation/Dataset_Creator')  
    159         self.date=dateParse(helper.getText(self.tree,'Data_Set_Citation/Dataset_Release_Date'),'YYYY') 
    160         #if self.date=='': self.date='XXXX' 
     160        self.date=formatDateYYYY(helper.getText(self.tree,'Data_Set_Citation/Dataset_Release_Date')) 
    161161        self.title=helper.getText(self.tree,'Data_Set_Citation/Dataset_Title') 
    162162        self.briefCitation='' 
     
    213213            else: self.binding=None 
    214214        if self.debug: 
    215            f=open('difs.log','a') 
    216            f.write('%s##\n%s\n##################################\n'%(self.entryID,self.xml)) 
    217            f.close() 
    218  
    219          
     215            f=open('difs.log','a') 
     216            f.write('%s##\n%s\n##################################\n'%(self.entryID,self.xml)) 
     217            f.close() 
     218             
     219        logging.info("DIF data model set up") 
     220 
     221         
  • exist/trunk/python/ndgUtils/models/People.py

    r4469 r4487  
    1 from milk_server.lib.Utilities import wrapGetText 
     1from ndgUtils.models.utilities import wrapGetText 
    22from ndgUtils.ETxmlView import nsdumb 
    33from milk_server.lib.htmlUtilities import * 
  • exist/trunk/python/ndgUtils/models/stubB.py

    r4469 r4487  
    88#  
    99 
    10 from milk_server.lib.Utilities import * 
     10from ndgUtils.models.utilities import wrapGetText 
    1111from ndgUtils.BeautifulSoup import BeautifulSoup 
    1212from AccessControl import AccessControl 
    13 from milk_server.lib.geoUtilities import Bounding 
     13from ndgUtils.models.molesbounding import Bounding as Bounding 
    1414from People import * 
    1515from ndgUtils import ndgObject 
  • exist/trunk/python/ndgUtils/ndgObject.py

    r4484 r4487  
    106106 
    107107        # set default return format - if not set, just return in original format 
    108         fmt='' 
    109         if self.config.has_option('DISCOVERY','formatDefault'): 
    110             fmt = self.config.get('DISCOVERY','formatDefault') 
    111             logging.info("Default discovery format set to: %s" %fmt) 
     108        fmt = self.config.get('DISCOVERY','formatDefault') 
     109        logging.info("Default discovery format set to: %s" %fmt) 
    112110             
    113111        self.BURL=None 
     
    120118        # config file should have details on the service to use for the repository 
    121119        # - if not, default to 'unknown' 
    122         servicehost = 'unknown' 
    123         if self.config.has_option('NDG_B_SERVICE',self.repository): 
    124                 servicehost = self.config.get('NDG_B_SERVICE',self.repository) 
     120        servicehost = self.config.get('NDG_B_SERVICE',self.repository) 
     121        if not servicehost: 
     122            servicehost = 'unknown' 
    125123             
    126124        # If this record is itself a discovery record, then we don't have much more to do 
Note: See TracChangeset for help on using the changeset viewer.