2015-01-15 1 views
1

У меня есть запись, которая создана в блоке! Python, вызывая функцию, которая создает заказы на продажу от Crm Lead. Теперь я хочу протестировать рабочий процесс на новом созданном Заказе на продажу. Есть ли способ передать идентификатор новой sale_order обратно в YAML, так что я смогу использовать инструкцию workflow?Пропустить идентификатор записи от! Python до YAML в тестах Odoo/OpenERP

+0

Если вы размещаете свой код, который я могу адаптировать мой образец продажи Заказы, УРК Свинец и тег '! workflow'. – yucer

ответ

1

Вы можете сохранить идентификатор до ir.model.data внутри блока !python, и он будет виден другим блокам.

Это пример создания группы из аа питона блока и добавление пользователя к нему из блока записи:

- 
    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 
+0

Я должен добавить, что это решение работает только тогда, когда для этого теста уникален «внешний идентификатор» ('xml_id'). Реализация 'process_record' в' yaml_import.py' использует 'get_id' для разрешения ссылок на внешние идентификаторы (с псевдонимом' ref'). Метод get_id выглядит сначала в кэше с именем 'id_map', который не может быть недоступен из кода тега'! Python'. Переменные среды, к которым можно получить доступ из тега a! Python, определены в словаре 'code_context' метода' process_python'. – yucer

+0

Я предполагаю, что вы не хотите изменять код yaml_import.py, иначе вы можете включить его в 'code_context' из' process_python': '{'yaml': self}' и расширять мой код с помощью 'yaml.id_map ['test_group_id'] = id' – yucer