##// END OF EJS Templates
Fix experiment views (summary & verify)...
Fix experiment views (summary & verify) git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@264 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r236:7c5422f0dc5b
r239:fc540c8396d2
Show More
models.py
751 lines | 24.0 KiB | text/x-python | PythonLexer
Juan C. Espinoza
Update RC model, RC api for testing...
r185
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 import requests
Juan C. Espinoza
Update several views and models in main app...
r85 from datetime import datetime
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 from django.template.base import kwarg_re
Juan C. Espinoza
Update several views and models in main app...
r85
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
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
Juan C. Espinoza
Update RC model, RC api for testing...
r185 from django.shortcuts import get_object_or_404
Fiorella Quino
Import Experiment Function...
r108
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 from devices.dds import api as dds_api
Fiorella Quino
Main Models...
r72
EXP_STATES = (
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 (0,'Error'), #RED
Juan C. Espinoza
Add device status in experiment view...
r120 (1,'Configured'), #BLUE
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 (2,'Running'), #GREEN
Juan C. Espinoza
Use of cards instead of tables in operation & experiment views...
r216 (3,'Scheduled'), #YELLOW
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 (4,'Not Configured'), #WHITE
Miguel Urco
template attribute added to RadarSys Models...
r47 )
Miguel Urco
Location model added to RadarSys...
r41
Miguel Urco
Configuration model changed: status and date fields were replaced by type and created fields....
r21 CONF_TYPES = (
Miguel Urco
template attribute added to RadarSys Models...
r47 (0, 'Active'),
(1, 'Historical'),
)
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'),
)
DEV_PORTS = {
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 'rc' : 2000,
Miguel Urco
template attribute added to RadarSys Models...
r47 'dds' : 2000,
'jars' : 2000,
'usrp' : 2000,
'cgs' : 8080,
'abs' : 8080
}
Juan C. Espinoza
Actualizacion de templates y modelos base #263...
r2
Fiorella Quino
Se agrego tabla "Radar" y Estados del Radar...
r49 RADAR_STATES = (
(0, 'No connected'),
Fiorella Quino
Task #487: Operation. Views: radar_play y radar_stop. Models: RunningExperiment. Attributes: status. Methods: get_status(), status_color()...
r84 (1, 'Connected'),
Fiorella Quino
Se agrego tabla "Radar" y Estados del Radar...
r49 (2, 'Configured'),
(3, 'Running'),
(4, 'Scheduled'),
)
Juan C. Espinoza
Use of cards instead of tables in operation & experiment views...
r216
Fiorella Quino
main updated...
r162
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)
Fiorella Quino
main updated...
r162
Miguel Urco
Device model changed: ...
r9 name = models.CharField(max_length=40, default='')
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
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):
Fiorella Quino
main updated...
r162 return u'[{}]: {}'.format(self.device_type.name.upper(),
Juan C. Espinoza
- Improve display name for Devices & Configurations...
r121 self.name)
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):
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
Juan C. Espinoza
Update views and templates of main app...
r89 return reverse('url_device', args=[str(self.id)])
Fiorella Quino
main updated...
r162
Juan C. Espinoza
Add Change IP function for DDS Device...
r219 def change_ip(self, ip_address, mask, gateway, **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':
Juan C. Espinoza
Update RC control methods, add change_ip for RC, fix win_reference for sub-baudio...
r236 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
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':
payload = {'ip': ip_address,
'dns': kwargs.get('dns', '8.8.8.8'),
'gateway': gateway,
'subnet': mask}
req = requests.post(self.url('changeip'), data=payload)
try:
answer = req.json()
if answer['changeip']=='ok':
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)
tags = models.CharField(max_length=40)
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)
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
Export Campaign ...
r100 def parms_to_dict(self):
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 import json
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 parameters = {}
Fiorella Quino
Export Campaign. parms_to_dict() (mmain.models)...
r102 exp_parameters = {}
experiments = Experiment.objects.filter(campaign = self)
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign. parms_to_dict() (mmain.models)...
r102 i=1
for experiment in experiments:
exp_parameters['experiment-'+str(i)] = json.loads(experiment.parms_to_dict())
i += 1
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 parameters['experiments'] = exp_parameters
parameters['end_date'] = self.end_date.strftime("%Y-%m-%d")
parameters['start_date'] = self.start_date.strftime("%Y-%m-%d")
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 parameters['campaign'] = self.__str__()
Fiorella Quino
Import Experiment Function...
r108 parameters['tags'] =self.tags
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign. parms_to_dict() (mmain.models)...
r103 parameters = json.dumps(parameters, indent=2, sort_keys=False)
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 return parameters
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def import_from_file(self, fp):
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 import os, json
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 parms = {}
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 path, ext = os.path.splitext(fp.name)
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 if ext == '.json':
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 parms = json.loads(fp.read())
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 return parms
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)
configurations = Configuration.objects.filter(experiment = experiments)
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 if configurations:
for configuration in configurations:
configuration.delete()
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
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 for parms_exp in parms['experiments']:
location = Location.objects.get(name = parms['experiments'][parms_exp]['radar'])
new_exp = Experiment(
name = parms['experiments'][parms_exp]['experiment'],
location = location,
start_time = parms['experiments'][parms_exp]['start_time'],
end_time = parms['experiments'][parms_exp]['end_time'],
)
new_exp.save()
new_exp.dict_to_parms(parms['experiments'][parms_exp],CONF_MODELS)
new_exp.save()
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Campaign...
r110 self.name = parms['campaign']
self.start_date = parms['start_date']
self.end_date = parms['end_date']
self.tags = parms['tags']
Fiorella Quino
Import Campaign: dict_to_parms(self, parms, CONF_MODELS)(models.py), campaign_import (views.py)...
r109 self.experiments.add(new_exp)
Fiorella Quino
Import Campaign...
r110 self.save()
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 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
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)
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')
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
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:
return u'%s (template)' % (self.name)
else:
return u'%s' % (self.name)
Fiorella Quino
main updated...
r162
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
self.name = '{} [{:%Y/%m/%d}]'.format(self.name, datetime.now())
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
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
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 result = 2
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 confs = Configuration.objects.filter(experiment=self).order_by('device__device_type__sequence')
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 for i in range(0,len(confs)): #ABS-CGS-DDS-RC-JARS
if i==0:
for conf in confs:
if conf.device.device_type.name == 'abs':
conf.start_device()
break
if i==1:
for conf in confs:
if conf.device.device_type.name == 'cgs':
conf.start_device()
break
if i==2:
for conf in confs:
if conf.device.device_type.name == 'dds':
conf.start_device()
break
if i==3:
for conf in confs:
if conf.device.device_type.name == 'rc':
conf.start_device()
break
if i==4:
for conf in confs:
if conf.device.device_type.name == 'jars':
conf.start_device()
break
#if conf.start_device():
# result &= 2
#else:
# result &= 0
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 else:
result &= 0
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 return result
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
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
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 result = 1
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 confs = Configuration.objects.filter(experiment=self).order_by('-device__device_type__sequence')
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226 for i in range(0,len(confs)):
if i==0:
for conf in confs:
if conf.device.device_type.name == 'abs':
conf.stop_device()
break
if i==1:
for conf in confs:
if conf.device.device_type.name == 'jars':
conf.stop_device()
break
if i==2:
for conf in confs:
if conf.device.device_type.name == 'dds':
conf.stop_device()
break
if i==3:
for conf in confs:
if conf.device.device_type.name == 'cgs':
conf.stop_device()
break
if i==4:
for conf in confs:
if conf.device.device_type.name == 'rc':
conf.stop_device()
break
#result &= 1
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 else:
result &= 0
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
return result
Fiorella Quino
main updated...
r162
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
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 confs = Configuration.objects.filter(experiment=self)
Fiorella Quino
start() and stop() experiment functions have been modificated...
r226
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
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 if self.status<>3:
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:
color = "info"
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:
color = "warning"
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
Fiorella Quino
Export Campaign ...
r100 import json
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 configurations = Configuration.objects.filter(experiment=self)
conf_parameters = {}
parameters={}
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 for configuration in configurations:
if 'cgs' in configuration.device.device_type.name:
conf_parameters['cgs'] = configuration.parms_to_dict()
if 'dds' in configuration.device.device_type.name:
conf_parameters['dds'] = configuration.parms_to_dict()
if 'rc' in configuration.device.device_type.name:
conf_parameters['rc'] = configuration.parms_to_dict()
if 'jars' in configuration.device.device_type.name:
conf_parameters['jars'] = configuration.parms_to_dict()
if 'usrp' in configuration.device.device_type.name:
conf_parameters['usrp'] = configuration.parms_to_dict()
if 'abs' in configuration.device.device_type.name:
conf_parameters['abs'] = configuration.parms_to_dict()
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 parameters['configurations'] = conf_parameters
Fiorella Quino
Import Experiment Function...
r108 parameters['end_time'] = self.end_time.strftime("%H:%M:%S")
parameters['start_time'] = self.start_time.strftime("%H:%M:%S")
Fiorella Quino
Bug "experiment.radar.name -> experiment.radar_system.name"...
r146 parameters['radar'] = self.radar_system.name
Fiorella Quino
Import Experiment Function...
r108 parameters['experiment'] = self.name
Fiorella Quino
Export Campaign ...
r100 parameters = json.dumps(parameters, indent=2)
Fiorella Quino
main updated...
r162
Fiorella Quino
Export Campaign ...
r100 return parameters
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def import_from_file(self, fp):
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 import os, json
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 parms = {}
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 path, ext = os.path.splitext(fp.name)
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 if ext == '.json':
Juan C. Espinoza
Update code for django 1.10, python 3 and latest third party packages, review operation view ...
r172 parms = json.loads(fp.read().decode('utf-8'))
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 return parms
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 def dict_to_parms(self, parms, CONF_MODELS):
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 configurations = Configuration.objects.filter(experiment=self)
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 if configurations:
for configuration in configurations:
configuration.delete()
Fiorella Quino
main updated...
r162
Fiorella Quino
Import Experiment Function...
r108 for conf_type in parms['configurations']:
#--For ABS Device:
#--For USRP Device:
#--For JARS Device:
Juan C. Espinoza
sync repo...
r157 if conf_type == 'jars':
device = get_object_or_404(Device, pk=parms['configurations']['jars']['device_id'])
DevConfModel = CONF_MODELS[conf_type]
confjars_form = DevConfModel(
experiment = self,
name = 'JARS',
device=device,
)
confjars_form.dict_to_parms(parms['configurations']['jars'])
confjars_form.save()
Fiorella Quino
Import Experiment Function...
r108 #--For RC Device:
if conf_type == 'rc':
device = get_object_or_404(Device, pk=parms['configurations']['rc']['device_id'])
DevConfModel = CONF_MODELS[conf_type]
confrc_form = DevConfModel(
experiment = self,
name = 'RC',
device=device,
)
confrc_form.dict_to_parms(parms['configurations']['rc'])
confrc_form.save()
#--For DDS Device:
if conf_type == 'dds':
device = get_object_or_404(Device, pk=parms['configurations']['dds']['device_id'])
DevConfModel = CONF_MODELS[conf_type]
confdds_form = DevConfModel(
experiment = self,
name = 'DDS',
device=device,
)
confdds_form.dict_to_parms(parms['configurations']['dds'])
confdds_form.save()
#--For CGS Device:
if conf_type == 'cgs':
device = get_object_or_404(Device, pk=parms['configurations']['cgs']['device_id'])
DevConfModel = CONF_MODELS[conf_type]
confcgs_form = DevConfModel(
experiment = self,
name = 'CGS',
device=device,
)
confcgs_form.dict_to_parms(parms['configurations']['cgs'])
confcgs_form.save()
Fiorella Quino
main updated...
r162
location = Location.objects.get(name = parms['radar'])
Fiorella Quino
Import Campaign...
r110 self.name = parms['experiment']
self.location = location
self.start_time = parms['start_time']
self.end_time = parms['end_time']
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
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
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)
Fiorella Quino
main updated...
r162
Miguel Urco
template attribute added to RadarSys Models...
r47 name = models.CharField(verbose_name="Configuration Name", max_length=40, default='')
Fiorella Quino
main updated...
r162
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)
Fiorella Quino
main updated...
r162
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)
Fiorella Quino
main updated...
r162
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)
Fiorella Quino
main updated...
r162
Miguel Urco
models are passed as instances to templates (dictionaries are not used anymore)...
r22 parameters = models.TextField(default='{}')
Fiorella Quino
main updated...
r162
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'
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
Improve Search view (filters and paginator added), add base_list template, delete unused templates...
r138 device = '{}:'.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:
Fiorella Quino
main updated...
r162 device = '{} MIXED:'.format(self.device.device_type.name.upper())
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(device, self.name)
else:
return u'{} {}'.format(device, self.name)
Juan C. Espinoza
- Update rc app...
r79
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
Miguel Urco
Models changed:...
r53 parameters = {}
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 for key in self.__dict__.keys():
parameters[key] = getattr(self, key)
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 return parameters
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
Miguel Urco
Models changed:...
r53 def dict_to_parms(self, parameters):
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 if type(parameters) != type({}):
return
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 for key in parameters.keys():
setattr(self, key, parameters[key])
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 def export_to_file(self, format="json"):
Fiorella Quino
main updated...
r162
Miguel Urco
Models changed:...
r53 import json
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 content_type = ''
Fiorella Quino
main updated...
r162
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'
Miguel Urco
DDS commands working...
r57 filename = '%s_%s.bin' %(self.device.device_type.name, self.name)
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
Miguel Urco
DDS commands working...
r57 def import_from_file(self, fp):
Fiorella Quino
main updated...
r162
Miguel Urco
DDS commands working...
r57 import os, json
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
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
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)])