source: TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/selectedItems.py @ 3422

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/selectedItems.py@3422
Revision 3422, 3.8 KB checked in by cbyrom, 12 years ago (diff)

Add the kid template and python script to support the new 'Selections' tab.

Line 
1from ows_server.lib.base import *
2from paste.request import parse_querystring
3from ows_server.models import Utilities
4import urllib
5
6class SelecteditemsController(BaseController):
7   
8    def index(self):
9        # Return a rendered template
10        #   return render_response('/some/template.html')
11        # or, Return a response object
12        self.inputs=dict(parse_querystring(request.environ))
13               
14        # if 'remove all' button clicked, clear out selection session data
15        if 'ClearSelections' in self.inputs: 
16            if 'selection' in session:
17                del session['selection']
18            session.save()
19        return render_response('selectedItems')
20   
21    def addSelectedItem(self,entryid,kmlurl,title,divid):
22        # add a selected item to the session
23        # - if this is the first item, then display the selections tab
24        selections = [(entryid,kmlurl,title),]
25        if 'selection' not in session:
26            newtabs=1
27            session['selection']=selections
28        else:
29            newtabs=0
30            for selection in session['selection']:
31                if len(selection) > 0 and selection[0] != entryid:
32                    selections.append(selection)
33                   
34            session['selection']=selections
35        session.save()
36   
37        # TODO: would be nice to have page refresh upon selection of
38        # first item - so that selections tab not always visible
39        if newtabs:
40            c.UpdatePageTabs=1
41            c.current='Results'
42            c.pageTabs.append(('Selections',
43                               h.url_for(controller='selectedItems',
44                                         action='index')))
45
46        return h.link_to_remote('Unselect',
47                              dict(update=divid,
48                                    url=h.url_for(controller="selectedItems",
49                                               action="unSelectItem",
50                                               entryid=entryid,
51                                               kmlurl=urllib.quote(kmlurl,''),
52                                               title=title,
53                                               divid=divid)))
54
55   
56    def removeSelectedItem(self,entryid):
57        # remove selected item from session data
58        self.deleteSelectedItem(entryid)
59        # rerender selections to update with item removed
60        return render_response('selectedItems')
61   
62    def deleteSelectedItem(self,entryid):
63        # remove selected item from session data
64        # - NB, do this by rebuilding the session data
65        # without the input data included
66        selections = [[]]
67        for selection in session['selection']: 
68            if len(selection) > 0 and selection[0] != entryid:
69                selections.append(selection)
70               
71        # if the new list is empty, remove the session variable and hide the selection page
72        if len(selections) == 1 and len(selections[0]) == 0:
73            del session['selection']
74            c.UpdatePageTabs=1
75        else:
76            session['selection']=selections
77        session.save()
78       
79
80    def unSelectItem(self,entryid,kmlurl,title,divid):
81        # remove selected item from session data and adjust the 'select' link
82        # to be 'unselect'
83        self.deleteSelectedItem(entryid)
84       
85        return h.link_to_remote("Select",
86                               dict(update=divid,
87                                    url=h.url_for(controller="selectedItems",
88                                               action="addSelectedItem",
89                                               entryid=entryid,
90                                               kmlurl=urllib.quote(kmlurl,''),
91                                               title=title,
92                                               divid=divid)))
Note: See TracBrowser for help on using the repository browser.