From ea056af043e8e9059f1289ba3d7e16d587a8ac03 2016-03-23 23:35:35 From: Fiorella Quino Date: 2016-03-23 23:35:35 Subject: [PATCH] Task #95: Modulo CGS git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@80 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71 --- diff --git a/apps/cgs/models.py b/apps/cgs/models.py index aca35d7..04765cb 100644 --- a/apps/cgs/models.py +++ b/apps/cgs/models.py @@ -65,5 +65,112 @@ class CGSConfiguration(Configuration): return parameters + def status_device(self): + + import requests + + ip=self.device.ip_address + port=self.device.port_address + + route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" + try: + r = requests.get(route) + except: + self.device.status = 0 + self.device.save() + return self.device.status + + response = str(r.text) + response = response.split(";") + icon = response[0] + status = response[-1] + + print icon, status + #"icon" could be: "alert" or "okay" + if "alert" in icon: + if "Starting Up" in status: #No Esta conectado + self.device.status = 0 + else: + self.device.status = 1 + elif "okay" in icon: + self.device.status = 3 + else: + self.device.status = 1 + + self.message = status + self.device.save() + + + return self.device.status + + + def read_device(self): + + import requests + + ip=self.device.ip_address + port=self.device.port_address + + route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" + try: + frequencies = requests.get(route) + + except: + self.message = "Could not read CGS parameters from this device" + return None + + frequencies = frequencies.json() + frequencies = frequencies.get("Frecuencias") + f0 = frequencies.get("f0") + f1 = frequencies.get("f1") + f2 = frequencies.get("f2") + f3 = frequencies.get("f3") + + parms = {'freq0': f0, + 'freq1': f1, + 'freq2': f2, + 'freq3': f3} + + self.message = "" + return parms + + + def write_device(self): + + import requests + + ip=self.device.ip_address + port=self.device.port_address + + #---Frequencies from form + f0 = self.freq0 + f1 = self.freq1 + f2 = self.freq2 + f3 = self.freq3 + post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} + route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" + + try: + r = requests.post(route, post_data) + except: + self.message = "Could not write CGS parameters" + return None + + text = r.text + text = text.split(',') + + if len(text)>1: + title = text[0] + status = text[1] + if title == "okay": + self.message = status + return 3 + else: + self.message = title + ", " + status + return 1 + + return 1 + + class Meta: db_table = 'cgs_configurations' diff --git a/apps/cgs/urls.py b/apps/cgs/urls.py index b5a4a9f..ceb1b12 100644 --- a/apps/cgs/urls.py +++ b/apps/cgs/urls.py @@ -4,11 +4,11 @@ urlpatterns = ( url(r'^(?P-?\d+)/$', 'apps.cgs.views.cgs_conf', name='url_cgs_conf'), url(r'^(?P-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'), #url(r'^(?P-?\d+)/(?P-?\d+)/$', 'apps.cgs.views.cgs_conf', name='url_cgs_conf'), - url(r'^(?P-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'), - url(r'^(?P-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'), - url(r'^(?P-?\d+)/read/$', 'apps.cgs.views.cgs_conf_read', name='url_read_cgs_conf'), - url(r'^(?P-?\d+)/import/$', 'apps.cgs.views.cgs_conf_import', name='url_import_cgs_conf'), - url(r'^(?P-?\d+)/export/$', 'apps.cgs.views.cgs_conf_export', name='url_export_cgs_conf'), +# url(r'^(?P-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'), +# url(r'^(?P-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'), +# url(r'^(?P-?\d+)/read/$', 'apps.cgs.views.cgs_conf_read', name='url_read_cgs_conf'), +# url(r'^(?P-?\d+)/import/$', 'apps.cgs.views.cgs_conf_import', name='url_import_cgs_conf'), +# url(r'^(?P-?\d+)/export/$', 'apps.cgs.views.cgs_conf_export', name='url_export_cgs_conf'), #url(r'^(?P-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_cgs_conf'), ) diff --git a/apps/cgs/views.py b/apps/cgs/views.py index 5c91369..e3e799e 100644 --- a/apps/cgs/views.py +++ b/apps/cgs/views.py @@ -22,34 +22,36 @@ def cgs_conf(request, id_conf): kwargs = {} - if request.method=='GET': + kwargs['status'] = conf.device.get_status_display() + + #if request.method=='GET': #r: response = icon, status - try: - route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" - r = requests.get(route) - response = str(r.text) - response = response.split(";") - icon = response[0] - status = response[-1] + # try: + # route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" + # r = requests.get(route) + # response = str(r.text) + # response = response.split(";") + # icon = response[0] + # status = response[-1] #print r.text #"icon" could be: "alert" or "okay" # Si hay alerta pero esta conectado - if "alert" in icon: - if "Starting Up" in status: #No Esta conectado - kwargs['connected'] = False - else: - kwargs['connected'] = True - elif "okay" in icon: - kwargs['connected'] = True - else: - kwargs['connected'] = False + # if "alert" in icon: + # if "Starting Up" in status: #No Esta conectado + # kwargs['connected'] = False + # else: + # kwargs['connected'] = True + # elif "okay" in icon: + # kwargs['connected'] = True + # else: + # kwargs['connected'] = False - except: - kwargs['connected'] = False - status = "The Device is not connected." + # except: + # kwargs['connected'] = False + # status = "The Device is not connected." - if not kwargs['connected']: - messages.error(request, message=status) + #if not kwargs['connected']: + # messages.error(request, message=status) kwargs['dev_conf'] = conf kwargs['dev_conf_keys'] = ['experiment', 'device', @@ -61,6 +63,8 @@ def cgs_conf(request, id_conf): kwargs['button'] = 'Edit Configuration' + kwargs['no_play'] = True + ###### SIDEBAR ###### kwargs.update(sidebar(conf)) @@ -102,221 +106,221 @@ def cgs_conf_edit(request, id_conf): kwargs.update(sidebar(conf)) return render(request, 'cgs_conf_edit.html', kwargs) - -def cgs_conf_write(request, id_conf): - - conf = get_object_or_404(CGSConfiguration, pk=id_conf) - ip=conf.device.ip_address - port=conf.device.port_address - - #Frequencies from form - f0 = conf.freq0 - f1 = conf.freq1 - f2 = conf.freq2 - f3 = conf.freq3 - - try: - post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} - route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" - r = requests.post(route, post_data) - text = r.text - text = text.split(',') - - try: - if len(text)>1: - title = text[0] - status = text[1] - status_ok = r.status_code - if title == "okay": - messages.success(request, status) - else: - messages.error(request, status) - - else: - title = text[0] - messages.error(request, title) - - except: - messages.error(request, "An hardware error was found.") - - except: - messages.error(request, "Could not write parameters.") - - - - - return redirect('url_cgs_conf', id_conf=conf.id) - -def cgs_conf_read(request, id_conf): - - conf = get_object_or_404(CGSConfiguration, pk=id_conf) - - ip=conf.device.ip_address - port=conf.device.port_address - - if request.method=='POST': - form = CGSConfigurationForm(request.POST, instance=conf) - - if form.is_valid(): - cgs_model = form.save(commit=False) - - if cgs_model.verify_frequencies(): - - cgs_model.save() - return redirect('url_cgs_conf', id_conf=conf.id) - - messages.error(request, "Parameters could not be saved. Invalid parameters") - - data = {} - - - if request.method=='GET': - #r: response = icon, status - route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" - try: - r = requests.get(route) - response = str(r.text) - response = response.split(";") - icon = response[0] - status = response[-1] - print r.text - #"icon" could be: "alert" or "okay" - if "okay" in icon: - messages.success(request, status) - else: - messages.error(request, status) - #Get Frequencies - route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" - #frequencies = requests.get('http://10.10.10.175:8080/frequencies/') - frequencies = requests.get(route) - frequencies = frequencies.json() - frequencies = frequencies.get("Frecuencias") - f0 = frequencies.get("f0") - f1 = frequencies.get("f1") - f2 = frequencies.get("f2") - f3 = frequencies.get("f3") - print f0,f1,f2,f3 - - - if not response: - messages.error(request, "Could not read parameters from Device") - return redirect('url_cgs_conf', id_conf=conf.id) - - data = {'experiment' : conf.experiment.id, - 'device' : conf.device.id, - 'freq0' : f0, - 'freq1' : f1, - 'freq2' : f2, - 'freq3' : f3, - } - except: - messages.error(request, "Could not read parameters from Device") - data = {'experiment' : conf.experiment.id, - 'device' : conf.device.id, - 'freq0' : None, - 'freq1' : None, - 'freq2' : None, - 'freq3' : None, - } - return redirect('url_cgs_conf', id_conf=conf.id) - - form = CGSConfigurationForm(initial = data) - - kwargs = {} - kwargs['id_dev'] = conf.id - kwargs['form'] = form - kwargs['title'] = 'Device Configuration' - kwargs['suptitle'] = 'Parameters read from device' - kwargs['button'] = 'Save' - - ###### SIDEBAR ###### - kwargs.update(sidebar(conf)) - - return render(request, 'cgs_conf_edit.html', kwargs) - -def cgs_conf_import(request, id_conf): - - conf = get_object_or_404(CGSConfiguration, pk=id_conf) - - if request.method == 'POST': - file_form = UploadFileForm(request.POST, request.FILES) - - if file_form.is_valid(): - - try: - if conf.update_from_file(request.FILES['file']): - - try: - conf.full_clean() - except ValidationError as e: - messages.error(request, e) - else: - conf.save() - - messages.success(request, "Parameters imported from file: '%s'." %request.FILES['file'].name) - #messages.warning(request,"") - return redirect('url_cgs_conf', id_conf=conf.id) - except: - messages.error(request, "No JSON object could be decoded.") - - messages.error(request, "Could not import parameters from file") - - else: - file_form = UploadFileForm(initial={'title': '.json'}) - - - kwargs = {} - kwargs['id_dev'] = conf.id - kwargs['title'] = 'Device Configuration' - kwargs['form'] = file_form - kwargs['suptitle'] = 'Importing file' - kwargs['button'] = 'Import' - - kwargs.update(sidebar(conf)) - - return render(request, 'cgs_conf_import.html', kwargs) - -def handle_uploaded_file(f): - - data = {'freq0' : 62500000, - 'freq1' : 62500000, - 'freq2' : 62500000, - 'freq3' : 62500000, - } - - return data - -def cgs_conf_export(request, id_conf): - - conf = get_object_or_404(CGSConfiguration, pk=id_conf) - ip=conf.device.ip_address - port=conf.device.port_address - - if request.method=='GET': - data = {"Frequencies": [ - ["freq0", conf.freq0], - ["freq1", conf.freq1], - ["freq2", conf.freq2], - ["freq3", conf.freq3] - ]} - json_data = json.dumps(data) - conf.parameters = json_data - response = HttpResponse(conf.parameters, content_type="application/json") - response['Content-Disposition'] = 'attachment; filename="data.json"' - - return response - - kwargs = {} - kwargs['dev_conf'] = conf - kwargs['dev_conf_keys'] = ['experiment', 'device', - 'freq0', 'freq1', - 'freq2', 'freq3'] - - kwargs['title'] = 'CGS Configuration' - kwargs['suptitle'] = 'Details' - - kwargs['button'] = 'Edit Configuration' - - ###### SIDEBAR ###### - kwargs.update(sidebar(conf)) - return render(request, 'cgs_conf.html', kwargs) \ No newline at end of file +# +# def cgs_conf_write(request, id_conf): +# +# conf = get_object_or_404(CGSConfiguration, pk=id_conf) +# ip=conf.device.ip_address +# port=conf.device.port_address +# +# #Frequencies from form +# f0 = conf.freq0 +# f1 = conf.freq1 +# f2 = conf.freq2 +# f3 = conf.freq3 +# +# try: +# post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} +# route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" +# r = requests.post(route, post_data) +# text = r.text +# text = text.split(',') +# +# try: +# if len(text)>1: +# title = text[0] +# status = text[1] +# status_ok = r.status_code +# if title == "okay": +# messages.success(request, status) +# else: +# messages.error(request, status) +# +# else: +# title = text[0] +# messages.error(request, title) +# +# except: +# messages.error(request, "An hardware error was found.") +# +# except: +# messages.error(request, "Could not write parameters.") +# +# +# +# +# return redirect('url_cgs_conf', id_conf=conf.id) +# +# def cgs_conf_read(request, id_conf): +# +# conf = get_object_or_404(CGSConfiguration, pk=id_conf) +# +# ip=conf.device.ip_address +# port=conf.device.port_address +# +# if request.method=='POST': +# form = CGSConfigurationForm(request.POST, instance=conf) +# +# if form.is_valid(): +# cgs_model = form.save(commit=False) +# +# if cgs_model.verify_frequencies(): +# +# cgs_model.save() +# return redirect('url_cgs_conf', id_conf=conf.id) +# +# messages.error(request, "Parameters could not be saved. Invalid parameters") +# +# data = {} +# +# +# if request.method=='GET': +# #r: response = icon, status +# route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" +# try: +# r = requests.get(route) +# response = str(r.text) +# response = response.split(";") +# icon = response[0] +# status = response[-1] +# print r.text +# #"icon" could be: "alert" or "okay" +# if "okay" in icon: +# messages.success(request, status) +# else: +# messages.error(request, status) +# #Get Frequencies +# route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" +# #frequencies = requests.get('http://10.10.10.175:8080/frequencies/') +# frequencies = requests.get(route) +# frequencies = frequencies.json() +# frequencies = frequencies.get("Frecuencias") +# f0 = frequencies.get("f0") +# f1 = frequencies.get("f1") +# f2 = frequencies.get("f2") +# f3 = frequencies.get("f3") +# print f0,f1,f2,f3 +# +# +# if not response: +# messages.error(request, "Could not read parameters from Device") +# return redirect('url_cgs_conf', id_conf=conf.id) +# +# data = {'experiment' : conf.experiment.id, +# 'device' : conf.device.id, +# 'freq0' : f0, +# 'freq1' : f1, +# 'freq2' : f2, +# 'freq3' : f3, +# } +# except: +# messages.error(request, "Could not read parameters from Device") +# data = {'experiment' : conf.experiment.id, +# 'device' : conf.device.id, +# 'freq0' : None, +# 'freq1' : None, +# 'freq2' : None, +# 'freq3' : None, +# } +# return redirect('url_cgs_conf', id_conf=conf.id) +# +# form = CGSConfigurationForm(initial = data) +# +# kwargs = {} +# kwargs['id_dev'] = conf.id +# kwargs['form'] = form +# kwargs['title'] = 'Device Configuration' +# kwargs['suptitle'] = 'Parameters read from device' +# kwargs['button'] = 'Save' +# +# ###### SIDEBAR ###### +# kwargs.update(sidebar(conf)) +# +# return render(request, 'cgs_conf_edit.html', kwargs) +# +# def cgs_conf_import(request, id_conf): +# +# conf = get_object_or_404(CGSConfiguration, pk=id_conf) +# +# if request.method == 'POST': +# file_form = UploadFileForm(request.POST, request.FILES) +# +# if file_form.is_valid(): +# +# try: +# if conf.update_from_file(request.FILES['file']): +# +# try: +# conf.full_clean() +# except ValidationError as e: +# messages.error(request, e) +# else: +# conf.save() +# +# messages.success(request, "Parameters imported from file: '%s'." %request.FILES['file'].name) +# #messages.warning(request,"") +# return redirect('url_cgs_conf', id_conf=conf.id) +# except: +# messages.error(request, "No JSON object could be decoded.") +# +# messages.error(request, "Could not import parameters from file") +# +# else: +# file_form = UploadFileForm(initial={'title': '.json'}) +# +# +# kwargs = {} +# kwargs['id_dev'] = conf.id +# kwargs['title'] = 'Device Configuration' +# kwargs['form'] = file_form +# kwargs['suptitle'] = 'Importing file' +# kwargs['button'] = 'Import' +# +# kwargs.update(sidebar(conf)) +# +# return render(request, 'cgs_conf_import.html', kwargs) +# +# def handle_uploaded_file(f): +# +# data = {'freq0' : 62500000, +# 'freq1' : 62500000, +# 'freq2' : 62500000, +# 'freq3' : 62500000, +# } +# +# return data +# +# def cgs_conf_export(request, id_conf): +# +# conf = get_object_or_404(CGSConfiguration, pk=id_conf) +# ip=conf.device.ip_address +# port=conf.device.port_address +# +# #if request.method=='GET': +# # data = {"Frequencies": [ +# # ["freq0", conf.freq0], +# # ["freq1", conf.freq1], +# # ["freq2", conf.freq2], +# # ["freq3", conf.freq3] +# # ]} +# # json_data = json.dumps(data) +# # conf.parameters = json_data +# # response = HttpResponse(conf.parameters, content_type="application/json") +# # response['Content-Disposition'] = 'attachment; filename="data.json"' +# +# # return response +# +# kwargs = {} +# kwargs['dev_conf'] = conf +# kwargs['dev_conf_keys'] = ['experiment', 'device', +# 'freq0', 'freq1', +# 'freq2', 'freq3'] +# +# kwargs['title'] = 'CGS Configuration' +# kwargs['suptitle'] = 'Details' +# +# kwargs['button'] = 'Edit Configuration' +# +# ###### SIDEBAR ###### +# kwargs.update(sidebar(conf)) +# return render(request, 'cgs_conf.html', kwargs) \ No newline at end of file