diff --git a/apps/jars/models.py b/apps/jars/models.py index 6dacfa2..7b0d1a2 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -190,34 +190,57 @@ class JARSConfiguration(Configuration): def status_device(self): - answer = api.status(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) - self.message = answer[2:] - self.device.save() + try: + answer = api.status(self.device.ip_address,self.device.port_address) + self.device.status = int(answer[0]) + self.device.save() + self.message = answer[2:] + if self.device.status == 0: + return False - return self.device.status + except Exception as e: + self.device.status = 0 + self.message = str(e) + self.device.save() + return False + + return True def stop_device(self): - answer = api.stop(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) - self.message = answer[2:] - self.device.save() + try: + answer = api.stop(self.device.ip_address,self.device.port_address) + self.device.status = int(answer[0]) + self.message = answer[2:] + self.device.save() + if self.device.status == 0 or self.device.status == 1: + return False - return self.device.status + except Exception as e: + self.device.status = 0 + self.message = str(e) + self.device.save() + return False + + return True def read_device(self): - answer = api.read(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) try: + answer = api.read(self.device.ip_address,self.device.port_address) + self.device.status = int(answer[0]) + self.device.save() + self.message = answer[2:] + if self.device.status == 1: + return False data = json.loads(answer[2:]) parms = data['configurations']['jars'] + except: self.device.status = 0 self.device.save() self.message = 'Could not read JARS configuration.' - return '' + return False #self.dict_to_parms(parms) self.message = 'Current JARS configuration was read successfully.' @@ -227,6 +250,10 @@ class JARSConfiguration(Configuration): def write_device(self): + if self.device.status == 3: + self.message = 'Could not configure device. Software Acquisition is running' + return False + data = self.experiment.parms_to_dict() data = json.loads(data) data['configurations']['dds'] ='' @@ -235,19 +262,42 @@ class JARSConfiguration(Configuration): data['configurations']['rc']['delays']='' json_data = json.dumps(data) - answer = api.configure(self.device.ip_address,self.device.port_address,json_data) - #print answer - self.device.status = int(answer[0]) - self.message = answer[2:] + try: + answer = api.configure(self.device.ip_address,self.device.port_address,json_data) + self.device.status = int(answer[0]) + self.message = answer[2:] + self.device.save() + if self.device.status == 1: + return False + if self.device.status == 3: + return False - self.device.save() + except Exception as e: + self.device.status = 0 + self.message = str(e) + self.device.save() + return False - return self.device.status + return True def start_device(self): - self.write_device() + try: + answer = api.start(self.device.ip_address,self.device.port_address) + self.device.status = int(answer[0]) + self.message = answer[2:] + self.device.save() + if self.device.status == 1: + return False + + except Exception as e: + self.device.status = 0 + self.message = str(e) + self.device.save() + return False + + return True def echo(self): diff --git a/apps/jars/views.py b/apps/jars/views.py index 764163a..ac2ed08 100644 --- a/apps/jars/views.py +++ b/apps/jars/views.py @@ -11,124 +11,124 @@ from .forms import JARSConfigurationForm, JARSfilterForm, JARSImportForm # Create your views here. def jars_conf(request, id_conf): - + conf = get_object_or_404(JARSConfiguration, pk=id_conf) - + ip=conf.device.ip_address port=conf.device.port_address - + kwargs = {} kwargs['status'] = conf.device.get_status_display() - - + + kwargs['dev_conf'] = conf kwargs['dev_conf_keys'] = ['name', 'cards_number', 'channels_number', 'channels', - 'rd_directory', 'pd_directory', + 'rd_directory', 'pd_directory', 'data_type', 'acq_profiles', 'profiles_block', 'ftp_interval', 'fftpoints', 'cohe_integr_str', 'incohe_integr', 'cohe_integr', 'filter', 'spectral_number', 'spectral', 'create_directory', 'include_expname', 'save_ch_dc', 'save_data'] - + kwargs['title'] = 'JARS Configuration' kwargs['suptitle'] = 'Details' - + kwargs['button'] = 'Edit Configuration' - + #kwargs['no_play'] = True - - kwargs['only_stop'] = True - + + #kwargs['only_stop'] = True + ###### SIDEBAR ###### kwargs.update(sidebar(conf=conf)) - + return render(request, 'jars_conf.html', kwargs) def jars_conf_edit(request, id_conf): - + conf = get_object_or_404(JARSConfiguration, pk=id_conf) - + if request.method=='GET': form = JARSConfigurationForm(instance=conf) - + if request.method=='POST': form = JARSConfigurationForm(request.POST, instance=conf) - + if form.is_valid(): conf = form.save(commit=False) conf.save() return redirect('url_jars_conf', id_conf=conf.id) - + ##ERRORS - + kwargs = {} - + kwargs['filter_id'] = conf.filter.id kwargs['id_dev'] = conf.id kwargs['form'] = form kwargs['title'] = 'Device Configuration' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Save' - + return render(request, 'jars_conf_edit.html', kwargs) def import_file(request, conf_id): - + conf = get_object_or_404(JARSConfiguration, pk=conf_id) if request.method=='POST': form = JARSImportForm(request.POST, request.FILES) - if form.is_valid(): + if form.is_valid(): try: parms = conf.import_from_file(request.FILES['file_name']) - + if parms: conf.update_from_file(parms) messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name']) return redirect(conf.get_absolute_url_edit()) - - except Exception as e: + + except Exception as e: messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e)) - + else: messages.warning(request, 'Your current configuration will be replaced') - form = JARSImportForm() - + form = JARSImportForm() + kwargs = {} kwargs['form'] = form kwargs['title'] = 'JARS Configuration' kwargs['suptitle'] = 'Import file' kwargs['button'] = 'Upload' kwargs['previous'] = conf.get_absolute_url() - + return render(request, 'jars_import.html', kwargs) def read_conf(request, conf_id): - + conf = get_object_or_404(JARSConfiguration, pk=conf_id) #filter = get_object_or_404(JARSfilter, pk=filter_id) - + if request.method=='GET': - + parms = conf.read_device() conf.status_device() - + if not parms: messages.error(request, conf.message) return redirect(conf.get_absolute_url()) - + form = JARSConfigurationForm(initial=parms, instance=conf) - + if request.method=='POST': form = JARSConfigurationForm(request.POST, instance=conf) - + if form.is_valid(): form.save() return redirect(conf.get_absolute_url()) - + messages.error(request, "Parameters could not be saved") - + kwargs = {} kwargs['id_dev'] = conf.id kwargs['filter_id'] = conf.filter.id @@ -136,17 +136,17 @@ def read_conf(request, conf_id): kwargs['title'] = 'Device Configuration' kwargs['suptitle'] = 'Parameters read from device' kwargs['button'] = 'Save' - + ###### SIDEBAR ###### kwargs.update(sidebar(conf=conf)) - + return render(request, 'jars_conf_edit.html', kwargs) def view_filter(request, conf_id, filter_id): - + conf = get_object_or_404(JARSConfiguration, pk=conf_id) filter = get_object_or_404(JARSfilter, pk=filter_id) - + filter_parms = eval(conf.filter_parms) filter.name = filter_parms['name'] filter.clock = filter_parms['clock'] @@ -157,7 +157,7 @@ def view_filter(request, conf_id, filter_id): filter.filter_2 = filter_parms['filter_2'] filter.filter_5 = filter_parms['filter_5'] filter.speed = filter_parms['speed'] - + kwargs = {} kwargs['conf'] = conf kwargs['filter'] = filter @@ -166,26 +166,26 @@ def view_filter(request, conf_id, filter_id): 'mult', 'fch', 'fch_decimal', 'filter_fir', 'filter_2', 'filter_5', 'speed'] - + kwargs['title'] = 'Filter View' kwargs['suptitle'] = 'Details' kwargs['button'] = 'SI' kwargs['edit_button'] = 'Edit Filter' kwargs['add_button'] = 'New Filter' - + return render(request, 'jars_filter.html', kwargs) def edit_filter(request, conf_id, filter_id): - + conf = get_object_or_404(JARSConfiguration, pk=conf_id) filter_parms = eval(conf.filter_parms) - + if filter_id: filter = get_object_or_404(JARSfilter, pk=filter_id) - + if request.method=='GET': form = JARSfilterForm(initial=filter_parms) - + if request.method=='POST': parms = {} parms['name'] = request.POST['name'] @@ -197,10 +197,10 @@ def edit_filter(request, conf_id, filter_id): parms['filter_2'] = request.POST['filter_2'] parms['filter_5'] = request.POST['filter_5'] parms['speed'] = request.POST['speed'] - + conf.filter_parms = parms conf.save() - + #form = JARSfilterForm(request.POST) #form = JARSfilterForm(request.POST, instance=filter) #if form.is_valid(): @@ -208,7 +208,7 @@ def edit_filter(request, conf_id, filter_id): # messages.success(request, 'JARS Filter successfully updated') # return redirect('url_jars_filter', conf.id, filter.id) return redirect('url_jars_filter', conf.id, filter.id) - + kwargs = {} kwargs['form'] = form kwargs['title'] = conf.name @@ -216,16 +216,16 @@ def edit_filter(request, conf_id, filter_id): kwargs['button'] = 'Save' # kwargs['previous'] = conf.get_absolute_url_edit() kwargs['dev_conf'] = conf - + return render(request, 'jars_filter_edit.html', kwargs) def new_filter(request, conf_id): - + conf = get_object_or_404(JARSConfiguration, pk=conf_id) - + if request.method=='GET': form = JARSfilterForm() - + if request.method=='POST': form = JARSfilterForm(request.POST) if form.is_valid(): @@ -235,7 +235,7 @@ def new_filter(request, conf_id): conf.add_parms_to_filter() messages.success(request, 'New JARS Filter successfully created') return redirect('url_edit_jars_conf', id_conf=conf.id) - + kwargs = {} kwargs['form'] = form kwargs['title'] = 'New Filter' @@ -243,5 +243,5 @@ def new_filter(request, conf_id): kwargs['button'] = 'Create' # kwargs['previous'] = conf.get_absolute_url_edit() kwargs['dev_conf'] = conf - - return render(request, 'jars_new_filter.html', kwargs) \ No newline at end of file + + return render(request, 'jars_new_filter.html', kwargs)