|
|
from __future__ import absolute_import
|
|
|
|
|
|
from apps.main.models import Configuration
|
|
|
from .models import ABSBeam
|
|
|
import json
|
|
|
from datetime import timedelta, datetime
|
|
|
from celery.task import task
|
|
|
|
|
|
@task(name='task_change_beam')
|
|
|
def task_change_beam(id_conf):
|
|
|
|
|
|
abs_conf = Configuration.objects.get(pk=id_conf)
|
|
|
beams_list = ABSBeam.objects.filter(abs_conf=abs_conf)
|
|
|
active_beam = json.loads(abs_conf.active_beam)
|
|
|
|
|
|
run_every = timedelta(seconds=abs_conf.operation_value)
|
|
|
now = datetime.utcnow()
|
|
|
date = now + run_every
|
|
|
|
|
|
if abs_conf.device.status != 3:
|
|
|
return abs_conf.device.status
|
|
|
|
|
|
if abs_conf.operation_mode == 0: #Manual Mode
|
|
|
return 1
|
|
|
|
|
|
if active_beam:
|
|
|
current_beam = ABSBeam.objects.get(pk=active_beam['active_beam'])
|
|
|
i=0
|
|
|
for beam in beams_list:
|
|
|
if beam == current_beam:
|
|
|
i+=1
|
|
|
break
|
|
|
i+=1
|
|
|
|
|
|
if i < len(beams_list):
|
|
|
next_beam = beams_list[i]
|
|
|
abs_conf.send_beam_num(i+1)
|
|
|
next_beam.set_as_activebeam()
|
|
|
task = task_change_beam.apply_async((abs_conf.pk,), eta=date)
|
|
|
print next_beam
|
|
|
else:
|
|
|
abs_conf.send_beam_num(1)
|
|
|
beams_list[0].set_as_activebeam()
|
|
|
task = task_change_beam.apply_async((abs_conf.pk,), eta=date)
|
|
|
print beams_list[0]
|
|
|
i=0
|
|
|
|
|
|
else:
|
|
|
abs_conf.send_beam_num(1)
|
|
|
beams_list[0].set_as_activebeam()
|
|
|
task = task_change_beam.apply_async((abs_conf.pk,), eta=date)
|
|
|
|
|
|
|
|
|
return 2
|
|
|
|
|
|
|
|
|
@task(name='status_absdevice')
|
|
|
def status_absdevice(id_conf):
|
|
|
|
|
|
abs_conf = Configuration.objects.get(pk=id_conf)
|
|
|
abs_conf.absmodule_status()
|
|
|
|
|
|
return
|
|
|
|