пул для объектов Odoo из класса http.Controller (python)

Я новичок в Odoo (openERP) и python. У меня есть http.Controller, в котором я пытаюсь получить шаблон, который должен содержать некоторые объекты из базы данных openERP, а точнее fleet_vehicle_log_fuel_obj. Обычно метод self.pool.get () должен помочь, но в контроллере он не работает.

Я пытаюсь отправить некоторые объекты клиенту и обработать их с помощью javascript.

Вот мой контроллер:

import json
from openerp import SUPERUSER_ID, pooler
from openerp.addons.web import http
from openerp.addons.web.http import request


class google_map(http.Controller):

@http.route(['/google_map'], type='http', auth="public", website=True)
def google_map(self, *arg, **post):
    cr, uid, context = request.cr, request.uid, request.context
    fleet_vehicle_log_fuel_obj = self.pool.get('fleet_vehicle_log_fuel');
    #fleet_vehicle_log_fuel_obj = pool.get('fleet_vehicle_log_fuel')
    ids = fleet_vehicle_log_fuel_obj.search(cr, uid, [])
    return request.website.render("fleet.google_map",  json.dumps(ids))

ошибка, которую я получаю, - объект "google_map" не имеет атрибута "пул". Как я могу получить все объекты определенного типа и отправить их клиенту?


person Mihai Serban    schedule 17.01.2015    source источник
comment
Вместо self.pool.get используйте request.registry.   -  person Kenly    schedule 19.10.2016


Ответы (3)


Я знаю, что приехала слишком поздно, но, может быть, это кому-то поможет.

Библиотека http позволяет вам получить доступ к моделям из контроллера, поэтому вы должны написать:

import openerp.http as http

fleet_vehicle_log_fuel_obj = http.request.env['fleet_vehicle_log_fuel']

И тогда вы сможете применить любой метод ORM с fleet_vehicle_log_fuel_obj.

person forvas    schedule 10.05.2016

Попробуй это:

pool = request.registry
model_obj = pool['your.model']

или

model_obj = request.registry['your.model']

Надеюсь, что это поможет вам...

person KbiR    schedule 19.08.2016

Я не тестировал это, но попробуйте добавить в импорт:

импортировать openerp.pooler как пулер

Затем используйте код

osv_pool = pooler.get_pool (имя_бД)

osv_pool.get (модель)

Я получил это от openerp/osv/osv.py

person Daryl Van Sittert    schedule 22.01.2015
comment
Спасибо за ответ, я больше не могу это тестировать, так как работаю над чем-то другим. Ваше здоровье! - person Mihai Serban; 09.02.2015