##// END OF EJS Templates
Check for active configuration for status update
Check for active configuration for status update

File last commit:

r329:7d210f98eba4
r329:7d210f98eba4
Show More
models.py
804 lines | 24.6 KiB | text/x-python | PythonLexer
Juan C. Espinoza
Update RC model, RC api for testing...
r185
Fiorella Quino
Main files have been updated...
r266 import os
import json
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 import requests
Fiorella Quino
Main files have been updated...
r266 import time
Juan C. Espinoza
Update several views and models in main app...
r85 from datetime import datetime
Juan C. Espinoza
Update RC model, RC api for testing...
r185 try:
from polymorphic.models import PolymorphicModel
except:
from polymorphic import PolymorphicModel
Juan C. Espinoza
Proyecto base en Django (refs #259) ...
r0
Fiorella Quino
Main files have been updated...
r266 from django.template.base import kwarg_re
Juan C. Espinoza
Update RC model, RC api for testing...
r185 from django.db import models
Miguel Urco
DDS app updated...
r32 from django.core.urlresolvers import reverse
Fiorella Quino
Main files have been updated...
r266 from django.core.validators import MinValueValidator, MaxValueValidator
Juan C. Espinoza
Update RC model, RC api for testing...
r185 from django.shortcuts import get_object_or_404
Juan C. Espinoza
Update Views y several improvements
r316 from django.contrib.auth.models import User
Juan C. Espinoza
Add profile model to user
r319 from django.db.models.signals import post_save
from django.dispatch import receiver
Fiorella Quino
Import Experiment Function...
r108
Fiorella Quino
Main files have been updated...
r266 from apps.main.utils import Params
from apps.rc.utils import RCFile
Fiorella Quino
Task #1068: Import function has been implemented...
r275 from apps.jars.utils import RacpFile
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 from devices.dds import api as dds_api
Fiorella Quino
Main files have been updated...
r266 from devices.dds import data as dds_data
Fiorella Quino
Main Models...
r72
Fiorella Quino
Main files have been updated...
r266
DEV_PORTS = {
'rc' : 2000,
'dds' : 2000,
'jars' : 2000,
'usrp' : 2000,
'cgs' : 8080,
'abs' : 8080
}
RADAR_STATES = (
(0, 'No connected'),
(1, 'Connected'),
(2, 'Configured'),
(3, 'Running'),
(4, 'Scheduled'),
Miguel Urco
template attribute added to RadarSys Models...
r47 )
Miguel Urco
Location model added to RadarSys...
r41
Fiorella Quino
Main files have been updated...
r266 EXPERIMENT_TYPE = (
(0, 'RAW_DATA'),
(1, 'PDATA'),
)
DECODE_TYPE = (
(0, 'None'),
(1, 'TimeDomain'),
(2, 'FreqDomain'),
(3, 'InvFreqDomain'),
Miguel Urco
template attribute added to RadarSys Models...
r47 )
Miguel Urco
status field added to Device and DevConfiguration model...
r16
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 DEV_STATES = (
Miguel Urco
template attribute added to RadarSys Models...
r47 (0, 'No connected'),
(1, 'Connected'),
(2, 'Configured'),
(3, 'Running'),
Juan C. Espinoza
Update RC model, RC api for testing...
r185 (4, 'Unknown'),
Miguel Urco
template attribute added to RadarSys Models...
r47 )
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
Miguel Urco
Campaign has been added to RadarSys Model...
r13 DEV_TYPES = (
Miguel Urco
template attribute added to RadarSys Models...
r47 ('', 'Select a device type'),
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 ('rc', 'Radar Controller'),
Miguel Urco
template attribute added to RadarSys Models...
r47 ('dds', 'Direct Digital Synthesizer'),
('jars', 'Jicamarca Radar Acquisition System'),
('usrp', 'Universal Software Radio Peripheral'),
('cgs', 'Clock Generator System'),
('abs', 'Automatic Beam Switching'),
)
Fiorella Quino
Main files have been updated...
r266 EXP_STATES = (
(0,'Error'), #RED
Juan C. Espinoza
Check for active configuration for status update
r329 (1,'Cancelled'), #YELLOW
Fiorella Quino
Main files have been updated...
r266 (2,'Running'), #GREEN
Juan C. Espinoza
Check for active configuration for status update
r329 (3,'Scheduled'), #BLUE
(4,'Unknown'), #WHITE
Fiorella Quino
Se agrego tabla "Radar" y Estados del Radar...
r49 )
Juan C. Espinoza
Use of cards instead of tables in operation & experiment views...
r216
Fiorella Quino
Main files have been updated...
r266 CONF_TYPES = (
(0, 'Active'),
(1, 'Historical'),
)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add profile model to user
r319 class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
Juan C. Espinoza
Add support to read abs module status
r326 theme = models.CharField(max_length=30, default='spacelab')
Juan C. Espinoza
Add profile model to user
r319
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
Miguel Urco
Models changed:...
r53 class Location(models.Model):
name = models.CharField(max_length = 30)
description = models.TextField(blank=True, null=True)
class Meta:
db_table = 'db_location'
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Miguel Urco
Models changed:...
r53 return u'%s' % self.name
Juan C. Espinoza
Update views and templates of main app...
r89 def get_absolute_url(self):
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 return reverse('url_location', args=[str(self.id)])
Juan C. Espinoza
Update views and templates of main app...
r89
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2 class DeviceType(models.Model):
Miguel Urco
Campaign has been added to RadarSys Model...
r13 name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc')
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 sequence = models.PositiveSmallIntegerField(default=1000)
Miguel Urco
Campaign has been added to RadarSys Model...
r13 description = models.TextField(blank=True, null=True)
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
class Meta:
Miguel Urco
Campaign has been added to RadarSys Model...
r13 db_table = 'db_device_types'
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Miguel Urco
models are passed as instances to templates (dictionaries are not used anymore)...
r22 return u'%s' % self.get_name_display()
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2 class Device(models.Model):
Miguel Urco
Models changed:...
r53 device_type = models.ForeignKey(DeviceType, on_delete=models.CASCADE)
location = models.ForeignKey(Location, on_delete=models.CASCADE)
Juan C. Espinoza
Updating base models and views ...
r6 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
Miguel Urco
Campaign has been added to RadarSys Model...
r13 port_address = models.PositiveSmallIntegerField(default=2000)
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 description = models.TextField(blank=True, null=True)
Miguel Urco
status field added to Device and DevConfiguration model...
r16 status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES)
Juan C. Espinoza
Check for active configuration for status update
r329 conf_active = models.PositiveIntegerField(default=0, verbose_name='Current configuration')
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
class Meta:
Miguel Urco
Campaign has been added to RadarSys Model...
r13 db_table = 'db_devices'
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Juan C. Espinoza
Update Views y several improvements
r316 ret = u'{} [{}]'.format(self.device_type.name.upper(), self.location.name)
return ret
@property
def name(self):
return str(self)
Fiorella Quino
main updated...
r162
def get_status(self):
Miguel Urco
template attribute added to RadarSys Models...
r47 return self.status
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add device status in experiment view...
r120 @property
def status_color(self):
color = 'muted'
if self.status == 0:
color = "danger"
elif self.status == 1:
color = "warning"
elif self.status == 2:
color = "info"
elif self.status == 3:
color = "success"
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add device status in experiment view...
r120 return color
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Update RC model, RC api for testing...
r185 def url(self, path=None):
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Update RC model, RC api for testing...
r185 if path:
return 'http://{}:{}/{}/'.format(self.ip_address, self.port_address, path)
else:
return 'http://{}:{}/'.format(self.ip_address, self.port_address)
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Update views and templates of main app...
r89 def get_absolute_url(self):
return reverse('url_device', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update Views y several improvements
r316 def get_absolute_url_edit(self):
return reverse('url_edit_device', args=[str(self.id)])
def get_absolute_url_delete(self):
return reverse('url_delete_device', args=[str(self.id)])
Fiorella Quino
Main files have been updated...
r266 def change_ip(self, ip_address, mask, gateway, dns, **kwargs):
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 if self.device_type.name=='dds':
Fiorella Quino
import/export functions have been updated...
r243 try:
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 answer = dds_api.change_ip(ip = self.ip_address,
port = self.port_address,
new_ip = ip_address,
mask = mask,
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 gateway = gateway)
if answer[0]=='1':
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 self.message = '25|DDS - {}'.format(answer)
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 self.ip_address = ip_address
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 self.save()
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 else:
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 self.message = '30|DDS - {}'.format(answer)
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 return False
except Exception as e:
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 self.message = '40|{}'.format(str(e))
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 return False
Fiorella Quino
import/export functions have been updated...
r243
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 elif self.device_type.name=='rc':
Fiorella Quino
Main files have been updated...
r266 headers = {'content-type': "application/json",
'cache-control': "no-cache"}
ip = [int(x) for x in ip_address.split('.')]
dns = [int(x) for x in dns.split('.')]
gateway = [int(x) for x in gateway.split('.')]
subnet = [int(x) for x in mask.split('.')]
payload = {
"ip": ip,
"dns": dns,
"gateway": gateway,
"subnet": subnet
}
req = requests.post(self.url('changeip'), data=json.dumps(payload), headers=headers)
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 try:
answer = req.json()
Fiorella Quino
import/export functions have been updated...
r243 if answer['changeip']=='ok':
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 self.message = '25|IP succesfully changed'
self.ip_address = ip_address
self.save()
else:
self.message = '30|An error ocuur when changing IP'
except Exception as e:
self.message = '40|{}'.format(str(e))
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 else:
self.message = 'Not implemented'
return False
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 return True
Miguel Urco
Campaign has been added to RadarSys Model...
r13
class Campaign(models.Model):
Fiorella Quino
main updated...
r162 template = models.BooleanField(default=False)
Juan C. Espinoza
Update several views and models in main app...
r85 name = models.CharField(max_length=60, unique=True)
Miguel Urco
Campaign has been added to RadarSys Model...
r13 start_date = models.DateTimeField(blank=True, null=True)
end_date = models.DateTimeField(blank=True, null=True)
Juan C. Espinoza
Update Views y several improvements
r316 tags = models.CharField(max_length=40, blank=True, null=True)
Miguel Urco
Campaign has been added to RadarSys Model...
r13 description = models.TextField(blank=True, null=True)
Juan C. Espinoza
Update several views and models in main app...
r85 experiments = models.ManyToManyField('Experiment', blank=True)
Juan C. Espinoza
Update Views y several improvements
r316 author = models.ForeignKey(User, null=True, blank=True)
Miguel Urco
Campaign has been added to RadarSys Model...
r13 class Meta:
db_table = 'db_campaigns'
Juan C. Espinoza
Update several views and models in main app...
r85 ordering = ('name',)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 if self.template:
return u'{} (template)'.format(self.name)
else:
return u'{}'.format(self.name)
Fiorella Quino
Main Models...
r72
Fiorella Quino
Main files have been updated...
r266 def jsonify(self):
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 data = {}
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 ignored = ('template')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for field in self._meta.fields:
if field.name in ignored:
continue
data[field.name] = field.value_from_object(self)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 data['start_date'] = data['start_date'].strftime('%Y-%m-%d')
data['end_date'] = data['end_date'].strftime('%Y-%m-%d')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 return data
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 def parms_to_dict(self):
Fiorella Quino
main updated...
r162
Fix mix experiment and scheduler
r311 params = Params({})
Fiorella Quino
Main files have been updated...
r266 params.add(self.jsonify(), 'campaigns')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for exp in Experiment.objects.filter(campaign = self):
params.add(exp.jsonify(), 'experiments')
configurations = Configuration.objects.filter(experiment=exp, type=0)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for conf in configurations:
params.add(conf.jsonify(), 'configurations')
if conf.device.device_type.name=='rc':
for line in conf.get_lines():
params.add(line.jsonify(), 'lines')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 return params.data
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 def dict_to_parms(self, parms, CONF_MODELS):
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 experiments = Experiment.objects.filter(campaign = self)
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 if experiments:
for experiment in experiments:
experiment.delete()
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for id_exp in parms['experiments']['allIds']:
exp_parms = parms['experiments']['byId'][id_exp]
dum = (datetime.now() - datetime(1970, 1, 1)).total_seconds()
exp = Experiment(name='{}'.format(dum))
exp.save()
exp.dict_to_parms(parms, CONF_MODELS, id_exp=id_exp)
self.experiments.add(exp)
camp_parms = parms['campaigns']['byId'][parms['campaigns']['allIds'][0]]
self.name = '{}-{}'.format(camp_parms['name'], datetime.now().strftime('%y%m%d'))
self.start_date = camp_parms['start_date']
self.end_date = camp_parms['end_date']
self.tags = camp_parms['tags']
self.save()
Fiorella Quino
main updated...
r162
return self
Fiorella Quino
Main files have been fixed...
r267 def get_experiments_by_radar(self, radar=None):
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172
ret = []
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 if radar:
locations = Location.objects.filter(pk=radar)
else:
locations = set([e.location for e in self.experiments.all()])
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 for loc in locations:
dum = {}
dum['name'] = loc.name
dum['id'] = loc.pk
dum['experiments'] = [e for e in self.experiments.all() if e.location==loc]
ret.append(dum)
return ret
Fiorella Quino
Import Experiment Function...
r108 def get_absolute_url(self):
return reverse('url_campaign', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def get_absolute_url_edit(self):
return reverse('url_edit_campaign', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update Views y several improvements
r316 def get_absolute_url_delete(self):
return reverse('url_delete_campaign', args=[str(self.id)])
Fiorella Quino
Export Campaign ...
r100 def get_absolute_url_export(self):
return reverse('url_export_campaign', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def get_absolute_url_import(self):
return reverse('url_import_campaign', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 class RunningExperiment(models.Model):
radar = models.OneToOneField('Location', on_delete=models.CASCADE)
Fiorella Quino
Task # 487: Operation View: radar_play...
r92 running_experiment = models.ManyToManyField('Experiment', blank = True)
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 status = models.PositiveSmallIntegerField(default=0, choices=RADAR_STATES)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2 class Experiment(models.Model):
Fiorella Quino
main updated...
r162 template = models.BooleanField(default=False)
Juan C. Espinoza
Update several views and models in main app...
r85 name = models.CharField(max_length=40, default='', unique=True)
Miguel Urco
Models changed:...
r53 location = models.ForeignKey('Location', null=True, blank=True, on_delete=models.CASCADE)
Fiorella Quino
Main files have been fixed...
r267 freq = models.FloatField(verbose_name='Operating Freq. (MHz)', validators=[MinValueValidator(1), MaxValueValidator(10000)], default=49.9200)
Miguel Urco
Campaign has been added to RadarSys Model...
r13 start_time = models.TimeField(default='00:00:00')
end_time = models.TimeField(default='23:59:59')
Fix mix experiment and scheduler
r311 task = models.CharField(max_length=36, default='', blank=True, null=True)
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 status = models.PositiveSmallIntegerField(default=4, choices=EXP_STATES)
Juan C. Espinoza
Update Views y several improvements
r316 author = models.ForeignKey(User, null=True, blank=True)
hash = models.CharField(default='', max_length=64, null=True, blank=True)
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
class Meta:
Miguel Urco
Campaign has been added to RadarSys Model...
r13 db_table = 'db_experiments'
Juan C. Espinoza
Update new and edit "views"...
r91 ordering = ('template', 'name')
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Juan C. Espinoza
Update new and edit "views"...
r91 if self.template:
Juan C. Espinoza
Add profile model to user
r319 return u'%s (template)' % (self.name)
Juan C. Espinoza
Update new and edit "views"...
r91 else:
Juan C. Espinoza
Add profile model to user
r319 return u'%s' % (self.name)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 def jsonify(self):
data = {}
ignored = ('template')
for field in self._meta.fields:
if field.name in ignored:
continue
data[field.name] = field.value_from_object(self)
data['start_time'] = data['start_time'].strftime('%H:%M:%S')
data['end_time'] = data['end_time'].strftime('%H:%M:%S')
data['location'] = self.location.name
data['configurations'] = ['{}'.format(conf.pk) for
Juan C. Espinoza
Improve operation & search views
r306 conf in Configuration.objects.filter(experiment=self, type=0)]
Fiorella Quino
Main files have been updated...
r266
return data
Juan C. Espinoza
Update views and templates of main app...
r89 @property
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 def radar_system(self):
Juan C. Espinoza
Update views and templates of main app...
r89 return self.location
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update several views and models in main app...
r85 def clone(self, **kwargs):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update several views and models in main app...
r85 confs = Configuration.objects.filter(experiment=self, type=0)
self.pk = None
Juan C. Espinoza
Update Views y several improvements
r316 self.name = '{}_{:%y%m%d}'.format(self.name, datetime.now())
Juan C. Espinoza
Update several views and models in main app...
r85 for attr, value in kwargs.items():
setattr(self, attr, value)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update several views and models in main app...
r85 self.save()
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update several views and models in main app...
r85 for conf in confs:
conf.clone(experiment=self, template=False)
Fiorella Quino
main updated...
r162
return self
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 def start(self):
'''
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 Configure and start experiments's devices
Fiorella Quino
start and stop experiment functions have been updated ...
r250 ABS-CGS-DDS-RC-JARS
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 '''
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Fix mix experiment and scheduler
r311 confs = []
allconfs = Configuration.objects.filter(experiment=self, type = 0).order_by('-device__device_type__sequence')
rc_mix = [conf for conf in allconfs if conf.device.device_type.name=='rc' and conf.mix]
if rc_mix:
for conf in allconfs:
if conf.device.device_type.name == 'rc' and not conf.mix:
continue
confs.append(conf)
else:
confs = allconfs
Juan C. Espinoza
Check for active configuration for status update
r329
try:
for conf in confs:
conf.stop_device()
conf.write_device()
conf.start_device()
time.sleep(0.1)
except:
return 0
return 2
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Fiorella Quino
start and stop experiment functions have been updated ...
r250
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 def stop(self):
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 '''
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 Stop experiments's devices
Fiorella Quino
start and stop experiment functions have been updated ...
r250 DDS-JARS-RC-CGS-ABS
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 '''
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Improve operation & search views
r306 confs = Configuration.objects.filter(experiment=self, type = 0).order_by('device__device_type__sequence')
Fiorella Quino
Main files have been updated...
r266 confs=confs.exclude(device__device_type__name='cgs')
Juan C. Espinoza
Check for active configuration for status update
r329 try:
for conf in confs:
conf.stop_device()
except:
return 0
return 1
Fiorella Quino
start and stop experiment functions have been updated ...
r250
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 def get_status(self):
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Improve operation & search views
r306 if self.status == 3:
return
confs = Configuration.objects.filter(experiment=self, type=0)
Fiorella Quino
import/export functions have been updated...
r243
Juan C. Espinoza
Add start, stop methods to experiment, fix RC dat export file...
r240 for conf in confs:
conf.status_device()
Fiorella Quino
import/export functions have been updated...
r243
Juan C. Espinoza
Use of cards instead of tables in operation & experiment views...
r216 total = confs.aggregate(models.Sum('device__status'))['device__status__sum']
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 if total==2*confs.count():
status = 1
elif total == 3*confs.count():
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 status = 2
else:
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 status = 0
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Improve operation & search views
r306 self.status = status
self.save()
Fiorella Quino
main updated...
r162
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 def status_color(self):
Juan C. Espinoza
- Improve display name for Devices & Configurations...
r121 color = 'muted'
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 if self.status == 0:
color = "danger"
elif self.status == 1:
Juan C. Espinoza
Check for active configuration for status update
r329 color = "warning"
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 elif self.status == 2:
Juan C. Espinoza
Update new and edit "views"...
r91 color = "success"
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 elif self.status == 3:
Juan C. Espinoza
Check for active configuration for status update
r329 color = "info"
Fiorella Quino
main updated...
r162
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 return color
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 def parms_to_dict(self):
Fiorella Quino
main updated...
r162
Fix mix experiment and scheduler
r311 params = Params({})
Fiorella Quino
Main files have been updated...
r266 params.add(self.jsonify(), 'experiments')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 configurations = Configuration.objects.filter(experiment=self, type=0)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for conf in configurations:
params.add(conf.jsonify(), 'configurations')
if conf.device.device_type.name=='rc':
for line in conf.get_lines():
params.add(line.jsonify(), 'lines')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 return params.data
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 def dict_to_parms(self, parms, CONF_MODELS, id_exp=None):
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 configurations = Configuration.objects.filter(experiment=self)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 if id_exp is not None:
exp_parms = parms['experiments']['byId'][id_exp]
else:
exp_parms = parms['experiments']['byId'][parms['experiments']['allIds'][0]]
Fiorella Quino
Import Experiment Function...
r108 if configurations:
Fiorella Quino
import/export functions have been updated...
r243 for configuration in configurations:
configuration.delete()
Fiorella Quino
Main files have been updated...
r266
for id_conf in exp_parms['configurations']:
conf_parms = parms['configurations']['byId'][id_conf]
device = Device.objects.filter(device_type__name=conf_parms['device_type'])[0]
model = CONF_MODELS[conf_parms['device_type']]
conf = model(
experiment = self,
device = device,
)
conf.dict_to_parms(parms, id=id_conf)
location, created = Location.objects.get_or_create(name=exp_parms['location'])
self.name = '{}-{}'.format(exp_parms['name'], datetime.now().strftime('%y%m%d'))
self.location = location
self.start_time = exp_parms['start_time']
self.end_time = exp_parms['end_time']
Fiorella Quino
Import Campaign...
r110 self.save()
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign...
r110 return self
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 def get_absolute_url(self):
return reverse('url_experiment', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def get_absolute_url_edit(self):
return reverse('url_edit_experiment', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update Views y several improvements
r316 def get_absolute_url_delete(self):
return reverse('url_delete_experiment', args=[str(self.id)])
Fiorella Quino
Import Experiment Function...
r108 def get_absolute_url_import(self):
return reverse('url_import_experiment', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 def get_absolute_url_export(self):
return reverse('url_export_experiment', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add start, stop methods to experiment, fix RC dat export file...
r240 def get_absolute_url_start(self):
return reverse('url_start_experiment', args=[str(self.id)])
def get_absolute_url_stop(self):
return reverse('url_stop_experiment', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Updating base models and views ...
r6 class Configuration(PolymorphicModel):
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
Miguel Urco
template attribute added to RadarSys Models...
r47 template = models.BooleanField(default=False)
Juan C. Espinoza
Update Views y several improvements
r316 # name = models.CharField(verbose_name="Configuration Name", max_length=40, default='')
label = models.CharField(verbose_name="Label", max_length=40, default='', blank=True, null=True)
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 experiment = models.ForeignKey('Experiment', verbose_name='Experiment', null=True, blank=True, on_delete=models.CASCADE)
device = models.ForeignKey('Device', verbose_name='Device', null=True, on_delete=models.CASCADE)
Miguel Urco
Configuration model changed: status and date fields were replaced by type and created fields....
r21 type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES)
Miguel Urco
models are passed as instances to templates (dictionaries are not used anymore)...
r22 created_date = models.DateTimeField(auto_now_add=True)
programmed_date = models.DateTimeField(auto_now=True)
parameters = models.TextField(default='{}')
Juan C. Espinoza
Update Views y several improvements
r316 author = models.ForeignKey(User, null=True, blank=True)
hash = models.CharField(default='', max_length=64, null=True, blank=True)
Miguel Urco
Models changed:...
r53 message = ""
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2 class Meta:
Miguel Urco
Campaign has been added to RadarSys Model...
r13 db_table = 'db_configurations'
Juan C. Espinoza
Update Views y several improvements
r316 ordering = ('device__device_type__name',)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 def __str__(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update Views y several improvements
r316 ret = u'{} '.format(self.device.device_type.name.upper())
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 if 'mix' in [f.name for f in self._meta.get_fields()]:
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 if self.mix:
Juan C. Espinoza
Update Views y several improvements
r316 ret = '{} MIX '.format(self.device.device_type.name.upper())
if 'label' in [f.name for f in self._meta.get_fields()]:
Juan C. Espinoza
Add profile model to user
r319 ret += '{}'.format(self.label)
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 if self.template:
Juan C. Espinoza
Update Views y several improvements
r316 ret += ' (template)'
return ret
@property
def name(self):
return str(self)
Juan C. Espinoza
- Update rc app...
r79
Fiorella Quino
Main files have been updated...
r266 def jsonify(self):
data = {}
ignored = ('type', 'polymorphic_ctype', 'configuration_ptr',
'created_date', 'programmed_date', 'template', 'device',
'experiment')
for field in self._meta.fields:
if field.name in ignored:
continue
data[field.name] = field.value_from_object(self)
data['device_type'] = self.device.device_type.name
if self.device.device_type.name == 'rc':
data['lines'] = ['{}'.format(line.pk) for line in self.get_lines()]
data['delays'] = self.get_delays()
data['pulses'] = self.get_pulses()
elif self.device.device_type.name == 'jars':
data['decode_type'] = DECODE_TYPE[self.decode_data][1]
elif self.device.device_type.name == 'dds':
data['frequencyA_Mhz'] = float(data['frequencyA_Mhz'])
data['frequencyB_Mhz'] = float(data['frequencyB_Mhz'])
data['phaseA'] = dds_data.phase_to_binary(data['phaseA_degrees'])
data['phaseB'] = dds_data.phase_to_binary(data['phaseB_degrees'])
return data
Juan C. Espinoza
Update several views and models in main app...
r85 def clone(self, **kwargs):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update several views and models in main app...
r85 self.pk = None
self.id = None
for attr, value in kwargs.items():
setattr(self, attr, value)
Fiorella Quino
main updated...
r162
self.save()
Juan C. Espinoza
Update several views and models in main app...
r85
return self
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def parms_to_dict(self):
Fiorella Quino
main updated...
r162
Fix mix experiment and scheduler
r311 params = Params({})
Fiorella Quino
Main files have been updated...
r266 params.add(self.jsonify(), 'configurations')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 if self.device.device_type.name=='rc':
for line in self.get_lines():
params.add(line.jsonify(), 'lines')
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 return params.data
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 def parms_to_text(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 raise NotImplementedError("This method should be implemented in %s Configuration model" %str(self.device.device_type.name).upper())
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 def parms_to_binary(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 raise NotImplementedError("This method should be implemented in %s Configuration model" %str(self.device.device_type.name).upper())
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 def dict_to_parms(self, parameters, id=None):
params = Params(parameters)
if id:
data = params.get_conf(id_conf=id)
else:
data = params.get_conf(dtype=self.device.device_type.name)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 if data['device_type']=='rc':
self.clean_lines()
lines = data.pop('lines', None)
for line_id in lines:
pass
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 for key, value in data.items():
if key not in ('id', 'device_type'):
setattr(self, key, value)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 self.save()
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been fixed...
r267
def export_to_file(self, format="json"):
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 content_type = ''
Fiorella Quino
main updated...
r162
Fiorella Quino
Task #1068: Export racp and jars files function has been implemented...
r276 if format == 'racp':
content_type = 'text/plain'
filename = '%s_%s.%s' %(self.device.device_type.name, self.name, 'racp')
content = self.parms_to_text(file_format = 'racp')
Miguel Urco
Models changed:...
r53 if format == 'text':
content_type = 'text/plain'
Miguel Urco
DDS commands working...
r57 filename = '%s_%s.%s' %(self.device.device_type.name, self.name, self.device.device_type.name)
content = self.parms_to_text()
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 if format == 'binary':
content_type = 'application/octet-stream'
Fiorella Quino
Main files have been updated...
r266 filename = '%s_%s.bin' %(self.device.device_type.name, self.name)
Miguel Urco
DDS commands working...
r57 content = self.parms_to_binary()
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 if not content_type:
content_type = 'application/json'
filename = '%s_%s.json' %(self.device.device_type.name, self.name)
Juan C. Espinoza
- Update rc app...
r79 content = json.dumps(self.parms_to_dict(), indent=2)
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 fields = {'content_type':content_type,
'filename':filename,
'content':content
}
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 return fields
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been fixed...
r267 def import_from_file(self, fp):
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 parms = {}
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 path, ext = os.path.splitext(fp.name)
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 if ext == '.json':
parms = json.load(fp)
Fiorella Quino
main updated...
r162
Fiorella Quino
Main files have been updated...
r266 if ext == '.dds':
lines = fp.readlines()
parms = dds_data.text_to_dict(lines)
if ext == '.racp':
Fiorella Quino
Task #1068: Import function has been implemented...
r275 if self.device.device_type.name == 'jars':
parms = RacpFile(fp).to_dict()
parms['filter_parms'] = json.loads(self.filter_parms)
return parms
Fiorella Quino
Main files have been updated...
r266 parms = RCFile(fp).to_dict()
Miguel Urco
DDS commands working...
r57 return parms
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def status_device(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update RC model, RC api for testing...
r185 self.message = 'Function not implemented'
return False
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def stop_device(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update RC model, RC api for testing...
r185 self.message = 'Function not implemented'
return False
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def start_device(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update RC model, RC api for testing...
r185 self.message = 'Function not implemented'
return False
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def write_device(self, parms):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update RC model, RC api for testing...
r185 self.message = 'Function not implemented'
return False
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def read_device(self):
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update RC model, RC api for testing...
r185 self.message = 'Function not implemented'
return False
Fiorella Quino
main updated...
r162
Miguel Urco
template attribute added to RadarSys Models...
r47 def get_absolute_url(self):
Juan C. Espinoza
Add rc config mods...
r23 return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
r30 def get_absolute_url_edit(self):
return reverse('url_edit_%s_conf' % self.device.device_type.name, args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Update Views y several improvements
r316 def get_absolute_url_delete(self):
return reverse('url_delete_dev_conf', args=[str(self.id)])
Miguel Urco
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
r30 def get_absolute_url_import(self):
Miguel Urco
Models changed:...
r53 return reverse('url_import_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
r30 def get_absolute_url_export(self):
Miguel Urco
Models changed:...
r53 return reverse('url_export_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
r30 def get_absolute_url_write(self):
Miguel Urco
Models changed:...
r53 return reverse('url_write_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
r30 def get_absolute_url_read(self):
Miguel Urco
Models changed:...
r53 return reverse('url_read_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def get_absolute_url_start(self):
return reverse('url_start_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def get_absolute_url_stop(self):
return reverse('url_stop_dev_conf', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def get_absolute_url_status(self):
Fiorella Quino
main updated...
r162 return reverse('url_status_dev_conf', args=[str(self.id)])