root/ossiedev/trunk/tools/cornetApps/WebDash/views.py @ 10885

Revision 10885, 6.8 KB (checked in by Snyder.Jason, 20 months ago)

changes for changing the naming service

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       
44def index(request):     
45        print request.session['namingService']
46        ctrlr = buildController(request)
47       
48       
49        if ctrlr == None:
50                error = "Error creating controller"
51                return render_to_response('WebDash/error.html', {'error' : error}, context_instance=RequestContext(request))
52
53        print 'naming service: ' + ctrlr.CORBAutils.getNamingService()
54        availableList = ctrlr.model.getSystemWaveforms()
55        instancesList = []     
56        instances = []
57        for waveform in availableList:
58                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
59                if instances:
60                        for instance in instances:
61                                instancesList.append(instance)
62
63       
64        return render_to_response('WebDash/index.html',
65                                                          {'availableList' : availableList, 'instancesList' : instancesList, 'address' : request.session.get('namingService')}, context_instance=RequestContext(request))
66       
67def index2(request, address):
68        ctrlr = buildController(request, address)
69       
70        availableList = ctrlr.model.getSystemWaveforms()
71        instancesList = []     
72        instances = []
73        for waveform in availableList:
74                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
75                if instances:
76                        for instance in instances:
77                                instancesList.append(instance)
78
79       
80        return render_to_response('WebDash/index.html',
81                                                          {'availableList' : availableList, 'instancesList' : instancesList}, context_instance=RequestContext(request))
82
83def running_page(request):
84        ctrlr = buildController(request)
85
86        availableList = ctrlr.model.getSystemWaveforms()
87        instancesList = []     
88        instances = []
89        for waveform in availableList:
90                instances = ctrlr.model.getInstanceWaveforms(waveform.getName())
91                if instances:
92                        for instance in instances:
93                                instancesList.append(instance)
94       
95        return render_to_response('WebDash/running.html', {'instancesList' : instancesList})
96
97def install(request, waveform_to_install):
98        ctrlr = buildController(request)
99
100        instance = ctrlr.installWaveform(waveform_to_install, True)
101        if instance:   
102                message = 'Install Successful'
103        else:   
104                message = 'Install Unsuccessful'
105
106        #link = '/WebDash/'
107        #return render_to_response('WebDash/message.html', {'message' : message, 'link' : link})
108        return running_page(request)
109
110
111def display(request, instance):
112        print 'in display: '
113        print '         request: ' + str(request)
114        print '         instance: ' + str(instance)
115        ctrlr = buildController(request)
116       
117        instance = ctrlr.model.getWaveform(instance, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
118
119        map = getControlMap(request)
120        propMap = {}
121        components = instance.components
122        for comp in components:
123                properties = comp.properties
124                for prop in properties:
125                        print prop.name + ": " + str(prop.type)
126                        for widget in ctrlr.getOptionalWidgets(prop.type):
127                                print widget.type
128                        propMap[prop.name] = ctrlr.getOptionalWidgets(prop.type)
129               
130       
131       
132
133        return render_to_response('WebDash/display.html',
134                                                          {'instance' : instance, 'map' : map, 'propMap' : propMap}, context_instance=RequestContext(request)) 
135
136def uninstall(request, instance_to_uninstall):
137        ctrlr = buildController(request)
138
139        uninstall = ctrlr.uninstallWaveform(instance_to_uninstall)
140        if uninstall:
141                message = 'Uninstall Successful'
142        else:
143                message = 'Uninstall Not Successful'
144
145        #link = '/WebDash/'
146        #return render_to_response('WebDash/message.html', {'message' : message, 'link' : link})
147        return running_page(request)
148
149def configure(request):
150        ctrlr = buildController(request)
151        if request.method == 'POST':
152                waveName = request.POST['waveform']
153                compName = request.POST['component']
154                propName = request.POST['property']
155                newValue = request.POST['propValue']
156               
157               
158                wave = ctrlr.model.getWaveform(waveName, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
159                comp = wave.getComponent(compName)
160                prop = comp.findPropertyByName(propName)
161           
162                propType = prop.getType()[1]
163                if propType in ['short', 'ushort', 'int', 'uint'] :
164                        ctrlr.model.configure(waveName, compName, propName, int(newValue))
165                elif propType in ['long', 'ulong']:
166                        ctrlr.model.configure(waveName, compName, propName, long(newValue))
167                elif propType in ['double', 'float']:
168                        ctrlr.model.configure(waveName, compName, propName, float(newValue))
169                elif propType in ['char', 'string']:
170                        ctrlr.model.configure(waveName, compName, propName, str(newValue))
171                elif propType in ['boolean']:
172                        if str(newValue).lower() in trueValues:
173                                ctrlr.model.configure(waveName, compName, propName, True)
174                        else:
175                                ctrlr.model.configure(waveName, compName, propName, False)
176       
177                message = "Configure successful!"
178                link = '/WebDash/' + waveName + '/display/'
179        return render_to_response('WebDash/message.html',
180                                                                {'message' : message, 'link' : link}, context_instance=RequestContext(request))
181
182       
183       
184def updateControls(request):
185        ctrlr = buildController(request)
186        if request.method == 'POST':
187                waveName = request.POST['waveform']
188                compName = request.POST['component']
189                propName = request.POST['property']
190       
191                widgetType = request.POST['control']
192               
193                wave = ctrlr.model.getWaveform(waveName, wavedash.src.WaveformModel.INSTANCE_WAVEFORM)
194                comp = wave.getComponent(compName)
195                prop = comp.findPropertyByName(propName)
196                map = getControlMap(request)
197                key = wave.getName() +  comp.getName() + prop.getName()
198                map[key] = widgetType
199                request.session['controlMap'] = map
200                print map
201               
202               
203                message = "Update successful!"
204                link = '/WebDash/' + waveName + '/display/'
205                return render_to_response('WebDash/message.html',
206                                                                {'message' : message, 'link' : link}, context_instance=RequestContext(request))
207               
208       
209
210def getControlMap(request):
211        map = request.session.get('controlMap')
212        if map:
213                return map
214        else:
215                map = {}
216                return map
217
Note: See TracBrowser for help on using the browser.