From 4649456d84d97610ae2616c172bc3650d6b906bb 2016-05-05 23:10:41 From: Fiorella Quino Date: 2016-05-05 23:10:41 Subject: [PATCH] Task #99: Modulo web del JARS git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@144 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71 --- diff --git a/apps/jars/forms.py b/apps/jars/forms.py index 67d0984..09c3bf3 100644 --- a/apps/jars/forms.py +++ b/apps/jars/forms.py @@ -1,5 +1,5 @@ from django import forms -from apps.main.models import Device +from apps.main.models import Device, Experiment from .models import JARSConfiguration class JARSConfigurationForm(forms.ModelForm): @@ -9,20 +9,79 @@ class JARSConfigurationForm(forms.ModelForm): 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] + #-------------JARS Configuration needs an Experiment----------------- + def clean(self): + cleaned_data = super(JARSConfigurationForm, self).clean() + experiment = cleaned_data.get('experiment') + if experiment == None: + msg = "Error: Jars Configuration needs an Experiment" + self.add_error('experiment', msg) + + class Meta: + model = JARSConfiguration + exclude = ('type', 'parameters', 'status', 'rc', 'cards_number', + 'channels_number', 'channels', 'rd_directory', 'raw_data_blocks', + 'data_type', 'acq_profiles', 'profiles_block', 'filter', + 'create_directory', 'include_expname', 'acq_link', + 'view_raw_data') + + +class JARSConfigurationForm_Raw(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: - self.fields['experiment'].widget.attrs['disabled'] = 'disabled' + 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] + #-------------JARS Configuration needs an Experiment----------------- + def clean(self): + cleaned_data = super(JARSConfigurationForm, self).clean() + experiment = cleaned_data.get('experiment') + if experiment == None: + msg = "Error: Jars Configuration needs an Experiment" + self.add_error('experiment', msg) + + class Meta: + model = JARSConfiguration + exclude = ('type', 'parameters', 'status') + + +class JARSConfigurationForm_Pro(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] #-------------JARS Configuration needs an Experiment----------------- def clean(self): cleaned_data = super(JARSConfigurationForm, self).clean() - experiment = cleaned_data.get("experiment") + experiment = cleaned_data.get('experiment') if experiment == None: - msg = "Jars Configuration needs an Experiment." + msg = "Error: Jars Configuration needs an Experiment" self.add_error('experiment', msg) - + class Meta: model = JARSConfiguration exclude = ('type', 'parameters', 'status') diff --git a/apps/jars/models.py b/apps/jars/models.py index 6f6bdcd..f8e8b11 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -1,27 +1,90 @@ from django.db import models from apps.main.models import Configuration from django.core.validators import MinValueValidator, MaxValueValidator + +from apps.rc.models import RCConfiguration # Create your models here. -ANSWER = ( - (False, 'NO'), - (True, 'YES'), - ) +EXPERIMENT_TYPE = ( + (0, 'RAW_DATA'), + (1, 'PDATA'), + ) + +DATA_TYPE = ( + (0, 'SHORT'), + (1, 'FLOAT'), + ) + +class JARSfilter(models.Model): + + name = models.CharField(max_length=60, unique=True, default='') + filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1) + filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1) + filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1) + + class Meta: + db_table = 'jars_filters' + #ordering = ['channel'] + class JARSConfiguration(Configuration): ADC_RESOLUTION = 8 PCI_DIO_BUSWIDTH = 32 + HEADER_VERSION = 1103 + BEGIN_ON_START = True + REFRESH_RATE = 1 - cards_number = models.PositiveIntegerField(verbose_name='Number of Cards',validators=[MaxValueValidator(4)], default = 1) - channels_number = models.PositiveIntegerField(verbose_name='Number of Channels',validators=[MinValueValidator(1), MaxValueValidator(8)], default = 1) + rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True) + exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0) + 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=40, default='', blank=True, null=True) raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks',validators=[MaxValueValidator(5000)], default=120) + 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) + filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True, blank=True) create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True) - include_expname = models.BooleanField(verbose_name='Include Experiment Name in Directory', default=True) + include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True) + acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True) + view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True) class Meta: db_table = 'jars_configurations' - \ No newline at end of file + + def parms_to_dict(self): + + parameters = {} + + parameters['name'] = self.name + parameters['rc'] = self.rc.name + parameters['exp_type'] = self.exp_type + 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['acq_profiles'] = self.acq_profiles + parameters['profiles_block'] = self.profiles_block + parameters['filter'] = self.filter.name + 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) + + return parameters + + def dict_to_parms(self, parameters): + return + + def status_device(self): + return + + def read_device(self): + return + + def write_device(self): + return \ No newline at end of file diff --git a/apps/jars/templates/jars_conf_edit.html b/apps/jars/templates/jars_conf_edit.html index 69a9783..6dc1d97 100644 --- a/apps/jars/templates/jars_conf_edit.html +++ b/apps/jars/templates/jars_conf_edit.html @@ -4,5 +4,44 @@ {% load main_tags %} {% block extra-js%} + {% endblock %} \ No newline at end of file diff --git a/apps/jars/views.py b/apps/jars/views.py index c50a18d..539b689 100644 --- a/apps/jars/views.py +++ b/apps/jars/views.py @@ -52,7 +52,7 @@ def jars_conf_edit(request, id_conf): if form.is_valid(): conf = form.save(commit=False) - + conf.save() return redirect('url_jars_conf', id_conf=conf.id) ##ERRORS