У меня есть мастер, я выбираю отдел, затем вызываю действие (определенное в xml), которое вызывает контроллер. Я также установил (определил) свой собственный контекст и передал выбранный идентификатор отдела в контексте. Я хочу передать этот контекст при вызове действия, которое загружает контроллер в контроллер. В контроллере мне нужно получить доступ к значениям переданного контекста. Это код, в котором я устанавливаю контекст в контроллере и возвращаю действие с контекстом:
@api.multi
def action_select_department(self):
ctx = dict(self._context)
if self.department_id:
self.state = 'display'
ctx.update({'dep_id': self.department_id.id})
print('Dept id:::::::::::::::::::', self.department_id.id, ctx)
return {
'name': _('Website Next Patient Screen'),
'type': 'ir.actions.act_url',
'context': ctx,
'url': '/next_patient',
'target': 'self'
}
И это код контроллера, в котором я хочу получить контекст:
-*- coding: utf-8 -*-
from odoo import http
from odoo.http import request
from odoo.tools.translate import _
class hms_next_patient_screen(http.Controller):
@http.route(['/next_patient'], type='http', auth="public", website=True)
def next_patient(self, **kw):
ctx = request.env.context.copy()
dept = http.request.evn['nl_hms_next_patient.next.patiend.screen.wizard']
print('DEPT:::::::::::::::::::::::::::::::', dept)
print (">>>>>>>>>>>>>>>", ctx, self, kw)
app_obj = request.env['hms.appointment']
one = app_obj.sudo().search([('state', '=', 'in_consultation')], limit=1)
next = app_obj.sudo().search([('state', '=', 'waiting')])
two = three = four = app_obj
if len(next)>=1:
two = next[0]
if len(next)>=2:
three = next[1]
if len(next)>=3:
four = next[2]
return request.render("acs_hms_next_patient_screen.next_patient_view",{'one':one,'two':two,'three':three,'four':four})
Метод в мастере работает нормально, и действие вызывается при загрузке контроллера. Но я не могу получить доступ к значению контекста в контроллере. Как я могу передать настраиваемый контекст и получить к нему доступ в контроллере?