155 lines
5.0 KiB
Python
155 lines
5.0 KiB
Python
|
|
from apps.wf.models import Ticket
|
|
# TicketFlow, Transition, Workflow, CustomField, State,
|
|
from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord, Publicity, MroomBooking, MroomSlot, PatentInfo
|
|
from rest_framework.exceptions import ParseError
|
|
|
|
|
|
def seal_submit_validate(ins: LendingSeal):
|
|
if ins.submit_time:
|
|
raise ParseError('该日志已提交!')
|
|
if ins.mtask and ins.mtask.state == LendingSeal.MTASK_STOP:
|
|
raise ParseError('该任务已停止!')
|
|
|
|
def bind_mroombooking(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = MroomBooking.objects.get(id=new_ticket_data['t_id'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'mroombooking',
|
|
't_id': ins.id,
|
|
})
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save()
|
|
|
|
def mroombooking_reject(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = MroomBooking.objects.get(id=new_ticket_data['t_id'])
|
|
MroomSlot.objects.filter(booking=ins).update(is_inuse=False)
|
|
|
|
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
|
|
ins.actual_return_date = None
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'LendingSeal',
|
|
't_id': ins.id,
|
|
})
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save()
|
|
# 如果驳回到开始状态
|
|
|
|
def lending_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
|
|
try:
|
|
obj = LendingSeal.objects.get(id=new_ticket_data['t_id'])
|
|
except LendingSeal.DoesNotExist:
|
|
raise ParseError("Publicity t_id 不存在")
|
|
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
|
|
|
|
for k, v in data_save.items():
|
|
setattr(obj, k, v)
|
|
obj.save()
|
|
|
|
|
|
def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = Vehicle.objects.get(id=new_ticket_data['t_id'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'Vehicle',
|
|
't_id': ins.id,
|
|
})
|
|
ins.actual_km = None
|
|
ins.end_time = None
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save()
|
|
|
|
def vehicle_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
|
|
try:
|
|
obj = Vehicle.objects.get(id=new_ticket_data['t_id'])
|
|
except Vehicle.DoesNotExist:
|
|
raise ParseError("Publicity t_id 不存在")
|
|
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
|
|
|
|
for k, v in data_save.items():
|
|
setattr(obj, k, v)
|
|
obj.save()
|
|
|
|
def bind_file(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = BorrowRecord.objects.get(id=new_ticket_data['t_id'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'BorrowRecord',
|
|
't_id': ins.id,
|
|
})
|
|
ins.return_date = None
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save()
|
|
|
|
def file_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
|
|
try:
|
|
obj = BorrowRecord.objects.get(id=new_ticket_data['t_id'])
|
|
except BorrowRecord.DoesNotExist:
|
|
raise ParseError("Publicity t_id 不存在")
|
|
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
|
|
|
|
for k, v in data_save.items():
|
|
setattr(obj, k, v)
|
|
obj.save()
|
|
|
|
def bind_publicity(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = Publicity.objects.get(id=new_ticket_data['t_id'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'publicity',
|
|
't_id': ins.id,
|
|
})
|
|
ins.dept_opinion = None
|
|
ins.secret_period = None
|
|
ins.dept_opinion_review = None
|
|
ins.publicity_opinion = None
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save()
|
|
|
|
def save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
|
|
try:
|
|
obj = Publicity.objects.get(id=new_ticket_data['t_id'])
|
|
except Publicity.DoesNotExist:
|
|
raise ParseError("Publicity t_id 不存在")
|
|
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
|
|
|
|
for k, v in data_save.items():
|
|
setattr(obj, k, v)
|
|
obj.save()
|
|
|
|
|
|
def bind_patent(ticket: Ticket, transition, new_ticket_data: dict):
|
|
ins = PatentInfo.objects.get(id=new_ticket_data['t_id'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
't_model': 'patent',
|
|
't_id': ins.id,
|
|
})
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = ins.create_by
|
|
ticket.save()
|
|
if ins.ticket is None:
|
|
ins.ticket = ticket
|
|
ins.save() |