Создать кнопку на веб-сайте, которая запускает скрипт python в ODOO

#python #odoo #odoo-12

#python #odoo #odoo-12

Вопрос:

Я создал новый модуль в odoo. У нее есть кнопка действия (проверьте ip с помощью ipwhois). Теперь мне нужно интегрировать этот модуль на веб-сайт. Легко отображать поля на веб-странице, но я не знаю, как создать кнопку и вызвать функцию. Кнопка отображается на веб-странице, но функция не вызывается.

Как я понимаю: нажатие на кнопку должно вызвать функцию python, перезагрузить страницу и ввести новое значение в поле «result_check».

 <record id="sale_form_view" model="ir.ui.view">
  <field name="name">sale.form</field>
  <field name="model">product.template</field>
  <field name="inherit_id" ref="website_sale.product_template_form_view"/>
  <field name="arch" type="xml">
    <field name="categ_id" position="after">
      <button name="make_request" type="object" string="Make check" />
      <field name="result_check" />
    </field>
  </field>
</record>

<templateid="add_fields_product"inherit_id="website_sale.product">
<xpathexpr="//div[@id='product_details']"position="before"> 
<div>
   <a role="button" href="#"><span>Make check</span></a> 
   <p itemprop="name" t-field="product.result_check">Result</p> 
</div> 
</xpath>
</template>
  

Комментарии:

1. Где вы должны написать функцию make_request?

Ответ №1:

Сначала вы должны написать функцию make_request в product_template.py досье.Означает, что вы должны наследовать модель product.template.Например, следующее:

     def make_request(self):
        # Here your code...
  

И с помощью этой функции вы можете установить значение поля «result_check».

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

Комментарии:

1. Я сделал это — он работает в приложении, но мне нужно сделать эту функцию доступной с веб-сайта. Я не знаю, как связать его с шаблонами xml.

Ответ №2:

Вам нужно поместить код в свой models.py досье. Ваш XML-файл имеет

 <button name="make_request" type="object" string="Make check" />
  

Когда пользователь нажимает на эту кнопку, он переходит на ваш models.py файл для активации кнопки. Похоже, вы используете class: product.template [из вашего XML-файла]

В models.py файл, найдите раздел product.template, внутри этого класса поместите это в:

 @api.multi
def make_request(self):
    Put your code here
    return
  

Итак, теперь ваша кнопка в xml связана с кодом python. Вот как вы получаете кнопку для активации вашего кода на python (заставляя вашу кнопку вызывать ваш код на python)

Комментарии:

1. Спасибо! он работает в модуле (портале), но не на странице веб-сайта.

2. Возможно, вам следует использовать класс контроллера и отображать свой веб. Вы можете вызвать функцию из python в классе контроллера. @Laoris

3. @Laoris yes test with С. Дэлгэрцэцэг’s idea. Я понимаю, что вы хотите сделать. На веб-странице (веб-сайте) есть кнопка, но когда вы нажимаете на нее, она ничего не делает. Это означает, что кнопка неправильно связана с вашим кодом python. Вам нужно убедиться, что имена указаны правильно и в правильном классе. Вы звоните не в то место, или ваш код на python находится не в том месте. Вам нужно показать свой код на python и куда вы его помещаете. Тогда мы сможем помочь больше.