192 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			6.3 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, Papersecret
 | |
| 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()
 | |
| 
 | |
| def patent_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | |
|     try:
 | |
|         obj = PatentInfo.objects.get(id=new_ticket_data['t_id'])
 | |
|     except PatentInfo.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 paperse_patent(ticket: Ticket, transition, new_ticket_data: dict):
 | |
|     ins = Papersecret.objects.get(id=new_ticket_data['t_id'])
 | |
|     ticket_data = ticket.ticket_data
 | |
|     ticket_data.update({
 | |
|         't_model': 'paperse',
 | |
|         '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 paperse_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | |
|     try:
 | |
|         obj = Papersecret.objects.get(id=new_ticket_data['t_id'])
 | |
|     except Papersecret.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() |