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

Revision 10913, 6.8 KB (checked in by edent, 19 months ago)

merge old WebDash? views

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