Odoo 9, как добавить пользовательский шаблон представления в существующие представления?

Я хотел бы добавить шаблон между KanbanView.buttons и KanbanView.Group, чтобы отображать поле описания в модели «project.project», когда я просматриваю представление канбана «project.task».

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

Что я сделал, это

Я создал собственный шаблон layouts.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <templates>
            <t t-name="eric-kanban-view">
                <div>This is Eric's kanban view</div>
            </t>
        </templates>
    </data>
</openerp>

и я хотел бы добавить шаблон в «project.view_task_kanban», чтобы найти его над проектом представления канбан.xml

<record id="project_task_custom_kanban" model="ir.ui.view">
    <field name="inherit_id" ref="project.view_task_kanban"/>
    <field name="model">project.task</field>
    <field name="arch" type="xml">
        <xpath expr="//templates" position="before">
            <t t-call="eric-kanban-view"/>
        </xpath>
    </field>
</record>

openerp.py

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

{
    'name' : 'project_customized',
    'version' : '1.1',
    'author' : "Eric Lee",
    'description': 'eric\'s Project customized module',
    'installable' : True,
    'data' : [
        'project.xml',
    ],
    'depends' : [
        'project',
    ],
    'qweb': [
        'static/src/xml/layouts.xml',
        'static/src/xml/project.xml',
    ],
}

Но ничего не произошло.

Ниже приведен макет, который мне нужен введите здесь описание изображения


person Jinna    schedule 14.06.2018    source источник
comment
Джима - укажите, какой результат вы хотите увидеть. У меня есть один проект Odoo9 с очень персонализированным модулем Project. Тадеуш, не могли бы вы прислать мне свои контактные данные? Вы очень опытны, и я мог бы время от времени подрабатывать для вас.   -  person Piotr Cierkosz    schedule 14.06.2018
comment
@TadeuszKarpinski Что я хочу сделать, так это добавить шаблон или представление, чтобы отображать одно поле из модели «project.project» в канбане «project.task» или представлении списка.   -  person Jinna    schedule 18.06.2018
comment
@PiotrCierkosz Я хотел бы показать поле, подобное описанию из «project.project», в этом представлении канбана, когда оно не повторяется   -  person Eric Lee    schedule 20.06.2018
comment
@Jinna, не могли бы вы проверить мой ответ, с нетерпением жду ваших отзывов.   -  person KbiR    schedule 26.06.2018
comment
@KbiR Ответ, который вы мне дали, был хорошим, но мой клиент не хочет видеть название проекта в каждой задаче. поэтому ваш ответ был значительным, прежде чем я нашел решение. Спасибо за Ваш ответ   -  person Jinna    schedule 05.07.2018


Ответы (2)


Вам нужно создать виджет, расширив kanbanView.

Вот пример: введите здесь описание изображения

Вот пример кода.

static/src/xml/template.xml

<template id="template" xml:space="preserve">

 <t t-name="kanban.sample_header">
   <div class="sample_header" style="width:100%;height:50px;background-color:#fff;">
     <h2>Sample header</h2>
  </div>
</t>
</template>

static/src/js/sample.js

odoo.define('kanban.sample_dashboard', function (require) {
"use strict";


var core = require('web.core');
var formats = require('web.formats');
var Model = require('web.Model');
var session = require('web.session');
var KanbanView = require('web_kanban.KanbanView');

var QWeb = core.qweb;

var _t = core._t;
var _lt = core._lt;

var sampleHeader = KanbanView.extend({
  display_name: _lt('Dashboard'),
  icon: 'fa-dashboard',
  fetch_data: function() {
      // Overwrite this function with useful data
      return $.when();
  },
  render: function() {
      var super_render = this._super;
      var self = this;

      return this.fetch_data().then(function(result){
          self.show_demo = result && result.nb_opportunities === 0;

          var sales_dashboard = QWeb.render('kanban.sample_header', {
              widget: self,
              show_demo: self.show_demo,
              values: result,
          });
          super_render.call(self);
          $(sales_dashboard).prependTo(self.$el);
      });
  },

});
core.view_registry.add('sample_header', sampleHeader);

return sampleHeader;

})

view.xml

<odoo>
 <data>


<template id="assets_backend" name="sample_header" inherit_id="web.assets_backend">
    <xpath expr="." position="inside">
        <script type="text/javascript" src="/kanban/static/src/js/sample_js.js"></script>
    </xpath>
</template>


<record model="ir.ui.view" id="view_task_kanban_inherit">
    <field name="name">project.task.kanban.inherit</field>
    <field name="model">project.task</field>
    <field name="inherit_id" ref="project.view_task_kanban"/>
    <field name="arch" type="xml">

      <xpath expr="//kanban" position="attributes">
        <attribute name='js_class'>sample_header</attribute>

      </xpath>
    </field>
</record>
 </data>
 </odoo>

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

person KbiR    schedule 25.06.2018
comment
все ресурсы загружены, но sample_header не печатается. И я поместил console.log() в функцию рендеринга, но он не печатает журнал. - person Eric Lee; 29.06.2018
comment
Когда я меняю код с «sample_header» на «kanban» в core.view_registry.add('sample_header', sampleHeader), он отображается, но не в заголовке, а слева, как новый этап. - person Eric Lee; 29.06.2018

<record id="project_task_custom_kanban" model="ir.ui.view">
    <field name="inherit_id" ref="project.view_task_kanban"/>
    <field name="model">project.task</field>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='name']" position="after">
            <field name="project_id.name"/>
        </xpath>
    </field>
</record>

Так что этот пример должен работать хорошо. После названия задачи будет указано название проекта.

person Community    schedule 18.06.2018
comment
Спасибо за ответ. Я знаю, что добавление поля к каждой задаче возможно. но то, что я хочу сделать, это показать только имя проекта один раз не для каждой задачи на странице, когда я нажимаю проект, чтобы увидеть его задачи - person Jinna; 18.06.2018
comment
Я просто хочу показать «project_id.name» из «project.project» ниже кнопки «Создать» и над канбаном или списком. Я просто загрузил картинку для вашего понимания - person Jinna; 19.06.2018