From e81d0045e464a4592a11c3837fd2bef8dc2c7c44 2016-10-06 20:01:29 From: Fiorella Quino Date: 2016-10-06 20:01:29 Subject: [PATCH] Task #714: Modulo ABS git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@222 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71 --- diff --git a/apps/abs/models.py b/apps/abs/models.py index 1d4566c..9eafc7d 100644 --- a/apps/abs/models.py +++ b/apps/abs/models.py @@ -308,8 +308,7 @@ class ABSConfiguration(Configuration): module = 'ABS_'+str(module_num) bs = '' #{} i=1 - #beams = {1: '001000', 2: '010001', 3: '010010', 4: '000011', 5: '101100', 6: '101101', - # 7: '110110', 8: '111111', 9: '000000', 10: '001001', 11: '010010', 12: '011011'} + for beam in beams: #bs[i] = fromBinary2Char(beam.module_6bits(module_num)) bs = bs + fromBinary2Char(beam.module_6bits(module_num)) @@ -318,14 +317,17 @@ class ABSConfiguration(Configuration): beams = bs parameters = {} - parameters['header'] = header - parameters['module'] = module + #parameters['header'] = header + #parameters['module'] = module parameters['beams'] = beams #json.dumps(beams) - print parameters['beams'] + #print beams + #print parameters['beams'] + print parameters answer = '' try: - r_write = requests.post(write_route, parameters, timeout=0.5) + #r_write = requests.post(write_route, parameters, timeout=0.5) + r_write = requests.post(write_route, json = parameters, timeout=0.5) answer = r_write.json() self.message = answer['message'] except: @@ -333,6 +335,50 @@ class ABSConfiguration(Configuration): return 0 return 1 + + + def write_device(self): + """ + This function sends the beams list to every abs module. + It needs 'module_conf' function + """ + + beams = ABSBeam.objects.filter(abs_conf=self) + + #-------------Write each abs module----------- + if beams: + beams_status = ast.literal_eval(self.module_status) + for i in range(61,64): #(62,65) + try: + answer = self.module_conf(i, beams) + beams_status[str(i)] = 1 + self.module_status = json.dumps(beams_status) + self.save() + + except: + beams_status[str(i)] = 0 + self.module_status = json.dumps(beams_status) + self.save() + answer = 0 + return 0 + else: + self.message = "ABS Configuration does not have beams" + return 0 + + #self.device.status = 1 + ## + if answer==1: + self.message = "ABS Beams List have been sent to ABS Modules" + beams[0].set_as_activebeam() + else: + self.message = "Could not read ABS parameters" + ## + self.save() + return 1 + + + + def read_module(self, module): """ @@ -360,19 +406,17 @@ class ABSConfiguration(Configuration): module_bits = answer['allbits'] except: #message = "Could not read ABS parameters" + answer = r_write.json() return 0 return module_bits - def read_module(self, module): - - return True - - def status_device(self): + def absmodule_status(self): """ This function gets the status of each abs module. It sends GET method to Web Application in Python Bottle. + This function updates "module_status" field from ABSconfiguration. """ ip_address = self.device.ip_address ip_address = ip_address.split('.') @@ -395,51 +439,38 @@ class ABSConfiguration(Configuration): modules_status[str(i)] = 0 pass - self.message = 'ABS modules Status have been updated.' + self.module_status=json.dumps(modules_status) self.save() return - def write_device(self): + def connected_modules(self): """ - This function sends the beams list to every abs module. - It needs 'module_conf' function + This function returns the number of connected abs-modules without updating. """ + modules_status = json.loads(self.module_status) + num = 0 + for status in modules_status: + num = num +modules_status[status] - beams = ABSBeam.objects.filter(abs_conf=self) + return num - #-------------Write each abs module----------- - if beams: - beams_status = ast.literal_eval(self.module_status) - for i in range(61,64): #(62,65) - try: - answer = self.module_conf(i, beams) - beams_status[str(i)] = 1 - self.module_status = json.dumps(beams_status) - self.save() - except: - beams_status[str(i)] = 0 - self.module_status = json.dumps(beams_status) - self.save() - answer = 0 - return 0 - else: - self.message = "ABS Configuration does not have beams" - return 0 + def status_device(self): + """ + This function returns the status of all abs-modules as one. + If at least one module is connected, its answer is "1" + """ + self.absmodule_status() + connected_modules = self.connected_modules() + if connected_modules>0: + self.message = 'ABS modules Status have been updated.' + return 1 + self.message = 'No ABS module is connected.' + return 0 - #self.device.status = 1 - ## - if answer==1: - self.message = "ABS Beams List have been sent to ABS Modules" - beams[0].set_as_activebeam() - else: - self.message = "Could not read ABS parameters" - ## - self.save() - return 1 def write_module(self, module): diff --git a/apps/abs/templates/abs_conf.html b/apps/abs/templates/abs_conf.html index 50900ce..ddc3e7b 100644 --- a/apps/abs/templates/abs_conf.html +++ b/apps/abs/templates/abs_conf.html @@ -51,7 +51,7 @@ } .north tr{ border: 1px solid #ffffff; - + } .north td{ border: 2px solid #e2e2e7; @@ -177,12 +177,12 @@ {% endfor %} - +
{% if active_beam %} -

Active Beam: {{active_beam.name}}

+

Active Beam: {{active_beam.name}}

@@ -304,20 +304,19 @@
- + - + - + - +
Legend
REDDisconnectedREDDisconnected
ORANGEConnectedORANGEConnected
GREENRunning - GREENRunning
- - + + {% else %} @@ -341,8 +340,8 @@
- - + + {% for beam in beams %} {% endif %} - - + + {% if active_beam %} {% if active_beam.id == beam.id %} @@ -485,27 +484,27 @@ Legend - REDDisconnected + REDDisconnected - ORANGEConnected + ORANGEConnected - GREENRunning + GREENRunning - + {% endif %} {% endif %} - +
{% endfor %} - + @@ -519,9 +518,9 @@ $(document).ready(function() { {% for beam in beams %} $("#send_beam{{forloop.counter}}").click(function() { document.location = "{% url 'url_send_beam' dev_conf.id beam.id %}"; - }); + }); {%endfor%} - + }); diff --git a/apps/abs/views.py b/apps/abs/views.py index 0927e2e..d3163ad 100644 --- a/apps/abs/views.py +++ b/apps/abs/views.py @@ -131,17 +131,17 @@ def abs_conf(request, id_conf): color_status = {} for status in modules_status: - if modules_status[status] == 2: #Running background-color: #ff0000; - color_status[status] = 'bgcolor=#00cc00' + if modules_status[status] == 2: #Running background-color: #00cc00; + color_status[status] = 'class=text-success'#'bgcolor=#00cc00' elif modules_status[status] == 1: #Connected background-color: #ee902c; - color_status[status] = 'bgcolor=#ee902c' - else: #Disconnected background-color: #00cc00; - color_status[status] = 'bgcolor=#FF0000' + color_status[status] = 'class=text-warning'#'bgcolor=#ee902c' + else: #Disconnected background-color: #ff0000; + color_status[status] = 'class=text-danger'#'bgcolor=#FF0000' #------------------------------------------------ kwargs = {} - kwargs['status'] = conf.device.get_status_display() - + #kwargs['status'] = conf.device.get_status_display() + kwargs['connected_modules'] = str(conf.connected_modules())+'/64' kwargs['dev_conf'] = conf kwargs['dev_conf_keys'] = ['name',]