Crm Lead에서 Sale Orders를 생성하는 함수를 호출하여! python 블록에서 작성된 레코드가 있습니다. 이제는 새롭게 생성 된 Sale Order에 대한 워크 플로를 테스트하려고합니다. 새로운 sale_order의 ID를 YAML로 다시 전달할 수있는 방법이 있습니까? 그럼 워크 플로 명령을 사용할 수 있습니까?! python에서 Odoo/OpenERP 테스트의 YAML로 레코드 ID 전달
답변
!python
블록 안에 ID를 ir.model.data
으로 저장할 수 있으며 다른 블록에서도 볼 수 있습니다. ! 내 샘플을 적용 할 수 있습니다 당신은 당신의 코드를 게시 할 경우
-
Create an external id 'test_group_id'
-
!python {model: res.groups}: |
from openerp import SUPERUSER_ID
obj_id = self.create(cr, uid, {'name':'Test Group'}, context=context)
imd_values = {'module':'base', 'model': model._name, 'name': 'test_group_id', 'res_id': obj_id}
id = self.pool['ir.model.data'].create(cr, SUPERUSER_ID, imd_values, context=context)
assert obj_id == ref('test_group_id'), 'saved reference should be equal'
assert id, 'external id should be saved'
-
The identifier 'test_group_id' should be visible from other "python" tags
-
!python {model: res.groups}: |
assert ref('test_group_id'), 'External Id should exists'
-
Create user 'Test User' to include it in 'test_group_id'
-
!record {model: res.users, id: res_users_test, view: False}:
company_id: base.main_company
name: Test User
login: testuser
password: testuser
-
Include the user in the referenced group. Then 'test_group_id' is visible from "record" tags.
-
!record {model: res.users, id: res_users_test}:
groups_id:
- base.test_group_id
이 해결책은'external id' ('xml_id')가이 테스트에서 유일 할 때만 작동합니다. 'yaml_import.py'에있는'process_record'의 구현은'get_id'를 사용하여 외부 id에 대한 참조 (별칭'ref')를 해결합니다. 'get_id' 메쏘드는 먼저'! python' 태그의 코드에서 접근 할 수없는'id_map'이라는 캐시를 찾습니다. ! python 태그에서 접근 할 수있는 환경 변수는'process_python' 메소드의'code_context' 사전에 정의되어 있습니다. – yucer
yaml_import.py 코드를 수정하지 않으려면 그렇지 않으면'process_python'의'code_context'에 이것을 포함시킬 수 있습니다 :'{ 'yaml': self}'그리고'yaml.id_map [ 'test_group_id']로 코드 확장하기 = id' – yucer
- 1. 레코드 ID
- 2. Python에서 사용자 ID 생성
- 3. YAML로 인코딩하는 방법은 무엇입니까?
- 4. Rails3 데이터를 yaml로 내보내는 방법과 파일은 개별 레코드 여야합니다.
- 5. Python에서 클래스의 인수 전달
- 6. Python에서 객체의 인수 전달
- 7. 레코드 생성시 두 개 이상의 연결 ID 전달
- 8. CRM 2013- 버튼 클릭시보기에서 선택한 모든 레코드 ID 전달
- 9. 문자열 배열을 JUnit 테스트의 매개 변수로 전달
- 10. Yii의 레코드 ID 선택
- 11. xml을 yaml로 변환, "calls"섹션
- 12. Python에서 KSH 스크립트로 값을 전달
- 13. Python에서 실행 파일에 인수 전달
- 14. python에서 sys.argv의 디렉토리 이름 전달
- 15. 잠재 ID 목록에서 잘못된 레코드 ID 찾기
- 16. rails (JSON의) 레코드 배열 전달
- 17. 의도에 따라 ID 전달
- 18. 활동 사이에 ID 전달
- 19. 객체 대 ID 전달
- 20. Selector에 ID 전달 - Jquery
- 21. PHP 코드 전달 ID
- 22. 제품 ID 및 공급 업체 ID 전달
- 23. 삽입 후 레코드 ID 검색
- 24. ID 당 활성 레코드 하나가
- 25. DataGridView 및 레코드 ID C#
- 26. mongodb에서 ID 배열로 레코드 검색
- 27. 주어진 ID 뒤에 Laravel 레코드
- 28. 활성 레코드 마지막 삽입 ID
- 29. 구성원 ID 레코드 수를 계산하십시오.
- 30. Liquibase XML을 YAML로 변환 하시겠습니까?
는 주문, CRM을 리드 등을 판매하는 :
이 금주 모임 파이썬 블록에서 그룹을 생성하고 기록 블록에서에 사용자를 추가하는 예입니다 '! workflow' 태그. – yucer