tasks.py
63 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
|
r202 | from __future__ import absolute_import | ||
|
r204 | from apps.main.models import Configuration | ||
from .models import ABSBeam | ||||
import json | ||||
from datetime import timedelta, datetime | ||||
from celery.task import task | ||||
|
r202 | |||
|
r205 | @task(name='task_change_beam') | ||
|
r204 | def task_change_beam(id_conf): | ||
|
r202 | |||
|
r204 | 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 | ||||
|
r205 | if abs_conf.device.status != 3: | ||
return abs_conf.device.status | ||||
|
r204 | 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) | ||||
|
r205 | print beams_list[0] | ||
|
r204 | 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 | ||||
|
r258 | |||
@task(name='status_absdevice') | ||||
def status_absdevice(id_conf): | ||||
abs_conf = Configuration.objects.get(pk=id_conf) | ||||
abs_conf.absmodule_status() | ||||
return | ||||