| 1 | # Create your views here. |
|---|
| 2 | |
|---|
| 3 | from django.http import HttpResponse |
|---|
| 4 | from django.core.context_processors import csrf |
|---|
| 5 | from django.shortcuts import render_to_response |
|---|
| 6 | from django.template import RequestContext |
|---|
| 7 | from wavedash.src.WavedashController import Controller |
|---|
| 8 | from BaseHTTPServer import HTTPServer |
|---|
| 9 | import wavedash.src.WaveformModel |
|---|
| 10 | import omniORB |
|---|
| 11 | |
|---|
| 12 | def 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 | |
|---|
| 29 | def 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 | |
|---|
| 39 | def 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 | def 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 | |
|---|
| 67 | def 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 | |
|---|
| 83 | def 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 | |
|---|
| 97 | def 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 | |
|---|
| 111 | def 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 | |
|---|
| 136 | def 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 | |
|---|
| 149 | def 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 | |
|---|
| 184 | def 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 | |
|---|
| 210 | def getControlMap(request): |
|---|
| 211 | map = request.session.get('controlMap') |
|---|
| 212 | if map: |
|---|
| 213 | return map |
|---|
| 214 | else: |
|---|
| 215 | map = {} |
|---|
| 216 | return map |
|---|
| 217 | |
|---|