factory/apps/opm/tasks.py

45 lines
1.3 KiB
Python

# Create your tasks here
from __future__ import absolute_import, unicode_literals
from apps.opm.models import Operation, Opl
from apps.opm.services import give_perm_by_opl
from apps.utils.task import CustomTask
from celery import shared_task
from apps.wf.models import State, Ticket
@shared_task(base=CustomTask)
def opl_end(ticket_id):
"""
作业关闭时执行
"""
ticket = Ticket.objects.get(id=ticket_id)
operation = ticket.opl.operation
opls = Opl.objects.filter(operation=operation)
opls.filter(ticket=None).delete() # 删除无用许可证
states = opls.values_list('ticket__state__type', flat=True)
if 0 in states or 1 in states:
pass
else:
operation.state = Operation.OP_CLOSE
operation.save()
@shared_task(base=CustomTask)
def opl_audit_start(ticket_id):
operation = Opl.objects.get(ticket__id=ticket_id).operation
if operation.state == Operation.OP_CREATE:
operation.state = Operation.OP_AUDIT
operation.save()
@shared_task(base=CustomTask)
def opl_audit_end(ticket_id):
opl = Opl.objects.get(ticket__id=ticket_id)
operation = opl.operation
if operation.state == Operation.OP_AUDIT:
operation.state = Operation.OP_WORK
operation.save()
# 授予区域或围栏权限
give_perm_by_opl(opl)