Я пытаюсь использовать этот Odoo аддон:Odoo, Python: TypeError: информация() есть несколько значений для ключевого слова аргумента 'названия'
https://www.odoo.com/apps/modules/8.0/warning_box/
https://github.com/ingadhoc/odoo-addons/tree/8.0/warning_box
для отображения некоторых сообщений.
Установочный страница говорит:
usage return self.pool.get('warning_box').info(cr, uid, title='The title', message='the message')
Поскольку код написан в стиле V8.0, я думаю, что это неправильно. Я все равно пробовал, и он дал ошибки о cr и uid.
Затем я попробовал это так:
self.env['warning_box'].info(self, title='The title', message='the message')
Это дает мне эту ошибку:
TypeError: info() got multiple values for keyword argument 'title'
Это питон код Odoo аддона:
WARNING_TYPES = [('warning', 'Warning'), ('info', 'Information'), ('error', 'Error')]
class warning_box(models.TransientModel):
_name = 'warning_box'
_description = 'warning_box'
_req_name = 'title'
type = fields.Selection(WARNING_TYPES, string='Type', readonly=True)
title = fields.Char(string="Title", size=100, readonly=True)
message = fields.Text(string="Message", readonly=True)
@api.multi
def message_action(self):
self.ensure_one
message_type = [t[1]for t in WARNING_TYPES if self.type == t[0]][0]
res = {
'name': '%s: %s' % (_(message_type), _(self.title)),
'view_type': 'form',
'view_mode': 'form',
'view_id': self.env['ir.model.data'].xmlid_to_res_id(
'warning_box.warning_box_form'),
'res_model': 'warning_box',
'domain': [],
'context': self._context,
'type': 'ir.actions.act_window',
'target': 'new',
'res_id': self.id
}
return res
@api.model
def warning(self, title, message):
record = self.create({'title': title, 'message': message, 'type': 'warning'})
return record.message_action()
@api.model
def info(self, title, message):
record = self.create({'title': title, 'message': message, 'type': 'info'})
return record.message_action()
@api.model
def error(self, title, message):
record = self.create({'title': title, 'message': message, 'type': 'error'})
return record.message_action()
У меня есть искал ошибку и нашел эти 2 части информации:
class method generates "TypeError: ... got multiple values for keyword argument ..."
TypeError: create() got multiple values for keyword argument 'context'
Я пытался понять и применить его к моей ситуации, но я не могу получить его работу ... Может кто-нибудь сказать мне, что случилось с этим кодом?
редактировать для Forvas:
я теперь вызываем функцию так:
return self.env['warning_box'].error(title='The title', message='the message')
Это не дает никаких ошибок с указанным кодом.
Теперь я изменил def message_action, как вы сказали. Для этого:
form_view_id = self.env.ref(
'your_module_name.your_form_view_xml_id').id
Я использовал:
form_view_id = self.env.ref(
'warning_box_git.warning_box_form').id
Просто чтобы убедиться, вы имели в виду имя модуля или название модели? Моя модель (класс) - warning_box, а мое имя модуля - warning_box_git (имя папки модуля). Я сделал это правильно?
В любом случае я получаю эту ошибку:
AttributeError: 'warning_box' object has no attribute 'error'
Это мой XML:
<openerp>
<data>
<record id="warning_box_form" model="ir.ui.view">
<field name="name">warning_box.form</field>
<field name="model">warning_box</field>
<field eval="20" name="priority"/>
<field name="arch" type="xml">
<form string="Warning">
<field name="message" nolabel="1"/>
<footer>
<button string="OK" class="oe_highlight" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_warning_box">
<field name="name">Warning Box</field>
<field name="res_model">warning_box</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="warning_box_form" />
<field name="target">new</field>
</record>
</data>
</openerp>
Есть ли у вас какие-либо идеи, как решить эту ошибку?
Редактировать 2 для Forvas: Я сделал глупую ошибку отступа. Теперь эта ошибка исчезла. Но все же, у него нет всплывающих окон?
Спасибо. Это сработало! Больше никаких ошибок – RobbeM
Но по-прежнему нет всплывающих окон. У вас также есть идеи, почему это может быть? – RobbeM
Я отредактировал свой ответ @RobbeM, посмотрю, что я делаю, когда хочу открыть всплывающее окно (очевидно, замените * your_module_name.your_form_view_xml_id вашими данными). – forvas