def action_base_state_set_done(self):
for record in self:
if record.base_state in ['approval']:
record.base_state = 'done'
# 审核完成生成对应的项目台账
self.create_project_ledger()
# 创建一个新的更新数据线程
threading.Thread(target=self.upadate_data, args=(record)).start()
def upadate_data(self, record):
# 获取当前数据库名称
dbname = self.env.cr.dbname
# 获取当前环境的上下文
_context = self._context
# 使用数据库注册表创建一个新的游标
db_registry = registry(dbname)
with api.Environment.manage(), db_registry.cursor() as cr:
# 创建新的游标
new_cr = self.pool.cursor()
# 创建新的环境
new_env = api.Environment(cr, SUPERUSER_ID, _context)
# 将当前对象设置为新环境中的对象
self = self.with_env(new_env(cr=new_cr))
# 获取传入的记录的ID
record_id = record.id
# 在新环境中获取项目管理的记录
record = new_env['proj.approval'].browse(record_id)
# 定义路径,用于存储文件的Nextcloud路径
path = f"{record.name}/管理/立项"
# 遍历项目管理记录的附件,将每个附件上传到Nextcloud
for file_id_record in record.file_ids:
new_env['nextcloud.tools'].file_archiving(path, file_id_record.id)
# 关闭新的游标
new_cr.close()
# 关闭数据库连接
new_cr._cnx.close()
odoo14新线程获取新的游标(逻辑)并关闭
最新推荐文章于 2024-10-03 09:00:56 发布