콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
653 화면

Hello, 


Looking into the documentation, there it not written if we can call the duplicate method as you can see in the picture 




Is there a way to directly duplicate an object with the api and get the ID of the new created object ?


-- 


I found another solution but it's more complexe automation 



Create a Webhook: 


And call Server Action: 


Create another automation, when new Task is created, send a json (included the ID) to an http address.


But the system has to do 2 independent steps

And multiplying the steps increase the chance to have bugs


It should works, but not very good.

아바타
취소
베스트 답변

The Duplicate action you are referring to is simply defined as

<a class="dropdown-item" role="menuitem" name="copy" type="object">Duplicate</a>

in https://github.com/odoo/odoo/blob/b0e8cb21577966108ce3885e4fbcb7314d965660/addons/project/views/project_project_views.xml#L425

-> It's the generic copy() method used all over the place to duplicate records. project.project slightly modified  it though: https://github.com/odoo/odoo/blob/b0e8cb21577966108ce3885e4fbcb7314d965660/addons/project/models/project_project.py#L457


Still, this will work perfectly fine:

import xmlrpc.client

url = 'https://odoo.example.com'
db = 'example-odoo-dbname'
username = 'username'
password = 'password'

project_id = 42 # the project id to copy

# Auth
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})

# Copy project
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
result = models.execute_kw(db, uid, password, 'project.project', 'copy', [[project_id]])

print(result) # list of new project.project ids

In order to get the project.project object, just search/browse/read for it with the result.


See also https://www.odoo.com/documentation/18.0/de/developer/reference/external_api.html

아바타
취소
관련 게시물 답글 화면 활동
2
5월 25
747
1
9월 23
2372
0
7월 23
1496
2
11월 22
2554
3
1월 22
6361