func.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from .model_handler import PartAttachmentHandler, EcnSignOffHandler, EcnHandler, PartHandler
  2. from .models import Part, ECN
  3. from django.forms import model_to_dict
  4. from Info.func import send_message
  5. from django.db import transaction
  6. def part_info(part: Part) -> list:
  7. part_attachments = PartAttachmentHandler.search_by_part(part)
  8. attachment_list = []
  9. for p_a in part_attachments:
  10. attachment = {'id': p_a.id, 'url': p_a.url,
  11. 'display_name': p_a.display_name}
  12. attachment_list.append(attachment)
  13. part_dict = model_to_dict(part)
  14. try:
  15. part_dict['sub_parts'] = eval(part_dict['sub_parts'])
  16. except:
  17. part_dict['sub_parts'] = []
  18. part_dict['attachment'] = attachment_list
  19. vendor_detail = {}
  20. if part.vendor:
  21. vendor_detail = {
  22. 'id': part.vendor.id,
  23. 'code': part.vendor.code,
  24. 'name': part.vendor.name,
  25. }
  26. part_dict['vendor_detail'] = vendor_detail
  27. return part_dict
  28. @transaction.atomic
  29. def overall_ecn_signoff(ecn_id: int) -> bool:
  30. # 检索是否所有的签核者都签核了
  31. ecn = EcnHandler.get_by_id(ecn_id)
  32. all_sign_off = EcnSignOffHandler.search_by_ecn(ecn)
  33. ecn_all_approved = True
  34. for s_o in all_sign_off:
  35. if s_o.status != '批准':
  36. ecn_all_approved = False
  37. if ecn_all_approved:
  38. ecn.status = '批准'
  39. # todo 检索ECO对应的料号,把最新版本更新为released,旧的版本更新为expired
  40. ecn.target_part.life_cycle = 'released'
  41. PartHandler.expire_old_version(ecn.target_part)
  42. ecn.save()
  43. send_message(from_user=None, to_user=ecn.owner, title='ECN'+ecn.number+'签核完成')
  44. return ecn_all_approved