models.py
182 lines
| 5.1 KiB
| text/x-python
|
PythonLexer
|
r0 | from django.db import models | ||
|
r6 | from apps.main.models import Configuration | ||
|
r4 | from django.core.validators import MinValueValidator, MaxValueValidator | ||
from apps.main.models import Device, Experiment | ||||
|
r42 | from files import read_json_file | ||
|
r43 | # Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)] | ||
|
r4 | |||
|
r6 | class CGSConfiguration(Configuration): | ||
|
r42 | |||
|
r98 | freq0 = models.PositiveIntegerField(verbose_name='Frequency 0',validators=[MaxValueValidator(450e6)], default = 60) | ||
freq1 = models.PositiveIntegerField(verbose_name='Frequency 1',validators=[MaxValueValidator(450e6)], default = 60) | ||||
freq2 = models.PositiveIntegerField(verbose_name='Frequency 2',validators=[MaxValueValidator(450e6)], default = 60) | ||||
freq3 = models.PositiveIntegerField(verbose_name='Frequency 3',validators=[MaxValueValidator(450e6)], default = 60) | ||||
|
r31 | |||
def verify_frequencies(self): | ||||
return True | ||||
|
r42 | |||
def update_from_file(self, fp): | ||||
kwargs = read_json_file(fp) | ||||
if not kwargs: | ||||
return False | ||||
self.freq0 = kwargs['freq0'] | ||||
self.freq1 = kwargs['freq1'] | ||||
self.freq2 = kwargs['freq2'] | ||||
self.freq3 = kwargs['freq3'] | ||||
return True | ||||
|
r58 | |||
def parms_to_dict(self): | ||||
parameters = {} | ||||
|
r108 | parameters['device_id'] = self.device.id | ||
|
r58 | if self.freq0 == None or self.freq0 == '': | ||
parameters['freq0'] = 0 | ||||
else: | ||||
parameters['freq0'] = self.freq0 | ||||
if self.freq1 == None or self.freq1 == '': | ||||
parameters['freq1'] = 0 | ||||
else: | ||||
parameters['freq1'] = self.freq1 | ||||
if self.freq2 == None or self.freq2 == '': | ||||
parameters['freq2'] = 0 | ||||
else: | ||||
parameters['freq2'] = self.freq2 | ||||
if self.freq3 == None or self.freq3 == '': | ||||
parameters['freq3'] = 0 | ||||
else: | ||||
parameters['freq3'] = self.freq3 | ||||
return parameters | ||||
|
r108 | def dict_to_parms(self, parameters): | ||
self.freq0 = parameters['freq0'] | ||||
self.freq1 = parameters['freq1'] | ||||
self.freq2 = parameters['freq2'] | ||||
self.freq3 = parameters['freq3'] | ||||
|
r59 | def status_device(self): | ||
import requests | ||||
ip=self.device.ip_address | ||||
port=self.device.port_address | ||||
route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" | ||||
try: | ||||
|
r90 | r = requests.get(route,timeout=0.5) | ||
|
r59 | except: | ||
self.device.status = 0 | ||||
self.device.save() | ||||
return self.device.status | ||||
response = str(r.text) | ||||
response = response.split(";") | ||||
icon = response[0] | ||||
status = response[-1] | ||||
print icon, status | ||||
#"icon" could be: "alert" or "okay" | ||||
if "alert" in icon: | ||||
if "Starting Up" in status: #No Esta conectado | ||||
self.device.status = 0 | ||||
else: | ||||
self.device.status = 1 | ||||
elif "okay" in icon: | ||||
self.device.status = 3 | ||||
else: | ||||
self.device.status = 1 | ||||
self.message = status | ||||
self.device.save() | ||||
return self.device.status | ||||
def read_device(self): | ||||
import requests | ||||
ip=self.device.ip_address | ||||
port=self.device.port_address | ||||
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | ||||
try: | ||||
|
r90 | frequencies = requests.get(route,timeout=0.5) | ||
|
r59 | |||
except: | ||||
self.message = "Could not read CGS parameters from this device" | ||||
return None | ||||
frequencies = frequencies.json() | ||||
frequencies = frequencies.get("Frecuencias") | ||||
f0 = frequencies.get("f0") | ||||
f1 = frequencies.get("f1") | ||||
f2 = frequencies.get("f2") | ||||
f3 = frequencies.get("f3") | ||||
parms = {'freq0': f0, | ||||
'freq1': f1, | ||||
'freq2': f2, | ||||
'freq3': f3} | ||||
self.message = "" | ||||
return parms | ||||
def write_device(self): | ||||
import requests | ||||
ip=self.device.ip_address | ||||
port=self.device.port_address | ||||
#---Frequencies from form | ||||
f0 = self.freq0 | ||||
f1 = self.freq1 | ||||
f2 = self.freq2 | ||||
f3 = self.freq3 | ||||
post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} | ||||
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | ||||
try: | ||||
|
r90 | r = requests.post(route, post_data, timeout=0.5) | ||
|
r59 | except: | ||
self.message = "Could not write CGS parameters" | ||||
return None | ||||
text = r.text | ||||
text = text.split(',') | ||||
if len(text)>1: | ||||
title = text[0] | ||||
status = text[1] | ||||
if title == "okay": | ||||
self.message = status | ||||
return 3 | ||||
else: | ||||
self.message = title + ", " + status | ||||
return 1 | ||||
return 1 | ||||
|
r6 | class Meta: | ||
db_table = 'cgs_configurations' | ||||