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

Revision 10901, 7.5 KB (checked in by edent, 20 months ago)

modifiy for server

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