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