source: cowsserver/trunk/lib/cowsserver/controllers/catalogue.py @ 6405

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cowsserver/trunk/lib/cowsserver/controllers/catalogue.py@6405
Revision 6405, 1.6 KB checked in by domlowe, 10 years ago (diff)

Catching broken symlinks in trunk

Line 
1import logging
2
3import cowsserver.lib.base as base
4
5from cowsserver.lib.base import csTemplateLoader , globalCSMLConnector, c
6import operator
7
8
9log = logging.getLogger(__name__)
10
11class CatalogueController(base.BaseController):
12    """
13    List available endpoints.
14    """
15
16    def index(self):
17       
18        log.debug("starting catalog index action")
19       
20        c.allwxs=[]
21        c.wfsonly=[]
22
23        #need to handle wfs only features separately so sort into two lists
24        listwfsonly = list(globalCSMLConnector.listwfsonly())
25       
26       
27        log.debug("globalCSMLConnector.list() = %s" % ([x for x in globalCSMLConnector.list()],))
28       
29        for fc in globalCSMLConnector.list():
30           
31            if globalCSMLConnector.isGroup(fc):
32                fc_name = fc
33            else:
34                try:
35                    doc = globalCSMLConnector.getCsmlDoc(fc)
36                except ValueError:
37                    log.warning('could not open file %s'%fc)
38                    continue     
39               
40                if hasattr(doc, 'name'):
41                    fc_name = doc.name.CONTENT
42                else:
43                    fc_name = fc
44               
45            if fc in listwfsonly:
46                c.wfsonly.append((fc, fc_name) )
47            else:
48                c.allwxs.append((fc, fc_name) )
49       
50       
51        def sortCFByName(a, b):
52            return cmp(a[1].lower(), b[1].lower())
53       
54        c.allwxs.sort(cmp=sortCFByName)
55       
56        c.wfsonly.sort(cmp=sortCFByName)
57               
58        t = csTemplateLoader.load('catalogue.xml')
59       
60        return t.generate(c=c).render()
Note: See TracBrowser for help on using the repository browser.