##// END OF EJS Templates
Standardize jars functions: start, stop, write, read, status...
Fiorella Quino -
r209:90fa9a52ca2f
parent child
Show More
@@ -1,273 +1,323
1 from django.db import models
1 from django.db import models
2 from apps.main.models import Configuration
2 from apps.main.models import Configuration
3 from django.core.validators import MinValueValidator, MaxValueValidator
3 from django.core.validators import MinValueValidator, MaxValueValidator
4 from django.core.urlresolvers import reverse
4 from django.core.urlresolvers import reverse
5 from devices.jars import api
5 from devices.jars import api
6
6
7 from apps.rc.models import RCConfiguration
7 from apps.rc.models import RCConfiguration
8
8
9 import json
9 import json
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 class JARSfilter(models.Model):
22 class JARSfilter(models.Model):
23
23
24 JARS_NBITS = 32
24 JARS_NBITS = 32
25
25
26 name = models.CharField(max_length=60, unique=True, default='')
26 name = models.CharField(max_length=60, unique=True, default='')
27 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
27 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
28 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
28 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
29 fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200)
29 fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200)
30 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(0), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
30 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(0), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
31 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 6)
31 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 6)
32 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 10)
32 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 10)
33 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1)
33 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1)
34 speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0)
34 speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0)
35
35
36 class Meta:
36 class Meta:
37 db_table = 'jars_filters'
37 db_table = 'jars_filters'
38
38
39 def __unicode__(self):
39 def __unicode__(self):
40 return u'%s' % (self.name)
40 return u'%s' % (self.name)
41
41
42 def parms_to_dict(self):
42 def parms_to_dict(self):
43
43
44 parameters = {}
44 parameters = {}
45
45
46 parameters['name'] = self.name
46 parameters['name'] = self.name
47 parameters['clock'] = float(self.clock)
47 parameters['clock'] = float(self.clock)
48 parameters['mult'] = int(self.mult)
48 parameters['mult'] = int(self.mult)
49 parameters['fch'] = float(self.fch)
49 parameters['fch'] = float(self.fch)
50 parameters['fch_decimal'] = int(self.fch)
50 parameters['fch_decimal'] = int(self.fch)
51 parameters['filter_fir'] = int(self.filter_fir)
51 parameters['filter_fir'] = int(self.filter_fir)
52 parameters['filter_2'] = int(self.filter_2)
52 parameters['filter_2'] = int(self.filter_2)
53 parameters['filter_5'] = int(self.filter_5)
53 parameters['filter_5'] = int(self.filter_5)
54 parameters['speed'] = int(self.speed)
54 parameters['speed'] = int(self.speed)
55
55
56 return parameters
56 return parameters
57
57
58 def dict_to_parms(self, parameters):
58 def dict_to_parms(self, parameters):
59
59
60 self.name = parameters['name']
60 self.name = parameters['name']
61 self.clock = parameters['clock']
61 self.clock = parameters['clock']
62 self.mult = parameters['mult']
62 self.mult = parameters['mult']
63 self.fch = parameters['fch']
63 self.fch = parameters['fch']
64 self.fch_decimal = parameters['fch_decimal']
64 self.fch_decimal = parameters['fch_decimal']
65 self.filter_fir = parameters['filter_fir']
65 self.filter_fir = parameters['filter_fir']
66 self.filter_2 = parameters['filter_2']
66 self.filter_2 = parameters['filter_2']
67 self.filter_5 = parameters['filter_5']
67 self.filter_5 = parameters['filter_5']
68 self.speed = parameters['speed']
68 self.speed = parameters['speed']
69
69
70
70
71 class JARSConfiguration(Configuration):
71 class JARSConfiguration(Configuration):
72
72
73 ADC_RESOLUTION = 8
73 ADC_RESOLUTION = 8
74 PCI_DIO_BUSWIDTH = 32
74 PCI_DIO_BUSWIDTH = 32
75 HEADER_VERSION = 1103
75 HEADER_VERSION = 1103
76 BEGIN_ON_START = True
76 BEGIN_ON_START = True
77 REFRESH_RATE = 1
77 REFRESH_RATE = 1
78
78
79 #rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True)
79 #rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True)
80 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
80 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
81 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
81 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
82 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
82 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
83 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
83 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
84 rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=200, default='', blank=True, null=True)
84 rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=200, default='', blank=True, null=True)
85 pd_directory = models.CharField(verbose_name='Process Data Directory', max_length=200, default='', blank=True, null=True)
85 pd_directory = models.CharField(verbose_name='Process Data Directory', max_length=200, default='', blank=True, null=True)
86 #raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=120)
86 #raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=120)
87 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)
88 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', validators=[MaxValueValidator(5000)], default=400)
88 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', validators=[MaxValueValidator(5000)], default=400)
89 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', validators=[MaxValueValidator(5000)], default=400)
89 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', validators=[MaxValueValidator(5000)], default=400)
90 ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60)
90 ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60)
91 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
91 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
92 cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30)
92 cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30)
93 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
93 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
94 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
94 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
95 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
95 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
96 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
96 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
97 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
97 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
98 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
98 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
99 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True)
99 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True)
100 #acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True)
100 #acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True)
101 #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
101 #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
102 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
102 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
103 save_data = models.BooleanField(verbose_name='Save Data', default=True)
103 save_data = models.BooleanField(verbose_name='Save Data', default=True)
104 filter_parms = models.CharField(max_length=10000, default='{}')
104 filter_parms = models.CharField(max_length=10000, default='{}')
105
105
106 class Meta:
106 class Meta:
107 db_table = 'jars_configurations'
107 db_table = 'jars_configurations'
108
108
109 def parms_to_dict(self):
109 def parms_to_dict(self):
110
110
111 parameters = {}
111 parameters = {}
112
112
113 parameters['device_id'] = self.device.id
113 parameters['device_id'] = self.device.id
114 parameters['name'] = self.name
114 parameters['name'] = self.name
115 #parameters['rc'] = self.rc.name
115 #parameters['rc'] = self.rc.name
116 parameters['exp_type'] = self.exp_type
116 parameters['exp_type'] = self.exp_type
117 parameters['exptype'] = EXPERIMENT_TYPE[self.exp_type][1]
117 parameters['exptype'] = EXPERIMENT_TYPE[self.exp_type][1]
118 parameters['cards_number'] = self.cards_number
118 parameters['cards_number'] = self.cards_number
119 parameters['channels_number'] = self.channels_number
119 parameters['channels_number'] = self.channels_number
120 parameters['channels'] = self.channels
120 parameters['channels'] = self.channels
121 parameters['rd_directory'] = self.rd_directory
121 parameters['rd_directory'] = self.rd_directory
122 #parameters['raw_data_blocks'] = self.raw_data_blocks
122 #parameters['raw_data_blocks'] = self.raw_data_blocks
123 parameters['data_type'] = self.data_type
123 parameters['data_type'] = self.data_type
124 parameters['cohe_integr_str'] = self.cohe_integr_str
124 parameters['cohe_integr_str'] = self.cohe_integr_str
125 parameters['acq_profiles'] = self.acq_profiles
125 parameters['acq_profiles'] = self.acq_profiles
126 parameters['profiles_block'] = self.profiles_block
126 parameters['profiles_block'] = self.profiles_block
127 parameters['ftp_interval'] = self.ftp_interval
127 parameters['ftp_interval'] = self.ftp_interval
128 parameters['fftpoints'] = self.fftpoints
128 parameters['fftpoints'] = self.fftpoints
129 parameters['cohe_integr'] = self.cohe_integr
129 parameters['cohe_integr'] = self.cohe_integr
130 #parameters['incohe_integr'] = self.incohe_integr
130 #parameters['incohe_integr'] = self.incohe_integr
131 parameters['filter'] = self.filter.name
131 parameters['filter'] = self.filter.name
132 parameters['filter_parms'] = self.filter_parms
132 parameters['filter_parms'] = self.filter_parms
133 #parameters['spectral_number'] = self.spectral_number
133 #parameters['spectral_number'] = self.spectral_number
134 #parameters['spectral'] = self.spectral
134 #parameters['spectral'] = self.spectral
135 parameters['create_directory'] = bool(self.create_directory)
135 parameters['create_directory'] = bool(self.create_directory)
136 parameters['include_expname'] = bool(self.include_expname)
136 parameters['include_expname'] = bool(self.include_expname)
137 #parameters['acq_link'] = bool(self.acq_link)
137 #parameters['acq_link'] = bool(self.acq_link)
138 #parameters['view_raw_data'] = bool(self.view_raw_data)
138 #parameters['view_raw_data'] = bool(self.view_raw_data)
139 parameters['save_ch_dc'] = bool(self.save_ch_dc)
139 parameters['save_ch_dc'] = bool(self.save_ch_dc)
140 parameters['save_data'] = bool(self.save_data)
140 parameters['save_data'] = bool(self.save_data)
141
141
142 if parameters['exptype'] == 'PDATA':
142 if parameters['exptype'] == 'PDATA':
143 parameters['incohe_integr'] = self.incohe_integr
143 parameters['incohe_integr'] = self.incohe_integr
144 parameters['spectral_number'] = self.spectral_number
144 parameters['spectral_number'] = self.spectral_number
145 parameters['spectral'] = self.spectral
145 parameters['spectral'] = self.spectral
146 parameters['pd_directory'] = self.pd_directory
146 parameters['pd_directory'] = self.pd_directory
147
147
148 return parameters
148 return parameters
149
149
150 def add_parms_to_filter(self):
150 def add_parms_to_filter(self):
151 self.filter_parms = self.filter.parms_to_dict()
151 self.filter_parms = self.filter.parms_to_dict()
152 self.save()
152 self.save()
153
153
154 def dict_to_parms(self, parameters):
154 def dict_to_parms(self, parameters):
155
155
156 self.name = parameters['name']
156 self.name = parameters['name']
157 self.device.id = int(parameters['device_id'])
157 self.device.id = int(parameters['device_id'])
158
158
159 self.exp_type = int(parameters['exp_type'])
159 self.exp_type = int(parameters['exp_type'])
160 if parameters['exptype'] == 'PDATA':
160 if parameters['exptype'] == 'PDATA':
161 self.incohe_integr = parameters['incohe_integr']
161 self.incohe_integr = parameters['incohe_integr']
162 self.spectral_number = parameters['spectral_number']
162 self.spectral_number = parameters['spectral_number']
163 self.spectral = parameters['spectral']
163 self.spectral = parameters['spectral']
164 self.pd_directory = parameters['pd_directory']
164 self.pd_directory = parameters['pd_directory']
165
165
166 self.cards_number = int(parameters['cards_number'])
166 self.cards_number = int(parameters['cards_number'])
167 self.channels_number = int(parameters['channels_number'])
167 self.channels_number = int(parameters['channels_number'])
168 self.channels = parameters['channels']
168 self.channels = parameters['channels']
169 self.rd_directory = parameters['rd_directory']
169 self.rd_directory = parameters['rd_directory']
170 #self.raw_data_blocks = parameters['raw_data_blocks']
170 #self.raw_data_blocks = parameters['raw_data_blocks']
171 self.data_type = parameters['data_type']
171 self.data_type = parameters['data_type']
172 self.cohe_integr_str = parameters['cohe_integr_str']
172 self.cohe_integr_str = parameters['cohe_integr_str']
173 self.acq_profiles = parameters['acq_profiles']
173 self.acq_profiles = parameters['acq_profiles']
174 self.profiles_block = parameters['profiles_block']
174 self.profiles_block = parameters['profiles_block']
175 self.ftp_interval = parameters['ftp_interval']
175 self.ftp_interval = parameters['ftp_interval']
176 self.fftpoints = parameters['fftpoints']
176 self.fftpoints = parameters['fftpoints']
177 self.cohe_integr = parameters['cohe_integr']
177 self.cohe_integr = parameters['cohe_integr']
178
178
179 filter_name = parameters['filter']
179 filter_name = parameters['filter']
180 self.filter = JARSfilter.objects.get(name=filter_name)
180 self.filter = JARSfilter.objects.get(name=filter_name)
181 self.add_parms_to_filter()
181 self.add_parms_to_filter()
182 self.filter_parms = parameters['filter_parms']
182 self.filter_parms = parameters['filter_parms']
183
183
184 self.create_directory = bool(parameters['create_directory'])
184 self.create_directory = bool(parameters['create_directory'])
185 self.include_expname = bool(parameters['include_expname'])
185 self.include_expname = bool(parameters['include_expname'])
186 #self.acq_link = bool(parameters['acq_link'])
186 #self.acq_link = bool(parameters['acq_link'])
187 #self.view_raw_data = bool(parameters['view_raw_data'])
187 #self.view_raw_data = bool(parameters['view_raw_data'])
188 self.save_ch_dc = bool(parameters['save_ch_dc'])
188 self.save_ch_dc = bool(parameters['save_ch_dc'])
189 self.save_data = bool(parameters['save_data'])
189 self.save_data = bool(parameters['save_data'])
190
190
191 def status_device(self):
191 def status_device(self):
192
192
193 answer = api.status(self.device.ip_address,self.device.port_address)
193 try:
194 self.device.status = int(answer[0])
194 answer = api.status(self.device.ip_address,self.device.port_address)
195 self.message = answer[2:]
195 self.device.status = int(answer[0])
196 self.device.save()
196 self.device.save()
197 self.message = answer[2:]
198 if self.device.status == 0:
199 return False
197
200
198 return self.device.status
201 except Exception as e:
202 self.device.status = 0
203 self.message = str(e)
204 self.device.save()
205 return False
206
207 return True
199
208
200 def stop_device(self):
209 def stop_device(self):
201
210
202 answer = api.stop(self.device.ip_address,self.device.port_address)
211 try:
203 self.device.status = int(answer[0])
212 answer = api.stop(self.device.ip_address,self.device.port_address)
204 self.message = answer[2:]
213 self.device.status = int(answer[0])
205 self.device.save()
214 self.message = answer[2:]
215 self.device.save()
216 if self.device.status == 0 or self.device.status == 1:
217 return False
206
218
207 return self.device.status
219 except Exception as e:
220 self.device.status = 0
221 self.message = str(e)
222 self.device.save()
223 return False
224
225 return True
208
226
209 def read_device(self):
227 def read_device(self):
210
228
211 answer = api.read(self.device.ip_address,self.device.port_address)
212 self.device.status = int(answer[0])
213 try:
229 try:
230 answer = api.read(self.device.ip_address,self.device.port_address)
231 self.device.status = int(answer[0])
232 self.device.save()
233 self.message = answer[2:]
234 if self.device.status == 1:
235 return False
214 data = json.loads(answer[2:])
236 data = json.loads(answer[2:])
215 parms = data['configurations']['jars']
237 parms = data['configurations']['jars']
238
216 except:
239 except:
217 self.device.status = 0
240 self.device.status = 0
218 self.device.save()
241 self.device.save()
219 self.message = 'Could not read JARS configuration.'
242 self.message = 'Could not read JARS configuration.'
220 return ''
243 return False
221
244
222 #self.dict_to_parms(parms)
245 #self.dict_to_parms(parms)
223 self.message = 'Current JARS configuration was read successfully.'
246 self.message = 'Current JARS configuration was read successfully.'
224 self.device.save()
247 self.device.save()
225 return parms
248 return parms
226
249
227
250
228 def write_device(self):
251 def write_device(self):
229
252
253 if self.device.status == 3:
254 self.message = 'Could not configure device. Software Acquisition is running'
255 return False
256
230 data = self.experiment.parms_to_dict()
257 data = self.experiment.parms_to_dict()
231 data = json.loads(data)
258 data = json.loads(data)
232 data['configurations']['dds'] =''
259 data['configurations']['dds'] =''
233 data['configurations']['cgs'] =''
260 data['configurations']['cgs'] =''
234 data['configurations']['rc']['pulses']=''
261 data['configurations']['rc']['pulses']=''
235 data['configurations']['rc']['delays']=''
262 data['configurations']['rc']['delays']=''
236 json_data = json.dumps(data)
263 json_data = json.dumps(data)
237
264
238 answer = api.configure(self.device.ip_address,self.device.port_address,json_data)
265 try:
239 #print answer
266 answer = api.configure(self.device.ip_address,self.device.port_address,json_data)
240 self.device.status = int(answer[0])
267 self.device.status = int(answer[0])
241 self.message = answer[2:]
268 self.message = answer[2:]
269 self.device.save()
270 if self.device.status == 1:
271 return False
272 if self.device.status == 3:
273 return False
242
274
243 self.device.save()
275 except Exception as e:
276 self.device.status = 0
277 self.message = str(e)
278 self.device.save()
279 return False
244
280
245 return self.device.status
281 return True
246
282
247
283
248 def start_device(self):
284 def start_device(self):
249
285
250 self.write_device()
286 try:
287 answer = api.start(self.device.ip_address,self.device.port_address)
288 self.device.status = int(answer[0])
289 self.message = answer[2:]
290 self.device.save()
291 if self.device.status == 1:
292 return False
293
294 except Exception as e:
295 self.device.status = 0
296 self.message = str(e)
297 self.device.save()
298 return False
299
300 return True
251
301
252
302
253 def echo(self):
303 def echo(self):
254
304
255 answer = api.echo(self.device.ip_address,self.device.port_address,'(=')
305 answer = api.echo(self.device.ip_address,self.device.port_address,'(=')
256 #print answer
306 #print answer
257 self.device.status = int(answer[0])
307 self.device.status = int(answer[0])
258 self.message = answer[2:]
308 self.message = answer[2:]
259
309
260 self.device.save()
310 self.device.save()
261
311
262 return #self.device.status
312 return #self.device.status
263
313
264 def update_from_file(self, parameters):
314 def update_from_file(self, parameters):
265
315
266 self.dict_to_parms(parameters)
316 self.dict_to_parms(parameters)
267 self.save()
317 self.save()
268
318
269 def get_absolute_url_import(self):
319 def get_absolute_url_import(self):
270 return reverse('url_import_jars_conf', args=[str(self.id)])
320 return reverse('url_import_jars_conf', args=[str(self.id)])
271
321
272 def get_absolute_url_read(self):
322 def get_absolute_url_read(self):
273 return reverse('url_read_jars_conf', args=[str(self.id)])
323 return reverse('url_read_jars_conf', args=[str(self.id)])
@@ -1,247 +1,247
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 # Create your views here.
11 # Create your views here.
12
12
13 def jars_conf(request, id_conf):
13 def jars_conf(request, id_conf):
14
14
15 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
15 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
16
16
17 ip=conf.device.ip_address
17 ip=conf.device.ip_address
18 port=conf.device.port_address
18 port=conf.device.port_address
19
19
20 kwargs = {}
20 kwargs = {}
21 kwargs['status'] = conf.device.get_status_display()
21 kwargs['status'] = conf.device.get_status_display()
22
22
23
23
24 kwargs['dev_conf'] = conf
24 kwargs['dev_conf'] = conf
25 kwargs['dev_conf_keys'] = ['name',
25 kwargs['dev_conf_keys'] = ['name',
26 'cards_number', 'channels_number', 'channels',
26 'cards_number', 'channels_number', 'channels',
27 'rd_directory', 'pd_directory',
27 'rd_directory', 'pd_directory',
28 'data_type',
28 'data_type',
29 'acq_profiles', 'profiles_block', 'ftp_interval', 'fftpoints',
29 'acq_profiles', 'profiles_block', 'ftp_interval', 'fftpoints',
30 'cohe_integr_str',
30 'cohe_integr_str',
31 'incohe_integr', 'cohe_integr', 'filter', 'spectral_number',
31 'incohe_integr', 'cohe_integr', 'filter', 'spectral_number',
32 'spectral', 'create_directory', 'include_expname',
32 'spectral', 'create_directory', 'include_expname',
33 'save_ch_dc', 'save_data']
33 'save_ch_dc', 'save_data']
34
34
35 kwargs['title'] = 'JARS Configuration'
35 kwargs['title'] = 'JARS Configuration'
36 kwargs['suptitle'] = 'Details'
36 kwargs['suptitle'] = 'Details'
37
37
38 kwargs['button'] = 'Edit Configuration'
38 kwargs['button'] = 'Edit Configuration'
39
39
40 #kwargs['no_play'] = True
40 #kwargs['no_play'] = True
41
41
42 kwargs['only_stop'] = True
42 #kwargs['only_stop'] = True
43
43
44 ###### SIDEBAR ######
44 ###### SIDEBAR ######
45 kwargs.update(sidebar(conf=conf))
45 kwargs.update(sidebar(conf=conf))
46
46
47 return render(request, 'jars_conf.html', kwargs)
47 return render(request, 'jars_conf.html', kwargs)
48
48
49 def jars_conf_edit(request, id_conf):
49 def jars_conf_edit(request, id_conf):
50
50
51 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
51 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
52
52
53 if request.method=='GET':
53 if request.method=='GET':
54 form = JARSConfigurationForm(instance=conf)
54 form = JARSConfigurationForm(instance=conf)
55
55
56 if request.method=='POST':
56 if request.method=='POST':
57 form = JARSConfigurationForm(request.POST, instance=conf)
57 form = JARSConfigurationForm(request.POST, instance=conf)
58
58
59 if form.is_valid():
59 if form.is_valid():
60 conf = form.save(commit=False)
60 conf = form.save(commit=False)
61 conf.save()
61 conf.save()
62 return redirect('url_jars_conf', id_conf=conf.id)
62 return redirect('url_jars_conf', id_conf=conf.id)
63
63
64 ##ERRORS
64 ##ERRORS
65
65
66 kwargs = {}
66 kwargs = {}
67
67
68 kwargs['filter_id'] = conf.filter.id
68 kwargs['filter_id'] = conf.filter.id
69 kwargs['id_dev'] = conf.id
69 kwargs['id_dev'] = conf.id
70 kwargs['form'] = form
70 kwargs['form'] = form
71 kwargs['title'] = 'Device Configuration'
71 kwargs['title'] = 'Device Configuration'
72 kwargs['suptitle'] = 'Edit'
72 kwargs['suptitle'] = 'Edit'
73 kwargs['button'] = 'Save'
73 kwargs['button'] = 'Save'
74
74
75 return render(request, 'jars_conf_edit.html', kwargs)
75 return render(request, 'jars_conf_edit.html', kwargs)
76
76
77 def import_file(request, conf_id):
77 def import_file(request, conf_id):
78
78
79 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
79 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
80 if request.method=='POST':
80 if request.method=='POST':
81 form = JARSImportForm(request.POST, request.FILES)
81 form = JARSImportForm(request.POST, request.FILES)
82 if form.is_valid():
82 if form.is_valid():
83 try:
83 try:
84 parms = conf.import_from_file(request.FILES['file_name'])
84 parms = conf.import_from_file(request.FILES['file_name'])
85
85
86 if parms:
86 if parms:
87 conf.update_from_file(parms)
87 conf.update_from_file(parms)
88 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
88 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
89 return redirect(conf.get_absolute_url_edit())
89 return redirect(conf.get_absolute_url_edit())
90
90
91 except Exception as e:
91 except Exception as e:
92 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
92 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
93
93
94 else:
94 else:
95 messages.warning(request, 'Your current configuration will be replaced')
95 messages.warning(request, 'Your current configuration will be replaced')
96 form = JARSImportForm()
96 form = JARSImportForm()
97
97
98 kwargs = {}
98 kwargs = {}
99 kwargs['form'] = form
99 kwargs['form'] = form
100 kwargs['title'] = 'JARS Configuration'
100 kwargs['title'] = 'JARS Configuration'
101 kwargs['suptitle'] = 'Import file'
101 kwargs['suptitle'] = 'Import file'
102 kwargs['button'] = 'Upload'
102 kwargs['button'] = 'Upload'
103 kwargs['previous'] = conf.get_absolute_url()
103 kwargs['previous'] = conf.get_absolute_url()
104
104
105 return render(request, 'jars_import.html', kwargs)
105 return render(request, 'jars_import.html', kwargs)
106
106
107 def read_conf(request, conf_id):
107 def read_conf(request, conf_id):
108
108
109 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
109 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
110 #filter = get_object_or_404(JARSfilter, pk=filter_id)
110 #filter = get_object_or_404(JARSfilter, pk=filter_id)
111
111
112 if request.method=='GET':
112 if request.method=='GET':
113
113
114 parms = conf.read_device()
114 parms = conf.read_device()
115 conf.status_device()
115 conf.status_device()
116
116
117 if not parms:
117 if not parms:
118 messages.error(request, conf.message)
118 messages.error(request, conf.message)
119 return redirect(conf.get_absolute_url())
119 return redirect(conf.get_absolute_url())
120
120
121 form = JARSConfigurationForm(initial=parms, instance=conf)
121 form = JARSConfigurationForm(initial=parms, instance=conf)
122
122
123 if request.method=='POST':
123 if request.method=='POST':
124 form = JARSConfigurationForm(request.POST, instance=conf)
124 form = JARSConfigurationForm(request.POST, instance=conf)
125
125
126 if form.is_valid():
126 if form.is_valid():
127 form.save()
127 form.save()
128 return redirect(conf.get_absolute_url())
128 return redirect(conf.get_absolute_url())
129
129
130 messages.error(request, "Parameters could not be saved")
130 messages.error(request, "Parameters could not be saved")
131
131
132 kwargs = {}
132 kwargs = {}
133 kwargs['id_dev'] = conf.id
133 kwargs['id_dev'] = conf.id
134 kwargs['filter_id'] = conf.filter.id
134 kwargs['filter_id'] = conf.filter.id
135 kwargs['form'] = form
135 kwargs['form'] = form
136 kwargs['title'] = 'Device Configuration'
136 kwargs['title'] = 'Device Configuration'
137 kwargs['suptitle'] = 'Parameters read from device'
137 kwargs['suptitle'] = 'Parameters read from device'
138 kwargs['button'] = 'Save'
138 kwargs['button'] = 'Save'
139
139
140 ###### SIDEBAR ######
140 ###### SIDEBAR ######
141 kwargs.update(sidebar(conf=conf))
141 kwargs.update(sidebar(conf=conf))
142
142
143 return render(request, 'jars_conf_edit.html', kwargs)
143 return render(request, 'jars_conf_edit.html', kwargs)
144
144
145 def view_filter(request, conf_id, filter_id):
145 def view_filter(request, conf_id, filter_id):
146
146
147 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
147 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
148 filter = get_object_or_404(JARSfilter, pk=filter_id)
148 filter = get_object_or_404(JARSfilter, pk=filter_id)
149
149
150 filter_parms = eval(conf.filter_parms)
150 filter_parms = eval(conf.filter_parms)
151 filter.name = filter_parms['name']
151 filter.name = filter_parms['name']
152 filter.clock = filter_parms['clock']
152 filter.clock = filter_parms['clock']
153 filter.mult = filter_parms['mult']
153 filter.mult = filter_parms['mult']
154 filter.fch = filter_parms['fch']
154 filter.fch = filter_parms['fch']
155 filter.fch_decimal = filter_parms['fch_decimal']
155 filter.fch_decimal = filter_parms['fch_decimal']
156 filter.filter_fir = filter_parms['filter_fir']
156 filter.filter_fir = filter_parms['filter_fir']
157 filter.filter_2 = filter_parms['filter_2']
157 filter.filter_2 = filter_parms['filter_2']
158 filter.filter_5 = filter_parms['filter_5']
158 filter.filter_5 = filter_parms['filter_5']
159 filter.speed = filter_parms['speed']
159 filter.speed = filter_parms['speed']
160
160
161 kwargs = {}
161 kwargs = {}
162 kwargs['conf'] = conf
162 kwargs['conf'] = conf
163 kwargs['filter'] = filter
163 kwargs['filter'] = filter
164 kwargs['dev_conf'] = filter
164 kwargs['dev_conf'] = filter
165 kwargs['dev_conf_keys'] = ['name', 'clock',
165 kwargs['dev_conf_keys'] = ['name', 'clock',
166 'mult', 'fch', 'fch_decimal',
166 'mult', 'fch', 'fch_decimal',
167 'filter_fir', 'filter_2',
167 'filter_fir', 'filter_2',
168 'filter_5', 'speed']
168 'filter_5', 'speed']
169
169
170 kwargs['title'] = 'Filter View'
170 kwargs['title'] = 'Filter View'
171 kwargs['suptitle'] = 'Details'
171 kwargs['suptitle'] = 'Details'
172 kwargs['button'] = 'SI'
172 kwargs['button'] = 'SI'
173 kwargs['edit_button'] = 'Edit Filter'
173 kwargs['edit_button'] = 'Edit Filter'
174 kwargs['add_button'] = 'New Filter'
174 kwargs['add_button'] = 'New Filter'
175
175
176 return render(request, 'jars_filter.html', kwargs)
176 return render(request, 'jars_filter.html', kwargs)
177
177
178 def edit_filter(request, conf_id, filter_id):
178 def edit_filter(request, conf_id, filter_id):
179
179
180 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
180 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
181 filter_parms = eval(conf.filter_parms)
181 filter_parms = eval(conf.filter_parms)
182
182
183 if filter_id:
183 if filter_id:
184 filter = get_object_or_404(JARSfilter, pk=filter_id)
184 filter = get_object_or_404(JARSfilter, pk=filter_id)
185
185
186 if request.method=='GET':
186 if request.method=='GET':
187 form = JARSfilterForm(initial=filter_parms)
187 form = JARSfilterForm(initial=filter_parms)
188
188
189 if request.method=='POST':
189 if request.method=='POST':
190 parms = {}
190 parms = {}
191 parms['name'] = request.POST['name']
191 parms['name'] = request.POST['name']
192 parms['clock'] = request.POST['clock']
192 parms['clock'] = request.POST['clock']
193 parms['mult'] = request.POST['mult']
193 parms['mult'] = request.POST['mult']
194 parms['fch'] = request.POST['fch']
194 parms['fch'] = request.POST['fch']
195 parms['fch_decimal'] = request.POST['fch_decimal']
195 parms['fch_decimal'] = request.POST['fch_decimal']
196 parms['filter_fir'] = request.POST['filter_fir']
196 parms['filter_fir'] = request.POST['filter_fir']
197 parms['filter_2'] = request.POST['filter_2']
197 parms['filter_2'] = request.POST['filter_2']
198 parms['filter_5'] = request.POST['filter_5']
198 parms['filter_5'] = request.POST['filter_5']
199 parms['speed'] = request.POST['speed']
199 parms['speed'] = request.POST['speed']
200
200
201 conf.filter_parms = parms
201 conf.filter_parms = parms
202 conf.save()
202 conf.save()
203
203
204 #form = JARSfilterForm(request.POST)
204 #form = JARSfilterForm(request.POST)
205 #form = JARSfilterForm(request.POST, instance=filter)
205 #form = JARSfilterForm(request.POST, instance=filter)
206 #if form.is_valid():
206 #if form.is_valid():
207 #form.save()
207 #form.save()
208 # messages.success(request, 'JARS Filter successfully updated')
208 # messages.success(request, 'JARS Filter successfully updated')
209 # return redirect('url_jars_filter', conf.id, filter.id)
209 # return redirect('url_jars_filter', conf.id, filter.id)
210 return redirect('url_jars_filter', conf.id, filter.id)
210 return redirect('url_jars_filter', conf.id, filter.id)
211
211
212 kwargs = {}
212 kwargs = {}
213 kwargs['form'] = form
213 kwargs['form'] = form
214 kwargs['title'] = conf.name
214 kwargs['title'] = conf.name
215 kwargs['suptitle'] = 'Edit Filter'
215 kwargs['suptitle'] = 'Edit Filter'
216 kwargs['button'] = 'Save'
216 kwargs['button'] = 'Save'
217 # kwargs['previous'] = conf.get_absolute_url_edit()
217 # kwargs['previous'] = conf.get_absolute_url_edit()
218 kwargs['dev_conf'] = conf
218 kwargs['dev_conf'] = conf
219
219
220 return render(request, 'jars_filter_edit.html', kwargs)
220 return render(request, 'jars_filter_edit.html', kwargs)
221
221
222 def new_filter(request, conf_id):
222 def new_filter(request, conf_id):
223
223
224 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
224 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
225
225
226 if request.method=='GET':
226 if request.method=='GET':
227 form = JARSfilterForm()
227 form = JARSfilterForm()
228
228
229 if request.method=='POST':
229 if request.method=='POST':
230 form = JARSfilterForm(request.POST)
230 form = JARSfilterForm(request.POST)
231 if form.is_valid():
231 if form.is_valid():
232 form.save()
232 form.save()
233 new_filter = get_object_or_404(JARSfilter, name=request.POST['name'])
233 new_filter = get_object_or_404(JARSfilter, name=request.POST['name'])
234 conf.filter = new_filter
234 conf.filter = new_filter
235 conf.add_parms_to_filter()
235 conf.add_parms_to_filter()
236 messages.success(request, 'New JARS Filter successfully created')
236 messages.success(request, 'New JARS Filter successfully created')
237 return redirect('url_edit_jars_conf', id_conf=conf.id)
237 return redirect('url_edit_jars_conf', id_conf=conf.id)
238
238
239 kwargs = {}
239 kwargs = {}
240 kwargs['form'] = form
240 kwargs['form'] = form
241 kwargs['title'] = 'New Filter'
241 kwargs['title'] = 'New Filter'
242 kwargs['suptitle'] = ''
242 kwargs['suptitle'] = ''
243 kwargs['button'] = 'Create'
243 kwargs['button'] = 'Create'
244 # kwargs['previous'] = conf.get_absolute_url_edit()
244 # kwargs['previous'] = conf.get_absolute_url_edit()
245 kwargs['dev_conf'] = conf
245 kwargs['dev_conf'] = conf
246
246
247 return render(request, 'jars_new_filter.html', kwargs) No newline at end of file
247 return render(request, 'jars_new_filter.html', kwargs)
General Comments 0
You need to be logged in to leave comments. Login now