##// END OF EJS Templates
Task #1119: save and cancel button...
Task #1119: save and cancel button git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@382 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r269:739a60f98369
r270:ef93cf215be8
Show More
models.py
288 lines | 12.1 KiB | text/x-python | PythonLexer
Fiorella Quino
Jars files have been update...
r263 import json
import requests
Juan C. Espinoza
Updating base models and views ...
r6 from django.db import models
Fiorella Quino
Task #99: Modulo web del JARS...
r118 from django.core.validators import MinValueValidator, MaxValueValidator
Juan C. Espinoza
sync repo...
r157 from django.core.urlresolvers import reverse
Fiorella Quino
Task #99: Modulo web del JARS...
r123
Fiorella Quino
Jars files have been update...
r263 from apps.main.models import Configuration
from apps.main.utils import Params
Juan C. Espinoza
Updating base models and views ...
r6 # Create your models here.
Fiorella Quino
Task #99: Modulo web del JARS...
r123 EXPERIMENT_TYPE = (
(0, 'RAW_DATA'),
(1, 'PDATA'),
)
DATA_TYPE = (
(0, 'SHORT'),
(1, 'FLOAT'),
)
Fiorella Quino
Jars files have been update...
r263 DECODE_TYPE = (
(0, 'None'),
(1, 'TimeDomain'),
(2, 'FreqDomain'),
(3, 'InvFreqDomain'),
)
Fiorella Quino
Task #99: Modulo web del JARS...
r123 class JARSfilter(models.Model):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Filters (filters.js,new filter, update filter parameters, fch_decimal added)...
r139 JARS_NBITS = 32
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Filters (filters.js,new filter, update filter parameters, fch_decimal added)...
r139 name = models.CharField(max_length=60, unique=True, default='')
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@165 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r144 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
Fiorella Quino
Task #99: Filters (filters.js,new filter, update filter parameters, fch_decimal added)...
r139 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
Fiorella Quino
Filter template name combo box and change_filter views...
r269 fch = models.FloatField(verbose_name='Frequency (MHz)', validators=[MaxValueValidator(150)], null=True, default=49.9200)
Fiorella Quino
Jars files have been update...
r263 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(-9223372036854775808), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(2), MaxValueValidator(100)], default = 10)
filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 1)
filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(100)], default = 6)
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r123 class Meta:
db_table = 'jars_filters'
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 def __unicode__(self):
return u'%s' % (self.name)
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 def parms_to_dict(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 parameters = {}
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 #parameters['name'] = self.name
Fiorella Quino
Task #99: Filters (filters.js,new filter, update filter parameters, fch_decimal added)...
r139 parameters['clock'] = float(self.clock)
parameters['mult'] = int(self.mult)
parameters['fch'] = float(self.fch)
parameters['fch_decimal'] = int(self.fch)
parameters['filter_fir'] = int(self.filter_fir)
parameters['filter_2'] = int(self.filter_2)
parameters['filter_5'] = int(self.filter_5)
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 return parameters
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 def dict_to_parms(self, parameters):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 #self.name = parameters['name']
Fiorella Quino
Task #99: Filters (filters.js,new filter, update filter parameters, fch_decimal added)...
r139 self.clock = parameters['clock']
self.mult = parameters['mult']
self.fch = parameters['fch']
self.fch_decimal = parameters['fch_decimal']
self.filter_fir = parameters['filter_fir']
self.filter_2 = parameters['filter_2']
self.filter_5 = parameters['filter_5']
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r118
Juan C. Espinoza
Updating base models and views ...
r6 class JARSConfiguration(Configuration):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r118 ADC_RESOLUTION = 8
PCI_DIO_BUSWIDTH = 32
Fiorella Quino
Task #99: Modulo web del JARS...
r123 HEADER_VERSION = 1103
BEGIN_ON_START = True
REFRESH_RATE = 1
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r123 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
Fiorella Quino
Task #99: Modulo web del JARS...
r125 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
Fiorella Quino
Task #99: Modulo web del JARS...
r123 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0)
Fiorella Quino
Jars files have been update...
r263 raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=60)
profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', default=400)
acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', default=400)
Juan C. Espinoza
sync repo...
r157 ftp_interval = models.PositiveIntegerField(verbose_name='FTP Interval', default=60)
Fiorella Quino
Task #99: Modulo web del JARS...
r125 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
Juan C. Espinoza
sync repo...
r157 cohe_integr_str = models.PositiveIntegerField(verbose_name='Coh. Int. Stride',validators=[MinValueValidator(1)], default=30)
Fiorella Quino
Task #99: coherent_integrations added to models.py...
r141 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
Fiorella Quino
Task #99: Modulo web del JARS...
r130 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
Fiorella Quino
Jars files have been update...
r263 decode_data = models.PositiveIntegerField(verbose_name='Decode Data', choices=DECODE_TYPE, default=0)
post_coh_int = models.BooleanField(verbose_name='Post Coherent Integration', default=False)
Fiorella Quino
Task #99: View & Edit Jars Filters...
r135 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
Fiorella Quino
Task #99: Modulo web del JARS...
r130 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
Fiorella Quino
Task #99: Modulo web del JARS...
r118 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
Fiorella Quino
Jars files have been update...
r263 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=False)
Juan C. Espinoza
sync repo...
r157 #view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
Fiorella Quino
Task #99: Modulo web del JARS...
r125 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
Juan C. Espinoza
sync repo...
r157 save_data = models.BooleanField(verbose_name='Save Data', default=True)
Fiorella Quino
Filter template name combo box and change_filter views...
r269 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}')
Juan C. Espinoza
Updating base models and views ...
r6
class Meta:
db_table = 'jars_configurations'
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
r136 def add_parms_to_filter(self):
self.filter_parms = self.filter.parms_to_dict()
self.save()
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Filter template name combo box and change_filter views...
r269 def filter_resolution(self):
filter_parms = eval(self.filter_parms)
if filter_parms.__class__.__name__=='str':
filter_parms = eval(filter_parms)
filter_clock = filter_parms['clock']
filter_2 = filter_parms['filter_2']
filter_5 = filter_parms['filter_5']
filter_fir = filter_parms['filter_fir']
resolution = round((filter_clock/(filter_2*filter_5*filter_fir)),2)
return resolution
Fiorella Quino
Jars files have been update...
r263 def dict_to_parms(self, params, id=None):
if id is not None:
data = Params(params).get_conf(id_conf=id)
else:
data = Params(params).get_conf(dtype='jars')
self.name = data['name']
self.exp_type = data['exp_type']
#if data['exp_type'] in (1, '1') :
self.incohe_integr = data['incohe_integr']
self.spectral_number = data['spectral_number']
self.spectral = data['spectral']
#self.pd_directory = data['pd_directory']
self.cards_number = data['cards_number']
self.channels_number = data['channels_number']
self.channels = data['channels']
#self.rd_directory = data['rd_directory']
#self.raw_data_blocks = data['raw_data_blocks']
self.data_type = data['data_type']
self.cohe_integr_str = data['cohe_integr_str']
self.acq_profiles = data['acq_profiles']
self.profiles_block = data['profiles_block']
self.ftp_interval = data['ftp_interval']
self.fftpoints = data['fftpoints']
self.cohe_integr = data['cohe_integr']
self.filter_parms = json.dumps(data['filter_parms'])
self.create_directory = data['create_directory']
self.include_expname = data['include_expname']
#self.acq_link = data['acq_link']
#self.view_raw_data = data['view_raw_data']
self.save_ch_dc = data['save_ch_dc']
self.save_data = data['save_data']
self.save()
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 def request(self, cmd, method='get', **kwargs):
req = getattr(requests, method)(self.device.url(cmd), **kwargs)
payload = req.json()
return payload
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r123 def status_device(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 try:
Fiorella Quino
Jars files have been update...
r263 payload = self.request('status',
params={'name': self.experiment.name})
self.device.status = payload['status']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 self.device.save()
Fiorella Quino
Jars files have been update...
r263 self.message = payload['message']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 except Exception as e:
self.device.status = 0
self.message = str(e)
self.device.save()
return False
return True
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Juan C. Espinoza
sync repo...
r157 def stop_device(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 try:
Fiorella Quino
Jars files have been update...
r263 payload = self.request('stop', 'post')
self.device.status = payload['status']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 self.device.save()
Fiorella Quino
Jars files have been update...
r263 self.message = payload['message']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 except Exception as e:
self.device.status = 0
self.message = str(e)
self.device.save()
return False
return True
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r123 def read_device(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Juan C. Espinoza
sync repo...
r157 try:
Fiorella Quino
Jars files have been update...
r263 payload = self.request('read', params={'name': self.experiment.name})
self.message = 'Configuration loaded'
Juan C. Espinoza
sync repo...
r157 except:
self.device.status = 0
self.device.save()
self.message = 'Could not read JARS configuration.'
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 return False
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 return payload
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Task #99: Modulo web del JARS...
r123 def write_device(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 if self.device.status == 3:
self.message = 'Could not configure device. Software Acquisition is running'
return False
Juan C. Espinoza
sync repo...
r157 data = self.experiment.parms_to_dict()
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 for key in data['configurations']['allIds']:
if data['configurations']['byId'][key]['device_type'] in ('dds', 'cgs'):
data['configurations']['allIds'].remove(key)
data['configurations']['byId'].pop(key)
elif data['configurations']['byId'][key]['device_type'] == 'jars':
data['configurations']['byId'][key] = self.parms_to_dict()['configurations']['byId'][str(self.pk)]
elif data['configurations']['byId'][key]['device_type'] == 'rc':
data['configurations']['byId'][key]['pulses'] = ''
data['configurations']['byId'][key]['delays'] = ''
rc_ids = [pk for pk in data['configurations']['allIds'] if data['configurations']['byId'][pk]['device_type']=='rc']
mix_ids = [pk for pk in rc_ids if data['configurations']['byId'][pk]['mix']]
if mix_ids:
params = data['configurations']['byId'][mix_ids[0]]['parameters']
rc = data['configurations']['byId'][params.split('-')[0].split('|')[0]]
rc['mix'] = True
data['configurations']['byId'][rc['id']] = rc
elif len(rc_ids)==0:
self.message = 'Missing RC configuration'
return False
json_data = json.dumps(data)
print json_data
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 try:
Fiorella Quino
Jars files have been update...
r263 payload = self.request('write', 'post', json=json_data)
self.device.status = payload['status']
self.message = payload['message']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 self.device.save()
if self.device.status == 1:
return False
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 except Exception as e:
self.device.status = 0
self.message = str(e)
self.device.save()
return False
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 return True
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
updating repository....
r158 def start_device(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 try:
Fiorella Quino
Jars files have been update...
r263 payload = self.request('start', 'post',
json={'name': self.experiment.name})
self.device.status = payload['status']
self.message = payload['message']
Fiorella Quino
Standardize jars functions: start, stop, write, read, status...
r209 self.device.save()
if self.device.status == 1:
return False
except Exception as e:
self.device.status = 0
self.message = str(e)
self.device.save()
return False
return True
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 def update_from_file(self, filename):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Fiorella Quino
Jars files have been update...
r263 f = JARSFile(filename)
self.dict_to_parms(f.data)
Juan C. Espinoza
sync repo...
r157 self.save()
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Juan C. Espinoza
sync repo...
r157 def get_absolute_url_import(self):
return reverse('url_import_jars_conf', args=[str(self.id)])
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
Juan C. Espinoza
sync repo...
r157 def get_absolute_url_read(self):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 return reverse('url_read_jars_conf', args=[str(self.id)])