# -*- coding: utf-8 -*- import json import base64 import logging import os from datetime import date, timedelta from odoo import http from odoo.http import request class Sf_Mrs_Connect(http.Controller): @http.route('/api/cnc_processing/create', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False, cors="*") def get_cnc_processing_create(self, **kw): """ 获取mrs下发的编程单 :param kw: :return: """ logging.info('get_cnc_processing_create:%s' % kw) try: datas = request.httprequest.data ret = json.loads(datas) ret = json.loads(ret['result']) for obj in ret: cnc = request.env['sf.cnc.processing'].with_user( request.env.ref("base.user_admin")).cnc_processing_create(obj) # # 从ftp拉取对应的文件 model_code = cnc.workorder_id.product_id.barcode processing_panel = cnc.workorder_id.processing_panel logging.info('model_code:%s' % model_code) server_dir = cnc.with_user(request.env.ref("base.user_admin")).download_file_tmp(model_code, processing_panel) # cnc_file_path = os.path.join('/', server_dir, cnc.program_name + '.nc') # logging.info('cnc_file_path:%s' % cnc_file_path) # cnc.with_user(request.env.ref("base.user_admin")).write_file(cnc_file_path, cnc) logging.info('server_dir:%s' % server_dir) for root, dirs, files in os.walk(server_dir): for f in files: logging.info('f:%s' % f) logging.info('f[0]:%s' % f.split('.')[0]) if os.path.splitext(f)[1] == ".pdf": full_path = os.path.join(server_dir, root, f) logging.info('pdf:%s' % full_path) if full_path != False: if not cnc.workorder_id.cnc_worksheet: cnc.workorder_id.cnc_worksheet = base64.b64encode(open(full_path, 'rb').read()) else: logging.info('break:%s' % 'break') continue else: logging.info('cnc.program_name:%s' % cnc.program_name) if cnc.program_name == f.split('.')[0]: logging.info('f[0]:%s' % f[0]) cnc_file_path = os.path.join(server_dir, root, f) logging.info('cnc_file_path:%s' % cnc_file_path) cnc.with_user(request.env.ref("base.user_admin")).write_file(cnc_file_path, cnc) else: continue except Exception as e: logging.info('get_cnc_processing_create error:%s' % e)