root/ossiedev/branches/jsnyder/trunk/tools/cornetApps/WebDash/views.py @ 11092

Revision 11092, 7.0 KB (checked in by edent, 15 months ago)

add ports and ip when loading node

Line 
1# Create your views here.
2
3from django.http import HttpResponse
4from django.core.context_processors import csrf
5from django.shortcuts import render_to_response
6from django.template import RequestContext
7from wavedash.src.WavedashController import Controller
8from BaseHTTPServer import HTTPServer
9import wavedash.src.WaveformModel
10import omniORB
11
12def buildController(request, address=None):
13        ctrlr = Controller(False)
14        ctrlr.createWidgetContainer() 
15        if address is not None:
16                request.session['namingService'] = address
17                ctrlr.CORBAutils.setNamingService(str(address))
18        else:
19                namingService = request.session.get('namingService') 
20                if namingService:
21                        ctrlr.CORBAutils.setNamingService(str(namingService))
22
23        result = ctrlr.CORBAutils.init_CORBA(False)
24        if result == -1:
25                return None
26        ctrlr.buildModel()
27        return ctrlr
28
29def updateNamingService(request):
30        newAddress = request.POST['namingServiceText']
31        request.session['namingService'] = newAddress
32       
33        message = "Naming Service Update successful!"
34        link = '/WebDash/'
35        return render_to_response('WebDash/message.html',
36                                                                {'message' : message, 'link' : link}, context_instance=RequestContext(request))
37       
38
39def waveforms(request):
40        ctrlr = buildController(request)
41        availableList = ctrlr.model.getSystemWaveforms()
42        return render_to_response("WebDash/waveforms.html", locals(), context_instance=RequestContext(request))
43       
44"""
45Displays available waveforms by checking with naming service from session variables
46"""
47def index(request):     
48        ctrlr = buildController(request)
49       
50       
51        if ctrlr == None:
52                error = "Error creating controller"
53                return render_to_response('WebDash/error.html', {'error' : error}, context_instance=RequestContext(request))
54
55        availableList = ctrlr.model.getSystemWaveforms()
56        instancesList = []     
57        instances = []
58        for waveform in availableList:
59                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
60                if instances:
61                        for instance in instances:
62                                instancesList.append(instance)
63
64       
65        return render_to_response('WebDash/index.html',
66                                                          {'availableList' : availableList, 'instancesList' : instancesList, 'address' : request.session.get('namingService')}, context_instance=RequestContext(request))
67       
68"""
69Takes in an address as parameter to display available waveforms on node
70"""
71def index2(request, address):
72        ctrlr = buildController(request, address)
73        if ctrlr == None:
74                error = "Error creating controller"
75                return render_to_response('WebDash/error.html', {'error' : error}, context_instance=RequestContext(request))
76        availableList = ctrlr.model.getSystemWaveforms()
77        instancesList = []     
78        instances = []
79        for waveform in availableList:
80                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
81                if instances:
82                        for instance in instances:
83                                instancesList.append(instance)
84
85       
86        return render_to_response('WebDash/index.html',
87                                                          {'availableList' : availableList, 'instancesList' : instancesList}, context_instance=RequestContext(request))
88
89def running_page(request):
90        ctrlr = buildController(request)
91        if ctrlr == None:
92                error = "Error creating controller"
93                return render_to_response('WebDash/error.html', {'error' : error}, context_instance=RequestContext(request))
94
95        availableList = ctrlr.model.getSystemWaveforms()
96        instancesList = []     
97        instances = []
98        for waveform in availableList:
99                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
100                if instances:
101                        for instance in instances:
102                                instancesList.append(instance)
103       
104        return render_to_response('WebDash/running.html', {'instancesList' : instancesList})
105
106def install(request, waveform_to_install):
107        ctrlr = buildController(request)
108
109        instance = ctrlr.installWaveform(waveform_to_install, True)
110        if instance:   
111                message = 'Install Successful'
112        else:   
113                message = 'Install Unsuccessful'
114
115        #link = '/WebDash/'
116        #return render_to_response('WebDash/message.html', {'message' : message, 'link' : link})
117        return running_page(request)
118
119
120def display(request, instance):
121       
122        ctrlr = buildController(request)
123       
124        instance = ctrlr.model.getWaveform(instance, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
125
126        map = getControlMap(request)
127        propMap = {}
128        components = instance.components
129        for comp in components:
130                properties = comp.properties
131                for prop in properties:
132                        propMap[prop.name] = ctrlr.getOptionalWidgets(prop.type)
133               
134       
135       
136
137        return render_to_response('WebDash/display.html',
138                                                          {'instance' : instance, 'map' : map, 'propMap' : propMap}, context_instance=RequestContext(request)) 
139
140def uninstall(request, instance_to_uninstall):
141        ctrlr = buildController(request)
142
143        uninstall = ctrlr.uninstallWaveform(instance_to_uninstall)
144        if uninstall:
145                message = 'Uninstall Successful'
146        else:
147                message = 'Uninstall Not Successful'
148
149        #link = '/WebDash/'
150        #return render_to_response('WebDash/message.html', {'message' : message, 'link' : link})
151        return running_page(request)
152
153def configure(request):
154        ctrlr = buildController(request)
155        if request.method == 'POST':
156                waveName = request.POST['waveform']
157                compName = request.POST['component']
158                propName = request.POST['property']
159                newValue = request.POST['propValue']
160               
161               
162                wave = ctrlr.model.getWaveform(waveName, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
163                comp = wave.getComponent(compName)
164                prop = comp.findPropertyByName(propName)
165           
166                propType = prop.getType()[1]
167                if propType in ['short', 'ushort', 'int', 'uint'] :
168                        ctrlr.model.configure(waveName, compName, propName, int(newValue))
169                elif propType in ['long', 'ulong']:
170                        ctrlr.model.configure(waveName, compName, propName, long(newValue))
171                elif propType in ['double', 'float']:
172                        ctrlr.model.configure(waveName, compName, propName, float(newValue))
173                elif propType in ['char', 'string']:
174                        ctrlr.model.configure(waveName, compName, propName, str(newValue))
175                elif propType in ['boolean']:
176                        if str(newValue).lower() in trueValues:
177                                ctrlr.model.configure(waveName, compName, propName, True)
178                        else:
179                                ctrlr.model.configure(waveName, compName, propName, False)
180       
181                message = "Configure successful!"
182                link = '/WebDash/' + waveName + '/display/'
183        return render_to_response('WebDash/message.html',
184                                                                {'message' : message, 'link' : link}, context_instance=RequestContext(request))
185
186       
187       
188def updateControls(request):
189        ctrlr = buildController(request)
190        if request.method == 'POST':
191                waveName = request.POST['waveform']
192                compName = request.POST['component']
193                propName = request.POST['property']
194       
195                widgetType = request.POST['control']
196               
197                wave = ctrlr.model.getWaveform(waveName, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
198                comp = wave.getComponent(compName)
199                prop = comp.findPropertyByName(propName)
200                map = getControlMap(request)
201                key = wave.getName() +  comp.getName() + prop.getName()
202                map[key] = widgetType
203                request.session['controlMap'] = map
204               
205               
206                message = "Update successful!"
207                link = '/WebDash/' + waveName + '/display/'
208                return render_to_response('WebDash/message.html',
209                                                                {'message' : message, 'link' : link}, context_instance=RequestContext(request))
210               
211       
212
213def getControlMap(request):
214        map = request.session.get('controlMap')
215        if map:
216                return map
217        else:
218                map = {}
219                return map
220
Note: See TracBrowser for help on using the browser.