12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from .model_handler import PartAttachmentHandler, EcnSignOffHandler, EcnHandler, PartHandler
- from .models import Part, ECN
- from django.forms import model_to_dict
- from Info.func import send_message
- from django.db import transaction
- def part_info(part: Part) -> list:
- part_attachments = PartAttachmentHandler.search_by_part(part)
- attachment_list = []
- for p_a in part_attachments:
- attachment = {'id': p_a.id, 'url': p_a.url,
- 'display_name': p_a.display_name}
- attachment_list.append(attachment)
- part_dict = model_to_dict(part)
-
- try:
- part_dict['sub_parts'] = eval(part_dict['sub_parts'])
- except:
- part_dict['sub_parts'] = []
- part_dict['attachment'] = attachment_list
- vendor_detail = {}
- if part.vendor:
- vendor_detail = {
- 'id': part.vendor.id,
- 'code': part.vendor.code,
- 'name': part.vendor.name,
- }
- part_dict['vendor_detail'] = vendor_detail
-
- return part_dict
- @transaction.atomic
- def overall_ecn_signoff(ecn_id: int) -> bool:
- # 检索是否所有的签核者都签核了
- ecn = EcnHandler.get_by_id(ecn_id)
- all_sign_off = EcnSignOffHandler.search_by_ecn(ecn)
- ecn_all_approved = True
- for s_o in all_sign_off:
- if s_o.status != '批准':
- ecn_all_approved = False
- if ecn_all_approved:
- ecn.status = '批准'
- # todo 检索ECO对应的料号,把最新版本更新为released,旧的版本更新为expired
- ecn.target_part.life_cycle = 'released'
- PartHandler.expire_old_version(ecn.target_part)
- ecn.save()
- send_message(from_user=None, to_user=ecn.owner, title='ECN'+ecn.number+'签核完成')
-
- return ecn_all_approved
|