##// END OF EJS Templates
Filter template name combo box and change_filter views...
Fiorella Quino -
r269:739a60f98369
parent child
Show More
@@ -0,0 +1,13
1 {% extends "dev_conf_edit.html" %}
2
3 {% block extra-js%}
4
5 <script type="text/javascript">
6
7 $("#id_name").change(function() {
8 var url = "{% url 'url_change_jars_filter' conf_id %}";
9 document.location = url + $(this).val()+"/";
10 });
11
12 </script>
13 {% endblock %}
@@ -1,2 +1,3
1 [{"fields": {"name": "49_920MHz_clock60MHz_F0MHz_12_25_2", "clock": "60", "mult": 5, "fch": 49.92, "fch_decimal": 721554505, "filter_fir": 6, "filter_2": 10, "filter_5": 1, "speed": 0}, "model": "jars.jarsfilter", "pk": 1}
1 [{"fields": {"name": "49_92MHz_clock60MHz_F1KHz_12_25_2", "clock": 60, "mult": 5, "fch": 49.92, "fch_decimal": 721554506, "filter_fir": 2, "filter_2": 12, "filter_5": 25}, "model": "jars.jarsfilter", "pk": 1}
2 ]
2 {"fields": {"name": "49_920MHz_clock60MHz_F1MHz_10_1_6", "clock": 60, "mult": 5, "fch": 49.92, "fch_decimal": 721554506, "filter_fir": 6, "filter_2": 10, "filter_5": 1}, "model": "jars.jarsfilter", "pk": 2}
3 ]
@@ -1,88 +1,116
1 import os
1 import os
2
2
3 from django import forms
3 from django import forms
4 from apps.main.models import Device, Experiment
4 from apps.main.models import Device, Experiment
5 from .models import JARSConfiguration, JARSfilter
5 from .models import JARSConfiguration, JARSfilter
6 from .widgets import SpectralWidget
6 from .widgets import SpectralWidget
7 from apps.main.forms import add_empty_choice
8
9 def create_choices_from_model(model, filter_id=None):
10
11 #instance = globals()[model]
12 choices = model.objects.all().values_list('pk', 'name')
13 choices = add_empty_choice(choices)
14 return choices
7
15
8 class JARSConfigurationForm(forms.ModelForm):
16 class JARSConfigurationForm(forms.ModelForm):
9 def __init__(self, *args, **kwargs):
17 def __init__(self, *args, **kwargs):
10 super(JARSConfigurationForm, self).__init__(*args, **kwargs)
18 super(JARSConfigurationForm, self).__init__(*args, **kwargs)
11 instance = getattr(self, 'instance', None)
19 instance = getattr(self, 'instance', None)
12
20
13 if instance and instance.pk:
21 if instance and instance.pk:
14 devices = Device.objects.filter(device_type__name='jars')
22 devices = Device.objects.filter(device_type__name='jars')
15
23
16 if instance.experiment:
24 if instance.experiment:
17 experiments = Experiment.objects.filter(pk=instance.experiment.id)
25 experiments = Experiment.objects.filter(pk=instance.experiment.id)
18 self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments]
26 self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments]
19
27
20 self.fields['device'].widget.choices = [(device.id, device) for device in devices]
28 self.fields['device'].widget.choices = [(device.id, device) for device in devices]
21 #self.fields['spectral'].widget = SpectralWidget()
29 #self.fields['spectral'].widget = SpectralWidget()
22 self.fields['spectral_number'].widget.attrs['readonly'] = True
30 self.fields['spectral_number'].widget.attrs['readonly'] = True
23 self.fields['spectral'].widget = SpectralWidget()
31 self.fields['spectral'].widget = SpectralWidget()
24
32
25 #-------------JARS Configuration needs an Experiment-----------------
33 #-------------JARS Configuration needs an Experiment-----------------
26 def clean(self):
34 def clean(self):
27 cleaned_data = super(JARSConfigurationForm, self).clean()
35 cleaned_data = super(JARSConfigurationForm, self).clean()
28 experiment = cleaned_data.get('experiment')
36 experiment = cleaned_data.get('experiment')
29 if experiment == None:
37 if experiment == None:
30 msg = "Error: Jars Configuration needs an Experiment"
38 msg = "Error: Jars Configuration needs an Experiment"
31 self.add_error('experiment', msg)
39 self.add_error('experiment', msg)
32
40
33 class Meta:
41 class Meta:
34 model = JARSConfiguration
42 model = JARSConfiguration
35 exclude = ('type', 'parameters', 'status', 'filter_parms')
43 exclude = ('type', 'parameters', 'status', 'filter_parms')
36
44
37
45
38 class JARSfilterForm(forms.ModelForm):
46 class JARSfilterForm(forms.ModelForm):
39 def __init__(self, *args, **kwargs):
47 def __init__(self, *args, **kwargs):
40 super(JARSfilterForm, self).__init__(*args, **kwargs)
48 super(JARSfilterForm, self).__init__(*args, **kwargs)
41 instance = getattr(self, 'instance', None)
49 instance = getattr(self, 'instance', None)
42
50
43 self.fields['fch_decimal'].widget.attrs['readonly'] = True
51 self.fields['fch_decimal'].widget.attrs['readonly'] = True
44
52
45 if 'initial' in kwargs:
53 if 'initial' in kwargs:
46 self.fields.pop('name')
54 if 'filter_id' not in kwargs['initial']:
47 #self.fields['name'].widget.attrs['disabled'] = 'disabled'
55 self.fields.pop('name')
48
56 else:
57 self.fields['name'] = forms.ChoiceField(choices=create_choices_from_model(JARSfilter))
58 filter_id = kwargs['initial']['filter_id']
59
60 if filter_id == 0:
61 for value in self.fields:
62 if value != 'name':
63 self.fields.pop(value)
64 self.fields['name'].label = "Filter Template Name"
65 else:
66 self.fields['name'] = forms.ChoiceField(choices=create_choices_from_model(JARSfilter, kwargs['initial']['filter_id']))
67 jars_filter = JARSfilter.objects.get(pk=kwargs['initial']['filter_id'])
68 labels = [f.name for f in jars_filter._meta.get_fields()]
69
70 for label in ['id', 'jarsconfiguration']:
71 labels.remove(label)
72 for label in labels:
73 self.fields['name'].initial = kwargs['initial']['filter_id']
74 self.fields[label].initial = getattr(jars_filter,label)
75 self.fields['name'].label = "Filter Template Name"
49
76
50 class Meta:
77 class Meta:
51 model = JARSfilter
78 model = JARSfilter
52 exclude = ('type', 'parameters', 'status')
79 exclude = ('type', 'parameters', 'status')
53
80
81
54 class ExtFileField(forms.FileField):
82 class ExtFileField(forms.FileField):
55 """
83 """
56 Same as forms.FileField, but you can specify a file extension whitelist.
84 Same as forms.FileField, but you can specify a file extension whitelist.
57
85
58 >>> from django.core.files.uploadedfile import SimpleUploadedFile
86 >>> from django.core.files.uploadedfile import SimpleUploadedFile
59 >>>
87 >>>
60 >>> t = ExtFileField(ext_whitelist=(".pdf", ".txt"))
88 >>> t = ExtFileField(ext_whitelist=(".pdf", ".txt"))
61 >>>
89 >>>
62 >>> t.clean(SimpleUploadedFile('filename.pdf', 'Some File Content'))
90 >>> t.clean(SimpleUploadedFile('filename.pdf', 'Some File Content'))
63 >>> t.clean(SimpleUploadedFile('filename.txt', 'Some File Content'))
91 >>> t.clean(SimpleUploadedFile('filename.txt', 'Some File Content'))
64 >>>
92 >>>
65 >>> t.clean(SimpleUploadedFile('filename.exe', 'Some File Content'))
93 >>> t.clean(SimpleUploadedFile('filename.exe', 'Some File Content'))
66 Traceback (most recent call last):
94 Traceback (most recent call last):
67 ...
95 ...
68 ValidationError: [u'Not allowed filetype!']
96 ValidationError: [u'Not allowed filetype!']
69 """
97 """
70 def __init__(self, *args, **kwargs):
98 def __init__(self, *args, **kwargs):
71 extensions = kwargs.pop("extensions")
99 extensions = kwargs.pop("extensions")
72 self.extensions = [i.lower() for i in extensions]
100 self.extensions = [i.lower() for i in extensions]
73
101
74 super(ExtFileField, self).__init__(*args, **kwargs)
102 super(ExtFileField, self).__init__(*args, **kwargs)
75
103
76 def clean(self, *args, **kwargs):
104 def clean(self, *args, **kwargs):
77 data = super(ExtFileField, self).clean(*args, **kwargs)
105 data = super(ExtFileField, self).clean(*args, **kwargs)
78 filename = data.name
106 filename = data.name
79 ext = os.path.splitext(filename)[1]
107 ext = os.path.splitext(filename)[1]
80 ext = ext.lower()
108 ext = ext.lower()
81 if ext not in self.extensions:
109 if ext not in self.extensions:
82 raise forms.ValidationError('Not allowed file type: %s' % ext)
110 raise forms.ValidationError('Not allowed file type: %s' % ext)
83
111
84
112
85 class JARSImportForm(forms.Form):
113 class JARSImportForm(forms.Form):
86
114
87 #file_name = ExtFileField(extensions=['.racp', '.json', '.dat'])
115 #file_name = ExtFileField(extensions=['.racp', '.json', '.dat'])
88 file_name = ExtFileField(extensions=['.json'])
116 file_name = ExtFileField(extensions=['.json'])
@@ -1,282 +1,288
1 import json
1 import json
2 import requests
2 import requests
3
3
4 from django.db import models
4 from django.db import models
5 from django.core.validators import MinValueValidator, MaxValueValidator
5 from django.core.validators import MinValueValidator, MaxValueValidator
6 from django.core.urlresolvers import reverse
6 from django.core.urlresolvers import reverse
7
7
8 from apps.main.models import Configuration
8 from apps.main.models import Configuration
9 from apps.main.utils import Params
9 from apps.main.utils import Params
10 # Create your models here.
10 # Create your models here.
11
11
12 EXPERIMENT_TYPE = (
12 EXPERIMENT_TYPE = (
13 (0, 'RAW_DATA'),
13 (0, 'RAW_DATA'),
14 (1, 'PDATA'),
14 (1, 'PDATA'),
15 )
15 )
16
16
17 DATA_TYPE = (
17 DATA_TYPE = (
18 (0, 'SHORT'),
18 (0, 'SHORT'),
19 (1, 'FLOAT'),
19 (1, 'FLOAT'),
20 )
20 )
21
21
22 DECODE_TYPE = (
22 DECODE_TYPE = (
23 (0, 'None'),
23 (0, 'None'),
24 (1, 'TimeDomain'),
24 (1, 'TimeDomain'),
25 (2, 'FreqDomain'),
25 (2, 'FreqDomain'),
26 (3, 'InvFreqDomain'),
26 (3, 'InvFreqDomain'),
27 )
27 )
28
28
29 class JARSfilter(models.Model):
29 class JARSfilter(models.Model):
30
30
31 JARS_NBITS = 32
31 JARS_NBITS = 32
32
32
33 name = models.CharField(max_length=60, unique=True, default='')
33 name = models.CharField(max_length=60, unique=True, default='')
34 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
34 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
35 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
35 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
36 fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200)
36 fch = models.FloatField(verbose_name='Frequency (MHz)', validators=[MaxValueValidator(150)], null=True, default=49.9200)
37 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(-9223372036854775808), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
37 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(-9223372036854775808), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
38 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(2), MaxValueValidator(100)], default = 10)
38 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(2), MaxValueValidator(100)], default = 10)
39 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 1)
39 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 1)
40 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 6)
40 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 6)
41 #speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0)
42
41
43 class Meta:
42 class Meta:
44 db_table = 'jars_filters'
43 db_table = 'jars_filters'
45
44
46 def __unicode__(self):
45 def __unicode__(self):
47 return u'%s' % (self.name)
46 return u'%s' % (self.name)
48
47
49 def parms_to_dict(self):
48 def parms_to_dict(self):
50
49
51 parameters = {}
50 parameters = {}
52
51
53 #parameters['name'] = self.name
52 #parameters['name'] = self.name
54 parameters['clock'] = float(self.clock)
53 parameters['clock'] = float(self.clock)
55 parameters['mult'] = int(self.mult)
54 parameters['mult'] = int(self.mult)
56 parameters['fch'] = float(self.fch)
55 parameters['fch'] = float(self.fch)
57 parameters['fch_decimal'] = int(self.fch)
56 parameters['fch_decimal'] = int(self.fch)
58 parameters['filter_fir'] = int(self.filter_fir)
57 parameters['filter_fir'] = int(self.filter_fir)
59 parameters['filter_2'] = int(self.filter_2)
58 parameters['filter_2'] = int(self.filter_2)
60 parameters['filter_5'] = int(self.filter_5)
59 parameters['filter_5'] = int(self.filter_5)
61 #parameters['speed'] = int(self.speed)
62
60
63 return parameters
61 return parameters
64
62
65 def dict_to_parms(self, parameters):
63 def dict_to_parms(self, parameters):
66
64
67 #self.name = parameters['name']
65 #self.name = parameters['name']
68 self.clock = parameters['clock']
66 self.clock = parameters['clock']
69 self.mult = parameters['mult']
67 self.mult = parameters['mult']
70 self.fch = parameters['fch']
68 self.fch = parameters['fch']
71 self.fch_decimal = parameters['fch_decimal']
69 self.fch_decimal = parameters['fch_decimal']
72 self.filter_fir = parameters['filter_fir']
70 self.filter_fir = parameters['filter_fir']
73 self.filter_2 = parameters['filter_2']
71 self.filter_2 = parameters['filter_2']
74 self.filter_5 = parameters['filter_5']
72 self.filter_5 = parameters['filter_5']
75 #self.speed = parameters['speed']
76
73
77
74
78 class JARSConfiguration(Configuration):
75 class JARSConfiguration(Configuration):
79
76
80 ADC_RESOLUTION = 8
77 ADC_RESOLUTION = 8
81 PCI_DIO_BUSWIDTH = 32
78 PCI_DIO_BUSWIDTH = 32
82 HEADER_VERSION = 1103
79 HEADER_VERSION = 1103
83 BEGIN_ON_START = True
80 BEGIN_ON_START = True
84 REFRESH_RATE = 1
81 REFRESH_RATE = 1
85
82
86 #rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True)
87 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
83 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
88 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
84 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
89 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
85 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
90 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
86 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
91 #rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=200, default='', blank=True, null=True)
92 #pd_directory = models.CharField(verbose_name='Process Data Directory', max_length=200, default='', blank=True, null=True)
93 data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0)
87 data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0)
94 raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=60)
88 raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=60)
95 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', default=400)
89 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', default=400)
96 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', default=400)
90 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', default=400)
97 ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60)
91 ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60)
98 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
92 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
99 cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30)
93 cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30)
100 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
94 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
101 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
95 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
102 decode_data = models.PositiveIntegerField(verbose_name='Decode Data', choices=DECODE_TYPE, default=0)
96 decode_data = models.PositiveIntegerField(verbose_name='Decode Data', choices=DECODE_TYPE, default=0)
103 post_coh_int = models.BooleanField(verbose_name='Post Coherent Integration', default=False)
97 post_coh_int = models.BooleanField(verbose_name='Post Coherent Integration', default=False)
104 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
98 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
105 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
99 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
106 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
100 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
107 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
101 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
108 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=False)
102 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=False)
109 #acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True)
110 #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
103 #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
111 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
104 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
112 save_data = models.BooleanField(verbose_name='Save Data', default=True)
105 save_data = models.BooleanField(verbose_name='Save Data', default=True)
113 filter_parms = models.CharField(max_length=10000, default='{}')
106 filter_parms = models.CharField(max_length=10000, default='{"name": "49_92MHz_clock60MHz_F1KHz_12_25_2", "clock": 60, "mult": 5, "fch": 49.92, "fch_decimal": 721554506, "filter_fir": 2, "filter_2": 12, "filter_5": 25}, "model": "jars.jarsfilter", "pk": 1}')
114
107
115 class Meta:
108 class Meta:
116 db_table = 'jars_configurations'
109 db_table = 'jars_configurations'
117
110
118 def add_parms_to_filter(self):
111 def add_parms_to_filter(self):
119 self.filter_parms = self.filter.parms_to_dict()
112 self.filter_parms = self.filter.parms_to_dict()
120 self.save()
113 self.save()
121
114
115 def filter_resolution(self):
116 filter_parms = eval(self.filter_parms)
117 if filter_parms.__class__.__name__=='str':
118 filter_parms = eval(filter_parms)
119
120 filter_clock = filter_parms['clock']
121 filter_2 = filter_parms['filter_2']
122 filter_5 = filter_parms['filter_5']
123 filter_fir = filter_parms['filter_fir']
124
125 resolution = round((filter_clock/(filter_2*filter_5*filter_fir)),2)
126 return resolution
127
122 def dict_to_parms(self, params, id=None):
128 def dict_to_parms(self, params, id=None):
123
129
124 if id is not None:
130 if id is not None:
125 data = Params(params).get_conf(id_conf=id)
131 data = Params(params).get_conf(id_conf=id)
126 else:
132 else:
127 data = Params(params).get_conf(dtype='jars')
133 data = Params(params).get_conf(dtype='jars')
128
134
129 self.name = data['name']
135 self.name = data['name']
130 self.exp_type = data['exp_type']
136 self.exp_type = data['exp_type']
131 #if data['exp_type'] in (1, '1') :
137 #if data['exp_type'] in (1, '1') :
132 self.incohe_integr = data['incohe_integr']
138 self.incohe_integr = data['incohe_integr']
133 self.spectral_number = data['spectral_number']
139 self.spectral_number = data['spectral_number']
134 self.spectral = data['spectral']
140 self.spectral = data['spectral']
135 #self.pd_directory = data['pd_directory']
141 #self.pd_directory = data['pd_directory']
136 self.cards_number = data['cards_number']
142 self.cards_number = data['cards_number']
137 self.channels_number = data['channels_number']
143 self.channels_number = data['channels_number']
138 self.channels = data['channels']
144 self.channels = data['channels']
139 #self.rd_directory = data['rd_directory']
145 #self.rd_directory = data['rd_directory']
140 #self.raw_data_blocks = data['raw_data_blocks']
146 #self.raw_data_blocks = data['raw_data_blocks']
141 self.data_type = data['data_type']
147 self.data_type = data['data_type']
142 self.cohe_integr_str = data['cohe_integr_str']
148 self.cohe_integr_str = data['cohe_integr_str']
143 self.acq_profiles = data['acq_profiles']
149 self.acq_profiles = data['acq_profiles']
144 self.profiles_block = data['profiles_block']
150 self.profiles_block = data['profiles_block']
145 self.ftp_interval = data['ftp_interval']
151 self.ftp_interval = data['ftp_interval']
146 self.fftpoints = data['fftpoints']
152 self.fftpoints = data['fftpoints']
147 self.cohe_integr = data['cohe_integr']
153 self.cohe_integr = data['cohe_integr']
148 self.filter_parms = json.dumps(data['filter_parms'])
154 self.filter_parms = json.dumps(data['filter_parms'])
149 self.create_directory = data['create_directory']
155 self.create_directory = data['create_directory']
150 self.include_expname = data['include_expname']
156 self.include_expname = data['include_expname']
151 #self.acq_link = data['acq_link']
157 #self.acq_link = data['acq_link']
152 #self.view_raw_data = data['view_raw_data']
158 #self.view_raw_data = data['view_raw_data']
153 self.save_ch_dc = data['save_ch_dc']
159 self.save_ch_dc = data['save_ch_dc']
154 self.save_data = data['save_data']
160 self.save_data = data['save_data']
155 self.save()
161 self.save()
156
162
157 def request(self, cmd, method='get', **kwargs):
163 def request(self, cmd, method='get', **kwargs):
158
164
159 req = getattr(requests, method)(self.device.url(cmd), **kwargs)
165 req = getattr(requests, method)(self.device.url(cmd), **kwargs)
160 payload = req.json()
166 payload = req.json()
161 return payload
167 return payload
162
168
163 def status_device(self):
169 def status_device(self):
164
170
165 try:
171 try:
166 payload = self.request('status',
172 payload = self.request('status',
167 params={'name': self.experiment.name})
173 params={'name': self.experiment.name})
168 self.device.status = payload['status']
174 self.device.status = payload['status']
169 self.device.save()
175 self.device.save()
170 self.message = payload['message']
176 self.message = payload['message']
171 except Exception as e:
177 except Exception as e:
172 self.device.status = 0
178 self.device.status = 0
173 self.message = str(e)
179 self.message = str(e)
174 self.device.save()
180 self.device.save()
175 return False
181 return False
176
182
177 return True
183 return True
178
184
179 def stop_device(self):
185 def stop_device(self):
180
186
181 try:
187 try:
182 payload = self.request('stop', 'post')
188 payload = self.request('stop', 'post')
183 self.device.status = payload['status']
189 self.device.status = payload['status']
184 self.device.save()
190 self.device.save()
185 self.message = payload['message']
191 self.message = payload['message']
186 except Exception as e:
192 except Exception as e:
187 self.device.status = 0
193 self.device.status = 0
188 self.message = str(e)
194 self.message = str(e)
189 self.device.save()
195 self.device.save()
190 return False
196 return False
191
197
192 return True
198 return True
193
199
194 def read_device(self):
200 def read_device(self):
195
201
196 try:
202 try:
197 payload = self.request('read', params={'name': self.experiment.name})
203 payload = self.request('read', params={'name': self.experiment.name})
198 self.message = 'Configuration loaded'
204 self.message = 'Configuration loaded'
199 except:
205 except:
200 self.device.status = 0
206 self.device.status = 0
201 self.device.save()
207 self.device.save()
202 self.message = 'Could not read JARS configuration.'
208 self.message = 'Could not read JARS configuration.'
203 return False
209 return False
204
210
205 return payload
211 return payload
206
212
207 def write_device(self):
213 def write_device(self):
208
214
209 if self.device.status == 3:
215 if self.device.status == 3:
210 self.message = 'Could not configure device. Software Acquisition is running'
216 self.message = 'Could not configure device. Software Acquisition is running'
211 return False
217 return False
212
218
213 data = self.experiment.parms_to_dict()
219 data = self.experiment.parms_to_dict()
214
220
215 for key in data['configurations']['allIds']:
221 for key in data['configurations']['allIds']:
216 if data['configurations']['byId'][key]['device_type'] in ('dds', 'cgs'):
222 if data['configurations']['byId'][key]['device_type'] in ('dds', 'cgs'):
217 data['configurations']['allIds'].remove(key)
223 data['configurations']['allIds'].remove(key)
218 data['configurations']['byId'].pop(key)
224 data['configurations']['byId'].pop(key)
219 elif data['configurations']['byId'][key]['device_type'] == 'jars':
225 elif data['configurations']['byId'][key]['device_type'] == 'jars':
220 data['configurations']['byId'][key] = self.parms_to_dict()['configurations']['byId'][str(self.pk)]
226 data['configurations']['byId'][key] = self.parms_to_dict()['configurations']['byId'][str(self.pk)]
221 elif data['configurations']['byId'][key]['device_type'] == 'rc':
227 elif data['configurations']['byId'][key]['device_type'] == 'rc':
222 data['configurations']['byId'][key]['pulses'] = ''
228 data['configurations']['byId'][key]['pulses'] = ''
223 data['configurations']['byId'][key]['delays'] = ''
229 data['configurations']['byId'][key]['delays'] = ''
224 rc_ids = [pk for pk in data['configurations']['allIds'] if data['configurations']['byId'][pk]['device_type']=='rc']
230 rc_ids = [pk for pk in data['configurations']['allIds'] if data['configurations']['byId'][pk]['device_type']=='rc']
225 mix_ids = [pk for pk in rc_ids if data['configurations']['byId'][pk]['mix']]
231 mix_ids = [pk for pk in rc_ids if data['configurations']['byId'][pk]['mix']]
226 if mix_ids:
232 if mix_ids:
227 params = data['configurations']['byId'][mix_ids[0]]['parameters']
233 params = data['configurations']['byId'][mix_ids[0]]['parameters']
228 rc = data['configurations']['byId'][params.split('-')[0].split('|')[0]]
234 rc = data['configurations']['byId'][params.split('-')[0].split('|')[0]]
229 rc['mix'] = True
235 rc['mix'] = True
230 data['configurations']['byId'][rc['id']] = rc
236 data['configurations']['byId'][rc['id']] = rc
231 elif len(rc_ids)==0:
237 elif len(rc_ids)==0:
232 self.message = 'Missing RC configuration'
238 self.message = 'Missing RC configuration'
233 return False
239 return False
234
240
235 json_data = json.dumps(data)
241 json_data = json.dumps(data)
236 print json_data
242 print json_data
237 try:
243 try:
238 payload = self.request('write', 'post', json=json_data)
244 payload = self.request('write', 'post', json=json_data)
239 self.device.status = payload['status']
245 self.device.status = payload['status']
240 self.message = payload['message']
246 self.message = payload['message']
241 self.device.save()
247 self.device.save()
242 if self.device.status == 1:
248 if self.device.status == 1:
243 return False
249 return False
244
250
245 except Exception as e:
251 except Exception as e:
246 self.device.status = 0
252 self.device.status = 0
247 self.message = str(e)
253 self.message = str(e)
248 self.device.save()
254 self.device.save()
249 return False
255 return False
250
256
251 return True
257 return True
252
258
253 def start_device(self):
259 def start_device(self):
254
260
255 try:
261 try:
256 payload = self.request('start', 'post',
262 payload = self.request('start', 'post',
257 json={'name': self.experiment.name})
263 json={'name': self.experiment.name})
258 self.device.status = payload['status']
264 self.device.status = payload['status']
259 self.message = payload['message']
265 self.message = payload['message']
260 self.device.save()
266 self.device.save()
261 if self.device.status == 1:
267 if self.device.status == 1:
262 return False
268 return False
263
269
264 except Exception as e:
270 except Exception as e:
265 self.device.status = 0
271 self.device.status = 0
266 self.message = str(e)
272 self.message = str(e)
267 self.device.save()
273 self.device.save()
268 return False
274 return False
269
275
270 return True
276 return True
271
277
272 def update_from_file(self, filename):
278 def update_from_file(self, filename):
273
279
274 f = JARSFile(filename)
280 f = JARSFile(filename)
275 self.dict_to_parms(f.data)
281 self.dict_to_parms(f.data)
276 self.save()
282 self.save()
277
283
278 def get_absolute_url_import(self):
284 def get_absolute_url_import(self):
279 return reverse('url_import_jars_conf', args=[str(self.id)])
285 return reverse('url_import_jars_conf', args=[str(self.id)])
280
286
281 def get_absolute_url_read(self):
287 def get_absolute_url_read(self):
282 return reverse('url_read_jars_conf', args=[str(self.id)])
288 return reverse('url_read_jars_conf', args=[str(self.id)])
@@ -1,1 +1,16
1 {% extends "dev_conf.html" %} No newline at end of file
1 {% extends "dev_conf.html" %}
2 {% load static %}
3 {% load bootstrap3 %}
4 {% load main_tags %}
5
6
7 {% block extra-content %}
8
9 <div class="clearfix"></div>
10 <h2>JARS filter: {{resolution}} (MHz)</h2>
11 <hr>
12 <div class="panel-group" id="div_lines" role="tablist" aria-multiselectable="true">
13 {% include "jars_filter.html" %}
14 </div>
15
16 {% endblock extra-content%}
@@ -1,33 +1,32
1 {% extends "dev_conf_edit.html" %}
1 {% extends "dev_conf_edit.html" %}
2 {% load bootstrap3 %}
2 {% load bootstrap3 %}
3 {% load static %}
3 {% load static %}
4 {% load main_tags %}
4 {% load main_tags %}
5
5
6 {% block content %}
6 {% block content %}
7 <form class="form" method="post">
7 <form class="form" method="post">
8 {% csrf_token %}
8 {% csrf_token %}
9 {% bootstrap_form form layout='horizontal' size='medium' %}
9 {% bootstrap_form form layout='horizontal' size='medium' %}
10 <div style="clear: both;"></div>
10 <div style="clear: both;"></div>
11 <br>
11 <h2>JARS filter</h2>
12 <div class="pull-right">
12 <hr>
13 <button type="button" class="btn btn-primary" id="bt_view_filter">View Filter</button>
13 <div class="panel-group" id="div_lines" role="tablist" aria-multiselectable="true">
14 <!-- <button type="button" class="btn btn-primary" onclick="{% if previous %}window.location.replace('{{ previous }}');{% else %}history.go(-1);{% endif %}">Cancel</button> -->
14 {% include "jars_filter_edit.html" %}
15 <button type="button" class="btn btn-primary" id="bt_cancel">Cancel</button>
16 <button type="submit" class="btn btn-primary">{{button}}</button>
17 </div>
15 </div>
16 <div style="clear: both;"></div>
17 <br>
18 </form>
18 </form>
19 {% endblock %}
19 {% endblock %}
20
20
21
21 {% block extra-js%}
22 {% block extra-js%}
22 <script src="{% static 'js/jars.js' %}"></script>
23 <script src="{% static 'js/jars.js' %}"></script>
23
24
24 <script type="text/javascript">
25 <script type="text/javascript">
25 $("#bt_view_filter").click(function() {
26
26 document.location = "{% url 'url_jars_filter' id_dev filter_id%}";
27 });
28
29 $("#bt_cancel").click(function() {
27 $("#bt_cancel").click(function() {
30 document.location = "{% url 'url_jars_conf' id_dev %}";
28 document.location = "{% url 'url_jars_conf' id_dev %}";
31 });
29 });
30
32 </script>
31 </script>
33 {% endblock %} No newline at end of file
32 {% endblock %}
@@ -1,59 +1,27
1 {% extends "base.html" %}
2 {% load bootstrap3 %}
1 {% load bootstrap3 %}
3 {% load static %}
2 {% load static %}
4 {% load main_tags %}
3 {% load main_tags %}
5
4
6 {% block search-active %}active{% endblock %}
7
8 {% block content-title %}{{title}}{% endblock %}
9 {% block content-suptitle %}{{suptitle}}{% endblock %}
10
11 {% block content %}
5 {% block content %}
12
6
13 {% block menu-actions %}
7 {% block menu-actions %}
14
8
15 {% endblock %}
9 {% endblock %}
16
10
17 <table class="table table-bordered">
11 <table class="table table-bordered">
18
12
19 {% for key in dev_conf_keys %}
13 <tr> <th>Clock in (MHz)</th><td>{{filter.clock}}</td> </tr>
20 <tr>
14 <tr> <th>Multiplier</th><td>{{filter.mult}}</td> </tr>
21 <th>{% get_verbose_field_name dev_conf key %}</th>
15 <tr> <th>Frequency (MHz)</th><td>{{filter.fch}}</td> </tr>
22 <td>{{dev_conf|attr:key}}</td>
16 <tr> <th>Frequency (Decimal)</th><td>{{filter.fch_decimal}}</td> </tr>
23 </tr>
17 <tr> <th>Filter 2</th><td>{{filter.filter_2}}</td> </tr>
24 {% endfor %}
18 <tr> <th>Filter 5</th><td>{{filter.filter_5}}</td> </tr>
19 <tr> <th>FIR Filter</th><td>{{filter.filter_fir}}</td> </tr>
20
25 </table>
21 </table>
26 {% if button %}
27 <div class="pull-right">
28 <button type="button" class="btn btn-primary" id="back_button">{% if cancel %}{{cancel}}{% else %}Back{% endif %}</button>
29 <button type="button" id="edit_button" class="btn btn-primary">{{edit_button}}</button>
30 <button type="button" id="new_button" class="btn btn-primary">{{add_button}}</button>
31 </div>
32 {% endif %}
33
22
34 {% block extra-content %}
35 {% endblock %}
36
23
24 {% block extra-content %}
37 {% endblock %}
25 {% endblock %}
38
26
39 {% block sidebar%}
40 {% include "sidebar_devices.html" %}
41 {% endblock %}
27 {% endblock %}
42
43 {% block extra-js%}
44 <script type="text/javascript">
45
46 $("#edit_button").click(function() {
47 document.location = "{% url 'url_edit_jars_filter' conf.id filter.id%}";
48 });
49
50 $("#back_button").click(function() {
51 document.location = "{% url 'url_edit_jars_conf' conf.id%}";
52 });
53
54 $("#new_button").click(function() {
55 document.location = "{% url 'url_new_jars_filter' conf.id%}";
56 });
57
58 </script>
59 {% endblock %} No newline at end of file
@@ -1,21 +1,29
1 {% extends "dev_conf_edit.html" %}
2 {% load bootstrap3 %}
1 {% load bootstrap3 %}
3 {% load static %}
2 {% load static %}
4 {% load main_tags %}
3 {% load main_tags %}
5
4
6 {% block content %}
5 {% block content %}
7 <form class="form" method="post">
6 <form class="form" method="post">
8 {% csrf_token %}
7 {% csrf_token %}
9 {% bootstrap_form form layout='horizontal' size='medium' %}
8 {% bootstrap_form filter_form layout='horizontal' size='medium' %}
10 <div style="clear: both;"></div>
9 <div style="clear: both;"></div>
11 <br>
10 <br>
12 <div class="pull-right">
11 <div class="pull-right">
13 <button type="button" class="btn btn-primary" onclick="{% if previous %}window.location.replace('{{ previous }}');{% else %}history.go(-1);{% endif %}">Cancel</button>
12 <button type="button" class="btn btn-primary" onclick="{% if previous %}window.location.replace('{{ previous }}');{% else %}history.go(-1);{% endif %}">Cancel</button>
14 <button type="submit" class="btn btn-primary">{{button}}</button>
13 <button type="button" class="btn btn-primary" id="bt_change_filter">Change Filter</button>
14 <button type="submit" class="btn btn-primary">{{button}}</button>
15 </div>
15 </div>
16 </form>
16 </form>
17 {% endblock %}
17 {% endblock %}
18
18
19 {% block extra-js%}
19 {% block extra-js%}
20 <script src="{% static 'js/filters.js' %}"></script>
20 <script src="{% static 'js/filters.js' %}"></script>
21 {% endblock %} No newline at end of file
21
22 <script type="text/javascript">
23
24 $("#bt_change_filter").click(function() {
25 document.location = "{% url 'url_change_jars_filter' id_dev %}";
26 });
27
28 </script>
29 {% endblock %}
@@ -1,13 +1,15
1 from django.conf.urls import url
1 from django.conf.urls import url
2
2
3 from apps.jars import views
3 from apps.jars import views
4
4
5 urlpatterns = (
5 urlpatterns = (
6 url(r'^(?P<id_conf>-?\d+)/$', views.jars_conf, name='url_jars_conf'),
6 url(r'^(?P<id_conf>-?\d+)/$', views.jars_conf, name='url_jars_conf'),
7 url(r'^(?P<id_conf>-?\d+)/edit/$', views.jars_conf_edit, name='url_edit_jars_conf'),
7 url(r'^(?P<id_conf>-?\d+)/edit/$', views.jars_conf_edit, name='url_edit_jars_conf'),
8 url(r'^(?P<conf_id>-?\d+)/new_filter/$', views.new_filter, name='url_new_jars_filter'),
8 url(r'^(?P<conf_id>-?\d+)/new_filter/$', views.new_filter, name='url_new_jars_filter'),
9 url(r'^(?P<conf_id>-?\d+)/change_filter/$', views.change_filter, name='url_change_jars_filter'),
10 url(r'^(?P<conf_id>-?\d+)/change_filter/(?P<filter_id>-?\d+)/$', views.change_filter, name='url_change_jars_filter'),
9 url(r'^(?P<conf_id>-?\d+)/view_filter/(?P<filter_id>-?\d+)/$', views.view_filter, name='url_jars_filter'),
11 url(r'^(?P<conf_id>-?\d+)/view_filter/(?P<filter_id>-?\d+)/$', views.view_filter, name='url_jars_filter'),
10 url(r'^(?P<conf_id>-?\d+)/view_filter/(?P<filter_id>-?\d+)/edit$', views.edit_filter, name='url_edit_jars_filter'),
12 url(r'^(?P<conf_id>-?\d+)/view_filter/(?P<filter_id>-?\d+)/edit$', views.edit_filter, name='url_edit_jars_filter'),
11 url(r'^(?P<conf_id>-?\d+)/import/$', views.import_file, name='url_import_jars_conf'),
13 url(r'^(?P<conf_id>-?\d+)/import/$', views.import_file, name='url_import_jars_conf'),
12 url(r'^(?P<conf_id>-?\d+)/read/$', views.read_conf, name='url_read_jars_conf'),
14 url(r'^(?P<conf_id>-?\d+)/read/$', views.read_conf, name='url_read_jars_conf'),
13 )
15 )
@@ -1,246 +1,293
1 from django.shortcuts import render_to_response
1 from django.shortcuts import render_to_response
2 from django.template import RequestContext
2 from django.template import RequestContext
3 from django.shortcuts import redirect, render, get_object_or_404
3 from django.shortcuts import redirect, render, get_object_or_404
4 from django.contrib import messages
4 from django.contrib import messages
5
5
6 from apps.main.models import Device
6 from apps.main.models import Device
7 from apps.main.views import sidebar
7 from apps.main.views import sidebar
8
8
9 from .models import JARSConfiguration, JARSfilter
9 from .models import JARSConfiguration, JARSfilter
10 from .forms import JARSConfigurationForm, JARSfilterForm, JARSImportForm
10 from .forms import JARSConfigurationForm, JARSfilterForm, JARSImportForm
11
12 import json
11 # Create your views here.
13 # Create your views here.
12
14
13 def jars_conf(request, id_conf):
15 def jars_conf(request, id_conf):
14
16
15 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
17 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
16
18
17 ip=conf.device.ip_address
19 filter_parms = eval(conf.filter_parms)
18 port=conf.device.port_address
20 if filter_parms.__class__.__name__=='str':
21 filter_parms = eval(filter_parms)
19
22
20 kwargs = {}
23 kwargs = {}
24 kwargs['filter'] = filter_parms
25 kwargs['filter_keys'] = ['clock', 'mult', 'fch', 'fch_decimal',
26 'filter_fir', 'filter_2', 'filter_5']
27 filter_resolution=conf.filter_resolution()
28 kwargs['resolution'] = filter_resolution
29
21 kwargs['status'] = conf.device.get_status_display()
30 kwargs['status'] = conf.device.get_status_display()
22
31
23
32
24 kwargs['dev_conf'] = conf
33 kwargs['dev_conf'] = conf
25 kwargs['dev_conf_keys'] = ['name',
34 kwargs['dev_conf_keys'] = ['name',
26 'cards_number', 'channels_number', 'channels',
35 'cards_number', 'channels_number', 'channels',
27 #'rd_directory', 'pd_directory',
36 #'rd_directory', 'pd_directory',
28 'data_type',
37 'data_type',
29 'acq_profiles', 'profiles_block', 'raw_data_blocks', 'ftp_interval', 'fftpoints',
38 'acq_profiles', 'profiles_block', 'raw_data_blocks', 'ftp_interval', 'fftpoints',
30 'cohe_integr_str', 'decode_data',
39 'cohe_integr_str', 'decode_data',
31 'incohe_integr', 'cohe_integr', 'spectral_number',
40 'incohe_integr', 'cohe_integr', 'spectral_number',
32 'spectral', 'create_directory', 'include_expname',
41 'spectral', 'create_directory', 'include_expname',
33 'save_ch_dc', 'save_data']
42 'save_ch_dc', 'save_data']
34
43
35 kwargs['title'] = 'JARS Configuration'
44 kwargs['title'] = 'JARS Configuration'
36 kwargs['suptitle'] = 'Details'
45 kwargs['suptitle'] = 'Details'
37
46
38 kwargs['button'] = 'Edit Configuration'
47 kwargs['button'] = 'Edit Configuration'
39
48
40 #kwargs['no_play'] = True
49 #kwargs['no_play'] = True
41
50
42 #kwargs['only_stop'] = True
51 #kwargs['only_stop'] = True
43
52
44 ###### SIDEBAR ######
53 ###### SIDEBAR ######
45 kwargs.update(sidebar(conf=conf))
54 kwargs.update(sidebar(conf=conf))
46
55
47 return render(request, 'jars_conf.html', kwargs)
56 return render(request, 'jars_conf.html', kwargs)
48
57
49 def jars_conf_edit(request, id_conf):
58 def jars_conf_edit(request, id_conf):
50
59
51 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
60 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
52
61
62 filter_parms = eval(conf.filter_parms)
63 if filter_parms.__class__.__name__=='str':
64 filter_parms = eval(filter_parms)
65
53 if request.method=='GET':
66 if request.method=='GET':
54 form = JARSConfigurationForm(instance=conf)
67 form = JARSConfigurationForm(instance=conf)
68 filter_form = JARSfilterForm(initial=filter_parms)
55
69
56 if request.method=='POST':
70 if request.method=='POST':
57 form = JARSConfigurationForm(request.POST, instance=conf)
71 form = JARSConfigurationForm(request.POST, instance=conf)
72 filter_form = JARSfilterForm(request.POST)
73
74 if filter_form.is_valid():
75 jars_filter = filter_form.cleaned_data
76 try:
77 jars_filter.pop('name')
78 except:
79 pass
58
80
59 if form.is_valid():
81 if form.is_valid():
60 conf = form.save(commit=False)
82 conf = form.save(commit=False)
83 conf.filter_parms = json.dumps(jars_filter)
61 conf.save()
84 conf.save()
62 return redirect('url_jars_conf', id_conf=conf.id)
85 return redirect('url_jars_conf', id_conf=conf.id)
63
86
64 ##ERRORS
65
66 kwargs = {}
87 kwargs = {}
67
88
68 kwargs['filter_id'] = 1
69 kwargs['id_dev'] = conf.id
89 kwargs['id_dev'] = conf.id
70 kwargs['form'] = form
90 kwargs['form'] = form
91 kwargs['filter_form'] = filter_form
71 kwargs['title'] = 'Device Configuration'
92 kwargs['title'] = 'Device Configuration'
72 kwargs['suptitle'] = 'Edit'
93 kwargs['suptitle'] = 'Edit'
73 kwargs['button'] = 'Save'
94 kwargs['button'] = 'Save'
74
95
75 return render(request, 'jars_conf_edit.html', kwargs)
96 return render(request, 'jars_conf_edit.html', kwargs)
76
97
77 def import_file(request, conf_id):
98 def import_file(request, conf_id):
78
99
79 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
100 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
80 if request.method=='POST':
101 if request.method=='POST':
81 form = JARSImportForm(request.POST, request.FILES)
102 form = JARSImportForm(request.POST, request.FILES)
82 if form.is_valid():
103 if form.is_valid():
83 #try:
104 #try:
84 if True:
105 if True:
85 data = conf.import_from_file(request.FILES['file_name'])
106 data = conf.import_from_file(request.FILES['file_name'])
86 conf.dict_to_parms(data)
107 conf.dict_to_parms(data)
87 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
108 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
88 return redirect(conf.get_absolute_url_edit())
109 return redirect(conf.get_absolute_url_edit())
89
110
90 #except Exception as e:
111 #except Exception as e:
91 # messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
112 # messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
92
113
93 else:
114 else:
94 messages.warning(request, 'Your current configuration will be replaced')
115 messages.warning(request, 'Your current configuration will be replaced')
95 form = JARSImportForm()
116 form = JARSImportForm()
96
117
97 kwargs = {}
118 kwargs = {}
98 kwargs['form'] = form
119 kwargs['form'] = form
99 kwargs['title'] = 'JARS Configuration'
120 kwargs['title'] = 'JARS Configuration'
100 kwargs['suptitle'] = 'Import file'
121 kwargs['suptitle'] = 'Import file'
101 kwargs['button'] = 'Upload'
122 kwargs['button'] = 'Upload'
102 kwargs['previous'] = conf.get_absolute_url()
123 kwargs['previous'] = conf.get_absolute_url()
103
124
104 return render(request, 'jars_import.html', kwargs)
125 return render(request, 'jars_import.html', kwargs)
105
126
106 def read_conf(request, conf_id):
127 def read_conf(request, conf_id):
107
128
108 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
129 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
109 #filter = get_object_or_404(JARSfilter, pk=filter_id)
130 #filter = get_object_or_404(JARSfilter, pk=filter_id)
110
131
111 if request.method=='GET':
132 if request.method=='GET':
112
133
113 parms = conf.read_device()
134 parms = conf.read_device()
114 conf.status_device()
135 conf.status_device()
115
136
116 if not parms:
137 if not parms:
117 messages.error(request, conf.message)
138 messages.error(request, conf.message)
118 return redirect(conf.get_absolute_url())
139 return redirect(conf.get_absolute_url())
119
140
120 form = JARSConfigurationForm(initial=parms, instance=conf)
141 form = JARSConfigurationForm(initial=parms, instance=conf)
121
142
122 if request.method=='POST':
143 if request.method=='POST':
123 form = JARSConfigurationForm(request.POST, instance=conf)
144 form = JARSConfigurationForm(request.POST, instance=conf)
124
145
125 if form.is_valid():
146 if form.is_valid():
126 form.save()
147 form.save()
127 return redirect(conf.get_absolute_url())
148 return redirect(conf.get_absolute_url())
128
149
129 messages.error(request, "Parameters could not be saved")
150 messages.error(request, "Parameters could not be saved")
130
151
131 kwargs = {}
152 kwargs = {}
132 kwargs['id_dev'] = conf.id
153 kwargs['id_dev'] = conf.id
133 kwargs['filter_id'] = conf.filter.id
154 kwargs['filter_id'] = conf.filter.id
134 kwargs['form'] = form
155 kwargs['form'] = form
135 kwargs['title'] = 'Device Configuration'
156 kwargs['title'] = 'Device Configuration'
136 kwargs['suptitle'] = 'Parameters read from device'
157 kwargs['suptitle'] = 'Parameters read from device'
137 kwargs['button'] = 'Save'
158 kwargs['button'] = 'Save'
138
159
139 ###### SIDEBAR ######
160 ###### SIDEBAR ######
140 kwargs.update(sidebar(conf=conf))
161 kwargs.update(sidebar(conf=conf))
141
162
142 return render(request, 'jars_conf_edit.html', kwargs)
163 return render(request, 'jars_conf_edit.html', kwargs)
143
164
144 def view_filter(request, conf_id, filter_id):
165 def view_filter(request, conf_id, filter_id):
145
166
146 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
167 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
147 filter = get_object_or_404(JARSfilter, pk=filter_id)
168 filter = get_object_or_404(JARSfilter, pk=filter_id)
148
169
149 filter_parms = eval(conf.filter_parms)
170 filter_parms = eval(conf.filter_parms)
150 if filter_parms.__class__.__name__=='str':
171 if filter_parms.__class__.__name__=='str':
151 filter_parms = eval(filter_parms)
172 filter_parms = eval(filter_parms)
152 #filter.name = filter_parms['name']
173 #filter.name = filter_parms['name']
153 filter.clock = filter_parms['clock']
174 filter.clock = filter_parms['clock']
154 filter.mult = filter_parms['mult']
175 filter.mult = filter_parms['mult']
155 filter.fch = filter_parms['fch']
176 filter.fch = filter_parms['fch']
156 filter.fch_decimal = filter_parms['fch_decimal']
177 filter.fch_decimal = filter_parms['fch_decimal']
157 filter.filter_fir = filter_parms['filter_fir']
178 filter.filter_fir = filter_parms['filter_fir']
158 filter.filter_2 = filter_parms['filter_2']
179 filter.filter_2 = filter_parms['filter_2']
159 filter.filter_5 = filter_parms['filter_5']
180 filter.filter_5 = filter_parms['filter_5']
160
181
161 kwargs = {}
182 kwargs = {}
162 kwargs['conf'] = conf
183 kwargs['conf'] = conf
163 kwargs['filter'] = filter
184 kwargs['filter'] = filter
164 kwargs['dev_conf'] = filter
185 kwargs['dev_conf'] = filter
165 kwargs['dev_conf_keys'] = ['clock', 'mult', #'name',
186 kwargs['dev_conf_keys'] = ['clock', 'mult', #'name',
166 'fch', 'fch_decimal',
187 'fch', 'fch_decimal',
167 'filter_2', 'filter_5',
188 'filter_2', 'filter_5',
168 'filter_fir']
189 'filter_fir']
169
190
170 kwargs['title'] = 'Filter View'
191 kwargs['title'] = 'Filter View'
171 kwargs['suptitle'] = 'Details'
192 kwargs['suptitle'] = 'Details'
172 kwargs['button'] = 'SI'
193 kwargs['button'] = 'SI'
173 kwargs['edit_button'] = 'Edit Filter'
194 kwargs['edit_button'] = 'Edit Filter'
174 kwargs['add_button'] = 'New Filter'
195 kwargs['add_button'] = 'New Filter'
175
196
176 return render(request, 'jars_filter.html', kwargs)
197 return render(request, 'jars_filter.html', kwargs)
177
198
178 def edit_filter(request, conf_id, filter_id):
199 def edit_filter(request, conf_id, filter_id):
179
200
180 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
201 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
181 filter_parms = eval(conf.filter_parms)
202 filter_parms = eval(conf.filter_parms)
182
203
183 if filter_id:
204 if filter_id:
184 filter = get_object_or_404(JARSfilter, pk=filter_id)
205 filter = get_object_or_404(JARSfilter, pk=filter_id)
185
206
186 if request.method=='GET':
207 if request.method=='GET':
187 form = JARSfilterForm(initial=filter_parms)
208 form = JARSfilterForm(initial=filter_parms)
188
209
189 if request.method=='POST':
210 if request.method=='POST':
190 parms = {}
211 parms = {}
191 #parms['name'] = request.POST['name']
212 #parms['name'] = request.POST['name']
192 parms['clock'] = request.POST['clock']
213 parms['clock'] = request.POST['clock']
193 parms['mult'] = request.POST['mult']
214 parms['mult'] = request.POST['mult']
194 parms['fch'] = request.POST['fch']
215 parms['fch'] = request.POST['fch']
195 parms['fch_decimal'] = request.POST['fch_decimal']
216 parms['fch_decimal'] = request.POST['fch_decimal']
196 parms['filter_fir'] = request.POST['filter_fir']
217 parms['filter_fir'] = request.POST['filter_fir']
197 parms['filter_2'] = request.POST['filter_2']
218 parms['filter_2'] = request.POST['filter_2']
198 parms['filter_5'] = request.POST['filter_5']
219 parms['filter_5'] = request.POST['filter_5']
199
220
200 conf.filter_parms = parms
221 conf.filter_parms = parms
201 conf.save()
222 conf.save()
202
223
203 #form = JARSfilterForm(request.POST)
224 #form = JARSfilterForm(request.POST)
204 #form = JARSfilterForm(request.POST, instance=filter)
225 #form = JARSfilterForm(request.POST, instance=filter)
205 #if form.is_valid():
226 #if form.is_valid():
206 #form.save()
227 #form.save()
207 # messages.success(request, 'JARS Filter successfully updated')
228 # messages.success(request, 'JARS Filter successfully updated')
208 # return redirect('url_jars_filter', conf.id, filter.id)
229 # return redirect('url_jars_filter', conf.id, filter.id)
209 return redirect('url_jars_filter', conf.id, filter.id)
230 return redirect('url_jars_filter', conf.id, filter.id)
210
231
211 kwargs = {}
232 kwargs = {}
212 kwargs['form'] = form
233 kwargs['form'] = form
213 kwargs['title'] = conf.name
234 kwargs['title'] = conf.name
214 kwargs['suptitle'] = 'Edit Filter'
235 kwargs['suptitle'] = 'Edit Filter'
215 kwargs['button'] = 'Save'
236 kwargs['button'] = 'Save'
216 # kwargs['previous'] = conf.get_absolute_url_edit()
237 # kwargs['previous'] = conf.get_absolute_url_edit()
217 kwargs['dev_conf'] = conf
238 kwargs['dev_conf'] = conf
218
239
219 return render(request, 'jars_filter_edit.html', kwargs)
240 return render(request, 'jars_filter_edit.html', kwargs)
220
241
221 def new_filter(request, conf_id):
242 def new_filter(request, conf_id):
222
243
223 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
244 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
224
245
225 if request.method=='GET':
246 if request.method=='GET':
226 form = JARSfilterForm()
247 form = JARSfilterForm()
227
248
228 if request.method=='POST':
249 if request.method=='POST':
229 form = JARSfilterForm(request.POST)
250 form = JARSfilterForm(request.POST)
230 if form.is_valid():
251 if form.is_valid():
231 form.save()
252 form.save()
232 new_filter = get_object_or_404(JARSfilter, name=request.POST['name'])
253 new_filter = get_object_or_404(JARSfilter, name=request.POST['name'])
233 conf.filter = new_filter
254 conf.filter = new_filter
234 conf.add_parms_to_filter()
255 conf.add_parms_to_filter()
235 messages.success(request, 'New JARS Filter successfully created')
256 messages.success(request, 'New JARS Filter successfully created')
236 return redirect('url_edit_jars_conf', id_conf=conf.id)
257 return redirect('url_edit_jars_conf', id_conf=conf.id)
237
258
238 kwargs = {}
259 kwargs = {}
239 kwargs['form'] = form
260 kwargs['form'] = form
240 kwargs['title'] = 'New Filter'
261 kwargs['title'] = 'New Filter'
241 kwargs['suptitle'] = ''
262 kwargs['suptitle'] = ''
242 kwargs['button'] = 'Create'
263 kwargs['button'] = 'Create'
243 # kwargs['previous'] = conf.get_absolute_url_edit()
264 # kwargs['previous'] = conf.get_absolute_url_edit()
244 kwargs['dev_conf'] = conf
265 kwargs['dev_conf'] = conf
245
266
246 return render(request, 'jars_new_filter.html', kwargs)
267 return render(request, 'jars_new_filter.html', kwargs)
268
269
270 def change_filter(request, conf_id, filter_id=None):
271
272 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
273
274 if filter_id:
275 if filter_id.__class__.__name__ not in ['int', 'float']:
276 filter_id = eval(filter_id)
277
278 if filter_id == 0:
279 return redirect('url_change_jars_filter', conf_id=conf.id)
280
281 if request.method=='GET':
282 if not filter_id:
283 form = JARSfilterForm(initial={'jars_configuration':conf_id, 'filter_id': 0})
284 else:
285 form = JARSfilterForm(initial={'jars_configuration':conf_id, 'filter_id': filter_id})
286
287 kwargs = {}
288 kwargs['title'] = 'JARS Configuration'
289 kwargs['suptitle'] = 'Change Filter'
290 kwargs['form'] = form
291 kwargs['conf_id'] = conf.id
292 kwargs['filter_id'] = filter_id
293 return render(request, 'change_jars_filter.html', kwargs)
General Comments 0
You need to be logged in to leave comments. Login now