##// END OF EJS Templates
Task #961: Actualizar status de modulos ABS con subproceso...
Task #961: Actualizar status de modulos ABS con subproceso git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@284 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r249:de9b9dba93b1
r258:0e34c33380c6
Show More
models.py
232 lines | 6.6 KiB | text/x-python | PythonLexer
from django.db import models
from apps.main.models import Configuration
from django.core.validators import MinValueValidator, MaxValueValidator
from .files import read_json_file
import requests
# Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)]
class CGSConfiguration(Configuration):
freq0 = models.PositiveIntegerField(verbose_name='Frequency 0 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
freq1 = models.PositiveIntegerField(verbose_name='Frequency 1 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
freq2 = models.PositiveIntegerField(verbose_name='Frequency 2 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
freq3 = models.PositiveIntegerField(verbose_name='Frequency 3 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
def verify_frequencies(self):
return True
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
def parms_to_dict(self):
parameters = {}
parameters['device_id'] = self.device.id
parameters['device_type'] = self.device.device_type.name
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
def dict_to_parms(self, parameters):
self.freq0 = parameters['freq0']
self.freq1 = parameters['freq1']
self.freq2 = parameters['freq2']
self.freq3 = parameters['freq3']
def status_device(self):
ip=self.device.ip_address
port=self.device.port_address
route = "http://" + str(ip) + ":" + str(port) + "/status/"
try:
r = requests.get(route, timeout=0.7)
except Exception as e:
self.device.status = 0
self.device.save()
self.message = 'Could not read CGS status: ' + str(e)
return False
response = r.json()
self.device.status = response['status']
self.message = response['message']
self.device.save()
if response['components_status']==0:
return False
return True
def start_device(self):
ip=self.device.ip_address
port=self.device.port_address
#---Device must be configured
if not self.device.status == 2:
self.message = 'CGS Device must be configured.'
return False
#---Frequencies from form
post_data = self.parms_to_dict()
route = "http://" + str(ip) + ":" + str(port) + "/write/"
try:
r = requests.post(route, post_data, timeout=0.7)
except Exception as e:
self.message = "Could not start CGS device. "+str(e)
return False
response = r.json()
if response['status']==1:
self.device.status = 1
self.device.save()
self.message = response['message']
return False
self.device.status = response['status']
self.device.save()
self.message = response['message']
return True
def stop_device(self):
ip=self.device.ip_address
port=self.device.port_address
if self.device.status == 2: #Configured
self.message = 'CGS device is already stopped.'
return False
post_data = {"freq0":0, "freq1":0, "freq2":0, "freq3":0}
route = "http://" + str(ip) + ":" + str(port) + "/write/"
try:
r = requests.post(route, post_data, timeout=0.7)
except Exception as e:
self.message = "Could not write CGS parameters. "+str(e)
self.device.status = 0
self.device.save()
return False
response = r.json()
status = response['status']
if status == 1:
self.device.status = status
self.device.save()
self.message = 'Could not stop CGS device.'
return False
self.message = 'CGS device has been stopped successfully.'
self.device.status = 2
self.device.save()
return True
def read_device(self):
ip=self.device.ip_address
port=self.device.port_address
route = "http://" + str(ip) + ":" + str(port) + "/read/"
try:
frequencies = requests.get(route,timeout=0.7)
except:
self.message = "Could not read CGS parameters from this device"
return None
frequencies = frequencies.json()
if frequencies:
frequencies = frequencies.get("Frequencies")
freq0 = frequencies.get("freq0")
freq1 = frequencies.get("freq1")
freq2 = frequencies.get("freq2")
freq3 = frequencies.get("freq3")
parms = {'freq0': freq0,
'freq1': freq1,
'freq2': freq2,
'freq3': freq3}
self.message = "CGS parameters have been successfully read"
return parms
else:
self.message = "Error reading CGS parameters"
return None
def write_device(self):
ip=self.device.ip_address
port=self.device.port_address
#---Frequencies from form
frequencies = self.parms_to_dict()
post_data = {}
for data in frequencies:
if data in ['freq0','freq1','freq2','freq3']:
post_data[data] = frequencies[data]
route = "http://" + str(ip) + ":" + str(port) + "/write/"
try:
r = requests.post(route, post_data, timeout=0.7)
except:
self.message = "Could not write CGS parameters"
self.device.status = 0
self.device.save()
return False
response = r.json()
self.message = response['message']
self.device.status = response['status']
self.device.save()
if self.device.status==1:
return False
return True
class Meta:
db_table = 'cgs_configurations'