123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- from django.http import HttpResponse, JsonResponse, QueryDict
- from django.views.decorators.csrf import csrf_exempt
- from django.forms import model_to_dict
- from .model_handler import PartAttachmentHandler, PartHandler, VendorHandler, EcnHandler, BOMsettingHandler
- from .models import PartAttachment, VendorAttachment
- from Info.model_handler import CompanyHandler, UserHandler
- from Info.func import file_upload, get_file
- from .func import part_info
- def pn_check(request):
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- result = {'code': 1, 'content': None}
- if request.method == 'GET':
- part = PartHandler.exist_pn(request.GET.get('part_number'), company)
- if part:
- result = {'code': 1, 'content': "这个料号已经使用了。"}
- else:
- result = {'code': 0, 'content': None}
- return JsonResponse(result)
- @csrf_exempt
- def file(request):
- result = {'code': 1, 'content': None}
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- user = UserHandler.get_by_id(request.session.get('user_id'))
- if request.method == 'GET':
- return get_file(request)
- if request.method == 'POST':
- upload_result = file_upload(request, ['BOM', 'part'])
- if upload_result['code'] == 0:
- p_attachment = PartAttachment()
- p_attachment.company = company
- p_attachment.creator = user
- p_attachment.display_name = upload_result['target_file_name']
- p_attachment.url = upload_result['target_file_path'] + \
- upload_result['target_file_name']
- p_attachment.save()
- content = {'id': p_attachment.id, 'url': p_attachment.url,
- 'display_name': p_attachment.display_name}
- result['code'] = 0
- result['content'] = content
- else:
- result['content'] = '上传失败'
- return JsonResponse(result)
- if request.method == 'DELETE':
- post_data = eval(request.body)
- if PartAttachmentHandler.del_by_id(post_data['delete_attachment_id']):
- result = {'code': 0, 'content': None}
- else:
- result = {'code': 1, 'content': '删除失败'}
- return JsonResponse(result)
- def search_part_number(request):
- if request.method == 'GET':
- result = {'code': 1, 'content': None, 'msg': None}
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- part_number_keyword = request.GET.get('part_number')
- parts = PartHandler.search_like_pn(part_number_keyword, company)
- part_list = []
- for p in parts:
- part_list.append(model_to_dict(p))
- result['code'] = 0
- result['content'] = part_list
- return JsonResponse(result)
- def get_draft_part(request): # 读取draft状态下的part数据
- if request.method == 'GET':
- result = {'code': 1, 'content': None, 'msg': None}
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- part = PartHandler.get_by_id(request.GET.get('edit_id'))
- if part.company != company: # 校验part归属问题
- result = {'code': 1, 'content': None,
- 'msg': 'part is not for this company'}
- return JsonResponse(result)
- if part:
- # 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)
- # part_dict['sub_parts'] = eval(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
- part_dict = part_info(part)
- result = {'code': 0, 'content': part_dict, 'msg': 'success'}
- return JsonResponse(result)
- def ecn_part_detail(request): # 读取ECN具体签核料号的信息
- if request.method == 'GET':
- result = {'code': 1, 'content': None, 'msg': None}
- ECN_id = request.GET.get('ecn_id')
- if ECN_id:
- ecn = EcnHandler.get_by_id(ECN_id)
- company = CompanyHandler.get_by_id(
- request.session.get('company_id'))
- if ecn.target_part.company != company: # 校验part归属问题
- result = {'code': 1, 'content': None,
- 'msg': 'part is not for this company'}
- return JsonResponse(result)
- content = {
- 'ecn_id': ecn.id,
- 'part': part_info(ecn.target_part)
- }
- result['content'] = content
- result['code'] = 0
- else:
- result['msg'] = 'ECN没有找到'
- return JsonResponse(result)
- @csrf_exempt
- def part_EOL(request):
- user = UserHandler.get_by_id(request.session.get('user_id'))
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- result = {'code': 1, 'content': None, 'msg': None}
- if request.method == 'POST':
- post_data = eval(request.body)
- EOL_pn = post_data['EOL_pn']
- part = PartHandler.get_by_pn(EOL_pn, company)
- all_ver_parts = PartHandler.all_ver_by_pn(EOL_pn, company)
- if user == part.owner:
- # 停用released料号
- part.life_cycle = 'EOL'
- part.save()
- # 删除签核中和草稿中的料号
- for p in all_ver_parts:
- if p.life_cycle in ['draft', 'sign-off']:
- p.delete()
- result['msg'] = '料号{}停用成功'.format(EOL_pn)
- result['code'] = 0
- # 会直接删除料号相关的,签核中的ECN。关系是on_delete.cascade
- # 会直接删除料号相关签核中的签核。关系是on_delete.cascade
- else:
- result['msg'] = '料号停用失败'
- result['content'] = '非料号用户本人'
- return JsonResponse(result)
- def attachment_maxsize(request): # 获取BOM附件大小限制
- # user = UserHandler.get_by_id(request.session.get('user_id'))
- company = CompanyHandler.get_by_id(request.session.get('company_id'))
- result = {'code': 1, 'content': None, 'msg': None}
- attachment_maxsize = BOMsettingHandler.get_attachment_maxsize(company)
- if attachment_maxsize:
- result['code'] = 0
- result['content'] = {
- 'company_id': company.id,
- 'attachment_maxsize': attachment_maxsize
- }
- return JsonResponse(result)
|