From bf0609a1b52f6a85bcc626a0a2e5a2714111f67c 2017-09-04 15:05:51 From: Fiorella Quino Date: 2017-09-04 15:05:51 Subject: [PATCH] Jars files have been update git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@375 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71 --- diff --git a/apps/jars/forms.py b/apps/jars/forms.py index 93f584b..8fc4108 100644 --- a/apps/jars/forms.py +++ b/apps/jars/forms.py @@ -9,19 +9,19 @@ class JARSConfigurationForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(JARSConfigurationForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) - + if instance and instance.pk: devices = Device.objects.filter(device_type__name='jars') - + if instance.experiment: experiments = Experiment.objects.filter(pk=instance.experiment.id) self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments] - + self.fields['device'].widget.choices = [(device.id, device) for device in devices] #self.fields['spectral'].widget = SpectralWidget() self.fields['spectral_number'].widget.attrs['readonly'] = True self.fields['spectral'].widget = SpectralWidget() - + #-------------JARS Configuration needs an Experiment----------------- def clean(self): cleaned_data = super(JARSConfigurationForm, self).clean() @@ -29,23 +29,28 @@ class JARSConfigurationForm(forms.ModelForm): if experiment == None: msg = "Error: Jars Configuration needs an Experiment" self.add_error('experiment', msg) - + class Meta: model = JARSConfiguration exclude = ('type', 'parameters', 'status', 'filter_parms') - - + + class JARSfilterForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(JARSfilterForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) - + self.fields['fch_decimal'].widget.attrs['readonly'] = True - + + if 'initial' in kwargs: + self.fields.pop('name') + #self.fields['name'].widget.attrs['disabled'] = 'disabled' + + class Meta: model = JARSfilter exclude = ('type', 'parameters', 'status') - + class ExtFileField(forms.FileField): """ Same as forms.FileField, but you can specify a file extension whitelist. @@ -75,9 +80,9 @@ class ExtFileField(forms.FileField): ext = ext.lower() if ext not in self.extensions: raise forms.ValidationError('Not allowed file type: %s' % ext) - + class JARSImportForm(forms.Form): - + #file_name = ExtFileField(extensions=['.racp', '.json', '.dat']) - file_name = ExtFileField(extensions=['.json']) \ No newline at end of file + file_name = ExtFileField(extensions=['.json']) diff --git a/apps/jars/models.py b/apps/jars/models.py index f6ca8fc..ed93116 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -1,12 +1,12 @@ +import json +import requests + from django.db import models -from apps.main.models import Configuration from django.core.validators import MinValueValidator, MaxValueValidator from django.core.urlresolvers import reverse -from devices.jars import api -from apps.rc.models import RCConfiguration - -import json +from apps.main.models import Configuration +from apps.main.utils import Params # Create your models here. EXPERIMENT_TYPE = ( @@ -19,6 +19,13 @@ DATA_TYPE = ( (1, 'FLOAT'), ) +DECODE_TYPE = ( + (0, 'None'), + (1, 'TimeDomain'), + (2, 'FreqDomain'), + (3, 'InvFreqDomain'), + ) + class JARSfilter(models.Model): JARS_NBITS = 32 @@ -26,12 +33,12 @@ class JARSfilter(models.Model): name = models.CharField(max_length=60, unique=True, default='') clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60) mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5) - fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200) - fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(0), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505) - filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 6) - filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 10) - filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1) - speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0) + fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200) + fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(-9223372036854775808), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505) + filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(2), MaxValueValidator(100)], default = 10) + filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 1) + filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 6) + #speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0) class Meta: db_table = 'jars_filters' @@ -43,7 +50,7 @@ class JARSfilter(models.Model): parameters = {} - parameters['name'] = self.name + #parameters['name'] = self.name parameters['clock'] = float(self.clock) parameters['mult'] = int(self.mult) parameters['fch'] = float(self.fch) @@ -51,13 +58,13 @@ class JARSfilter(models.Model): parameters['filter_fir'] = int(self.filter_fir) parameters['filter_2'] = int(self.filter_2) parameters['filter_5'] = int(self.filter_5) - parameters['speed'] = int(self.speed) + #parameters['speed'] = int(self.speed) return parameters def dict_to_parms(self, parameters): - self.name = parameters['name'] + #self.name = parameters['name'] self.clock = parameters['clock'] self.mult = parameters['mult'] self.fch = parameters['fch'] @@ -65,7 +72,7 @@ class JARSfilter(models.Model): self.filter_fir = parameters['filter_fir'] self.filter_2 = parameters['filter_2'] self.filter_5 = parameters['filter_5'] - self.speed = parameters['speed'] + #self.speed = parameters['speed'] class JARSConfiguration(Configuration): @@ -81,22 +88,24 @@ class JARSConfiguration(Configuration): cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1) channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5) channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5') - rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=200, default='', blank=True, null=True) - pd_directory = models.CharField(verbose_name='Process Data Directory', max_length=200, default='', blank=True, null=True) - #raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=120) + #rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=200, default='', blank=True, null=True) + #pd_directory = models.CharField(verbose_name='Process Data Directory', max_length=200, default='', blank=True, null=True) data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0) - acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', validators=[MaxValueValidator(5000)], default=400) - profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', validators=[MaxValueValidator(5000)], default=400) + raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=60) + profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', default=400) + acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', default=400) ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60) fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16) cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30) cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30) incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30) + decode_data = models.PositiveIntegerField(verbose_name='Decode Data', choices=DECODE_TYPE, default=0) + post_coh_int = models.BooleanField(verbose_name='Post Coherent Integration', default=False) filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True) spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1) spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],') create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True) - include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True) + include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=False) #acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True) #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True) save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True) @@ -106,99 +115,59 @@ class JARSConfiguration(Configuration): class Meta: db_table = 'jars_configurations' - def parms_to_dict(self): - - parameters = {} - - parameters['device_id'] = self.device.id - parameters['name'] = self.name - parameters['device_type'] = self.device.device_type.name - #parameters['rc'] = self.rc.name - parameters['exp_type'] = self.exp_type - parameters['exptype'] = EXPERIMENT_TYPE[self.exp_type][1] - parameters['cards_number'] = self.cards_number - parameters['channels_number'] = self.channels_number - parameters['channels'] = self.channels - parameters['rd_directory'] = self.rd_directory - #parameters['raw_data_blocks'] = self.raw_data_blocks - parameters['data_type'] = self.data_type - parameters['cohe_integr_str'] = self.cohe_integr_str - parameters['acq_profiles'] = self.acq_profiles - parameters['profiles_block'] = self.profiles_block - parameters['ftp_interval'] = self.ftp_interval - parameters['fftpoints'] = self.fftpoints - parameters['cohe_integr'] = self.cohe_integr - #parameters['incohe_integr'] = self.incohe_integr - parameters['filter'] = self.filter.name - parameters['filter_parms'] = self.filter_parms - #parameters['spectral_number'] = self.spectral_number - #parameters['spectral'] = self.spectral - parameters['create_directory'] = bool(self.create_directory) - parameters['include_expname'] = bool(self.include_expname) - #parameters['acq_link'] = bool(self.acq_link) - #parameters['view_raw_data'] = bool(self.view_raw_data) - parameters['save_ch_dc'] = bool(self.save_ch_dc) - parameters['save_data'] = bool(self.save_data) - - if parameters['exptype'] == 'PDATA': - parameters['incohe_integr'] = self.incohe_integr - parameters['spectral_number'] = self.spectral_number - parameters['spectral'] = self.spectral - parameters['pd_directory'] = self.pd_directory - - return parameters - def add_parms_to_filter(self): self.filter_parms = self.filter.parms_to_dict() self.save() - def dict_to_parms(self, parameters): + def dict_to_parms(self, params, id=None): + + if id is not None: + data = Params(params).get_conf(id_conf=id) + else: + data = Params(params).get_conf(dtype='jars') + + self.name = data['name'] + self.exp_type = data['exp_type'] + #if data['exp_type'] in (1, '1') : + self.incohe_integr = data['incohe_integr'] + self.spectral_number = data['spectral_number'] + self.spectral = data['spectral'] + #self.pd_directory = data['pd_directory'] + self.cards_number = data['cards_number'] + self.channels_number = data['channels_number'] + self.channels = data['channels'] + #self.rd_directory = data['rd_directory'] + #self.raw_data_blocks = data['raw_data_blocks'] + self.data_type = data['data_type'] + self.cohe_integr_str = data['cohe_integr_str'] + self.acq_profiles = data['acq_profiles'] + self.profiles_block = data['profiles_block'] + self.ftp_interval = data['ftp_interval'] + self.fftpoints = data['fftpoints'] + self.cohe_integr = data['cohe_integr'] + self.filter_parms = json.dumps(data['filter_parms']) + self.create_directory = data['create_directory'] + self.include_expname = data['include_expname'] + #self.acq_link = data['acq_link'] + #self.view_raw_data = data['view_raw_data'] + self.save_ch_dc = data['save_ch_dc'] + self.save_data = data['save_data'] + self.save() - self.name = parameters['name'] - self.device.id = int(parameters['device_id']) - - self.exp_type = int(parameters['exp_type']) - if parameters['exptype'] == 'PDATA': - self.incohe_integr = parameters['incohe_integr'] - self.spectral_number = parameters['spectral_number'] - self.spectral = parameters['spectral'] - self.pd_directory = parameters['pd_directory'] - - self.cards_number = int(parameters['cards_number']) - self.channels_number = int(parameters['channels_number']) - self.channels = parameters['channels'] - self.rd_directory = parameters['rd_directory'] - #self.raw_data_blocks = parameters['raw_data_blocks'] - self.data_type = parameters['data_type'] - self.cohe_integr_str = parameters['cohe_integr_str'] - self.acq_profiles = parameters['acq_profiles'] - self.profiles_block = parameters['profiles_block'] - self.ftp_interval = parameters['ftp_interval'] - self.fftpoints = parameters['fftpoints'] - self.cohe_integr = parameters['cohe_integr'] - - filter_name = parameters['filter'] - self.filter = JARSfilter.objects.get(name=filter_name) - self.add_parms_to_filter() - self.filter_parms = parameters['filter_parms'] - - self.create_directory = bool(parameters['create_directory']) - self.include_expname = bool(parameters['include_expname']) - #self.acq_link = bool(parameters['acq_link']) - #self.view_raw_data = bool(parameters['view_raw_data']) - self.save_ch_dc = bool(parameters['save_ch_dc']) - self.save_data = bool(parameters['save_data']) + def request(self, cmd, method='get', **kwargs): + + req = getattr(requests, method)(self.device.url(cmd), **kwargs) + payload = req.json() + return payload def status_device(self): try: - answer = api.status(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) + payload = self.request('status', + params={'name': self.experiment.name}) + self.device.status = payload['status'] self.device.save() - self.message = answer[2:] - if self.device.status == 0: - return False - + self.message = payload['message'] except Exception as e: self.device.status = 0 self.message = str(e) @@ -210,13 +179,10 @@ class JARSConfiguration(Configuration): def stop_device(self): try: - answer = api.stop(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) - self.message = answer[2:] + payload = self.request('stop', 'post') + self.device.status = payload['status'] self.device.save() - if self.device.status == 0 or self.device.status == 1: - return False - + self.message = payload['message'] except Exception as e: self.device.status = 0 self.message = str(e) @@ -228,26 +194,15 @@ class JARSConfiguration(Configuration): def read_device(self): 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'] - + payload = self.request('read', params={'name': self.experiment.name}) + self.message = 'Configuration loaded' except: self.device.status = 0 self.device.save() self.message = 'Could not read JARS configuration.' return False - #self.dict_to_parms(parms) - self.message = 'Current JARS configuration was read successfully.' - self.device.save() - return parms - + return payload def write_device(self): @@ -256,22 +211,36 @@ class JARSConfiguration(Configuration): return False data = self.experiment.parms_to_dict() - data = json.loads(data) - data['configurations']['dds'] ='' - data['configurations']['cgs'] ='' - data['configurations']['rc']['pulses']='' - data['configurations']['rc']['delays']='' - json_data = json.dumps(data) + for key in data['configurations']['allIds']: + if data['configurations']['byId'][key]['device_type'] in ('dds', 'cgs'): + data['configurations']['allIds'].remove(key) + data['configurations']['byId'].pop(key) + elif data['configurations']['byId'][key]['device_type'] == 'jars': + data['configurations']['byId'][key] = self.parms_to_dict()['configurations']['byId'][str(self.pk)] + elif data['configurations']['byId'][key]['device_type'] == 'rc': + data['configurations']['byId'][key]['pulses'] = '' + data['configurations']['byId'][key]['delays'] = '' + rc_ids = [pk for pk in data['configurations']['allIds'] if data['configurations']['byId'][pk]['device_type']=='rc'] + mix_ids = [pk for pk in rc_ids if data['configurations']['byId'][pk]['mix']] + if mix_ids: + params = data['configurations']['byId'][mix_ids[0]]['parameters'] + rc = data['configurations']['byId'][params.split('-')[0].split('|')[0]] + rc['mix'] = True + data['configurations']['byId'][rc['id']] = rc + elif len(rc_ids)==0: + self.message = 'Missing RC configuration' + return False + + json_data = json.dumps(data) + print json_data try: - answer = api.configure(self.device.ip_address,self.device.port_address,json_data) - self.device.status = int(answer[0]) - self.message = answer[2:] + payload = self.request('write', 'post', json=json_data) + self.device.status = payload['status'] + self.message = payload['message'] self.device.save() if self.device.status == 1: return False - if self.device.status == 3: - return False except Exception as e: self.device.status = 0 @@ -281,13 +250,13 @@ class JARSConfiguration(Configuration): return True - def start_device(self): try: - answer = api.start(self.device.ip_address,self.device.port_address) - self.device.status = int(answer[0]) - self.message = answer[2:] + payload = self.request('start', 'post', + json={'name': self.experiment.name}) + self.device.status = payload['status'] + self.message = payload['message'] self.device.save() if self.device.status == 1: return False @@ -300,21 +269,10 @@ class JARSConfiguration(Configuration): return True + def update_from_file(self, filename): - def echo(self): - - answer = api.echo(self.device.ip_address,self.device.port_address,'(=') - #print answer - self.device.status = int(answer[0]) - self.message = answer[2:] - - self.device.save() - - return #self.device.status - - def update_from_file(self, parameters): - - self.dict_to_parms(parameters) + f = JARSFile(filename) + self.dict_to_parms(f.data) self.save() def get_absolute_url_import(self): diff --git a/apps/jars/static/js/filters.js b/apps/jars/static/js/filters.js index 5c1ca8d..dd2c01a 100644 --- a/apps/jars/static/js/filters.js +++ b/apps/jars/static/js/filters.js @@ -14,15 +14,17 @@ function updateParameters(){ var fclock = $("#id_clock").val(); // clock frequency (MHz) var fch = $("#id_fch").val(); // RF frequency (MHz) var m_dds = $("#id_mult").val(); // DDS multiplier - - if (fch < fclock/2){ // Si se cumple nyquist + + if (Math.abs(fch) < fclock/2){ // Si se cumple nyquist var nco = Math.pow(2,32)*((fch/fclock)%1); - var nco_i = Math.round(nco/m_dds)*m_dds; + //var nco_i = Math.round(nco/m_dds)*m_dds; + var nco_i = Math.round(nco) } - else { + else { nco = Math.pow(2,32)*(fclock-fch)/(fclock); - nco_i = Math.round(nco/m_dds)*m_dds; + //nco_i = Math.round(nco/m_dds)*m_dds; + var nco_i = Math.round(nco) } fch_decimal = $("#id_fch_decimal") $(fch_decimal).val(nco_i) -} \ No newline at end of file +} diff --git a/apps/jars/static/js/jars.js b/apps/jars/static/js/jars.js index 9bdb633..4a07566 100644 --- a/apps/jars/static/js/jars.js +++ b/apps/jars/static/js/jars.js @@ -1,11 +1,16 @@ $(document).ready(function() { - RawDataOrPData() + RawDataOrPData() + DecodeDataOrNone() }); $("#id_exp_type").change(function() { RawDataOrPData() }); +$("#id_decode_data").change(function() { + DecodeDataOrNone() +}); + function RawDataOrPData(){ var type = $("#id_exp_type").val(); incohe_integr = $("#id_incohe_integr") @@ -17,9 +22,9 @@ function RawDataOrPData(){ sel_spec_button = $("#self_spectral_button") cro_spec_button = $("#cross_spectral_button") all_spec_button = $("#all_spectral_button") - + if (type == 0) { - $(incohe_integr).attr('readonly', true); + $(incohe_integr).attr('readonly', true); $(spectral).attr('readonly', true); $(fftpoints).attr('readonly', true); $(save_ch_dc).attr('disabled', true); @@ -48,7 +53,7 @@ function RawDataOrPData(){ $("#id_cards_number").on('change', function() { var cards_number = $("#id_cards_number").val(); channels_number = $("#id_channels_number") - $(channels_number).val(cards_number*2) + $(channels_number).val(cards_number*2) updateChannelsNumber(); }); @@ -62,6 +67,13 @@ $("#id_spectral").on('change', function() { updateSpectralNumber(); }); +$("#id_cohe_integr").on('change', function() { + updateAcquiredProfiles(); +}); + +$("#id_profiles_block").on('change', function() { + updateAcquiredProfiles(); +}); function updateSpectralNumber(){ var spectral_comb = $("#id_spectral").val(); @@ -77,18 +89,39 @@ function updateSpectralNumber(){ function updateChannelsNumber() { - + var channels_number = $("#id_channels_number").val(); channels = $("#id_channels") sequence = "" - + for (i = 1; i <= channels_number; i++) { if (i==1){ sequence = i.toString() } else{ sequence = sequence + "," + i.toString() - } + } } $(channels).val(sequence) -} \ No newline at end of file +} + + +function DecodeDataOrNone() { + var decode_data = $("#id_decode_data").val(); + post_coh_int = $("#id_post_coh_int") + if (decode_data != 0) { + $(post_coh_int).attr('readonly', false); + $(post_coh_int).attr('disabled', false); + } + else { + $(post_coh_int).attr('readonly', true); + $(post_coh_int).attr('disabled', true); + } +} + +function updateAcquiredProfiles() { + var profiles_block = $("#id_profiles_block").val(); + var cohe_integr = $("#id_cohe_integr").val(); + var acq_prof = profiles_block * cohe_integr; + $("#id_acq_profiles").val(acq_prof) +} diff --git a/apps/jars/views.py b/apps/jars/views.py index ac2ed08..3853264 100644 --- a/apps/jars/views.py +++ b/apps/jars/views.py @@ -24,11 +24,11 @@ def jars_conf(request, id_conf): 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', + 'acq_profiles', 'profiles_block', 'raw_data_blocks', 'ftp_interval', 'fftpoints', + 'cohe_integr_str', 'decode_data', + 'incohe_integr', 'cohe_integr', 'spectral_number', 'spectral', 'create_directory', 'include_expname', 'save_ch_dc', 'save_data'] @@ -65,7 +65,7 @@ def jars_conf_edit(request, id_conf): kwargs = {} - kwargs['filter_id'] = conf.filter.id + kwargs['filter_id'] = 1 kwargs['id_dev'] = conf.id kwargs['form'] = form kwargs['title'] = 'Device Configuration' @@ -80,16 +80,15 @@ def import_file(request, conf_id): if request.method=='POST': form = JARSImportForm(request.POST, request.FILES) 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()) + #try: + if True: + data = conf.import_from_file(request.FILES['file_name']) + conf.dict_to_parms(data) + messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name']) + return redirect(conf.get_absolute_url_edit()) - except Exception as e: - messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], 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') @@ -148,7 +147,9 @@ def view_filter(request, conf_id, filter_id): filter = get_object_or_404(JARSfilter, pk=filter_id) filter_parms = eval(conf.filter_parms) - filter.name = filter_parms['name'] + if filter_parms.__class__.__name__=='str': + filter_parms = eval(filter_parms) + #filter.name = filter_parms['name'] filter.clock = filter_parms['clock'] filter.mult = filter_parms['mult'] filter.fch = filter_parms['fch'] @@ -156,16 +157,15 @@ def view_filter(request, conf_id, filter_id): filter.filter_fir = filter_parms['filter_fir'] 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 kwargs['dev_conf'] = filter - kwargs['dev_conf_keys'] = ['name', 'clock', - 'mult', 'fch', 'fch_decimal', - 'filter_fir', 'filter_2', - 'filter_5', 'speed'] + kwargs['dev_conf_keys'] = ['clock', 'mult', #'name', + 'fch', 'fch_decimal', + 'filter_2', 'filter_5', + 'filter_fir'] kwargs['title'] = 'Filter View' kwargs['suptitle'] = 'Details' @@ -188,7 +188,7 @@ def edit_filter(request, conf_id, filter_id): if request.method=='POST': parms = {} - parms['name'] = request.POST['name'] + #parms['name'] = request.POST['name'] parms['clock'] = request.POST['clock'] parms['mult'] = request.POST['mult'] parms['fch'] = request.POST['fch'] @@ -196,7 +196,6 @@ def edit_filter(request, conf_id, filter_id): parms['filter_fir'] = request.POST['filter_fir'] 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()