从ftp获取cnc程序文件

This commit is contained in:
jinling.yang
2022-11-30 11:25:37 +08:00
parent d6321bcb26
commit 8fce929022
5 changed files with 80 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ 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,
@http.route('/api/cnc_processing/create', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
cors="*")
def get_cnc_processing_create(self, **kw):
"""
@@ -22,6 +22,10 @@ class Sf_Mrs_Connect(http.Controller):
ret = json.loads(datas)
ret = json.loads(ret['result'])
for obj in ret:
request.env['sf.cnc.processing'].with_user(request.env.ref("base.user_admin")).CNCprocessing_create(obj)
cnc = request.env['sf.cnc.processing'].with_user(request.env.ref("base.user_admin")).CNCprocessing_create(obj)
# 从ftp拉取对应的文件
model_code = cnc.workorder_id.product_id.barcode
processing_panel = cnc.workorder_id.processing_panel
cnc.with_user(request.env.ref("base.user_admin")).download_file_tmp(model_code, processing_panel)
except Exception as e:
logging.info('get_cnc_processing_create error:%s' % e)

View File

@@ -1,3 +1,4 @@
from . import ftp_operate
from . import res_config_setting
from . import sync_common

View File

@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
import os
import posixpath
from odoo.modules import get_resource_path
from ftplib import FTP
import logging
# FTP接口类
class FtpController():
'''
这是ftp接口类在类初始化的时候就连接了ftp服务器能否成功连接有反馈。
类中定义了两个接口:上传接口和删除接口
'''
ftp = FTP()
def __init__(self, host="192.168.50.202", port=21, username="ftpuser", password="123456"):
try:
self.ftp.connect(host, port)
self.ftp.login(username, password)
logging.info("连接: %s" % 111111)
except:
logging.info("连接失败: ")
# 下载目录下的文件
def download_file_tree(self, remotepath, serverdir):
if not os.path.exists(serverdir):
os.makedirs(serverdir)
logging.info("remotepath: %s" % remotepath)
self.ftp.cwd(remotepath)
logging.info("serverdir: %s" % serverdir)
remotenames = self.ftp.nlst()
logging.info("remotenames: %s" % remotenames)
for file in remotenames:
server = os.path.join(serverdir, file)
if file.find(".") == -1:
if not os.path.exists(serverdir):
os.makedirs(serverdir)
self.download_file_tree(server, file)
else:
logging.info("server: %s" % server)
self.download_file(server, file)
self.ftp.cwd("..")
return True
def download_file(self, serverfile, remotefile): # 下载指定目录下的指定文件
file_handler = open(serverfile, 'wb')
logging.info("file_handler: %s" % file_handler)
self.ftp.retrbinary('RETR ' + remotefile, file_handler.write)
file_handler.close()
return True