博客
关于我
odoo13 自定义模块开发简介 windows10环境(三)
阅读量:349 次
发布时间:2019-03-04

本文共 6071 字,大约阅读时间需要 20 分钟。

一、高级视图

1、树视图

树视图可以采用补充属性来进一步自定义其行为:

decoration-{$name}

允许根据相应记录的属性更改行文本的样式。

值是Python表达式。对于每条记录,将使用记录的属性作为上下文值评估表达式,如果为true,则将相应样式应用于行。其他上下文值是 uid(当前用户的ID)和current_date(当前日期,形式为字符串yyyy-MM-dd)。

{$name}可以是bffont-weight: bold), (it ),font-style: italic或任何枚(danger, infomutedprimarysuccesswarning)。

列表着色

修改session树视图,使持续时间少于5天的会话显示为蓝色,而持续时间超过15天的会话显示为红色。

修改views/openacademy.xml中session树视图如下

session.tree
openacademy.session

运行效果

2、行事历

 将记录显示为日历事件。它们的根元素是<calendar>,最常见的属性是:

color

用于颜色分割的字段名称。颜色将自动分配给事件,但是相同颜色段(其@color字段具有相同值的记录)中的事件将被赋予相同的颜色。

date_start

记录中包含事件开始日期/时间的字段

date_stop (可选的)

记录的字段,其中包含事件的结束日期/时间

string

记录的字段以定义每个日历事件的标签

修改models\models.py文件中session对象,增加一个计划属性end_date,其值由start_date和duration计算得出。

# -*- coding: utf-8 -*-from datetime import timedeltafrom odoo import models, fields, api, exceptionsclass Session(models.Model):#...        taken_seats = fields.Float(string="Taken seats", compute='_taken_seats')        #add end_date        end_date = fields.Date(string="End Date", store=True, compute='_get_end_date', inverse='_set_end_date')#...#add compute function    @api.depends('start_date', 'duration')    def _get_end_date(self):        for r in self:            if not (r.start_date and r.duration):                r.end_date = r.start_date                continue            # Add duration to start_date, but: Monday + 5 days = Saturday, so            # subtract one second to get on Friday instead            duration = timedelta(days=r.duration, seconds=-1)            r.end_date = r.start_date + duration    def _set_end_date(self):        for r in self:            if not (r.start_date and r.end_date):                continue            # Compute the difference between dates, but: Friday - Monday = 4 days,            # so add one day to get 5 days instead            r.duration = (r.end_date - r.start_date).days + 1

修改views/openacademy.xml,增加行事历视图

session.calendar
openacademy.session
Sessions
openacademy.session
tree,form,calendar

 

运行效果

3、搜索视图

搜索视图<field>元素可以具有@filter_domain,以覆盖为在给定字段上进行搜索而生成的域。在给定的域中, self代表用户输入的值。在下面的例子中,它是用来在两个字段进行搜索namedescription

搜索视图还可以包含<filter>元素,这些元素充当预定义搜索的切换。筛选器必须具有以下属性之一:

domain

将给定的域添加到当前搜索中

context

在当前搜索中添加一些上下文;使用键group_by将结果按给定的字段名称分组

修改views/openacademy.xml中course视图

  1. 添加一个按钮以过滤课程搜索视图中当前用户负责的课程。使其默认为选中状态。
  2. 添加按钮以按负责任的用户对课程进行分组
Courses
openacademy.course
tree,form

Create the first course

运行效果

 

4、图表视图

图形视图允许对模型进行汇总概述和分析,其根元素为<graph>

图表视图具有4种显示模式,使用@type属性可以选择默认模式 。

Bar(默认)

在条形图中,第一维用于定义水平轴上的组,其他维用于定义每个组内的聚合条。

默认情况下,条形是并排放置的,可以通过 @stacked="True"<graph>

Line

二维折线图

Pie

二维派

图形视图包含<field>带有强制@type属性的值:

row (默认)

该字段应默认汇总

measure

该字段应汇总而不是分组

修改models\models.py,在“Session”对象中添加一个“图形”视图,该视图以条形图的形式显示每个课程的参加人数。

  1. 将与会者人数attendees_count添加为存储的计算字段
  2. 然后添加相关视图
end_date = fields.Date(string="End Date", store=True,        compute='_get_end_date', inverse='_set_end_date')#添加与会人数计算属性    attendees_count = fields.Integer(        string="Attendees count", compute='_get_attendees_count', store=True)    @api.depends('seats', 'attendee_ids')    def _taken_seats(self):        for r in self:            # so add one day to get 5 days instead            r.duration = (r.end_date - r.start_date).days + 1#添加计算函数    @api.depends('attendee_ids')    def _get_attendees_count(self):        for r in self:            r.attendees_count = len(r.attendee_ids)    @api.constrains('instructor_id', 'attendee_ids')    def _check_instructor_not_in_attendees(self):        for r in self:

在openacademy.xml添加图表视图

                 
openacademy.session.graph
openacademy.session
Sessions
openacademy.session
tree,form,calendar,graph

 

运行效果

5、看板

用于组织任务,生产过程等……其根元素是 <kanban>

看板视图显示一组可能按列分组的卡片。每张卡代表一条记录,每列代表一个聚合字段的值。

例如,项目任务可以按阶段(每个列是一个阶段)或负责任的方式(每个列是一个用户)进行组织,等等。

添加一个看板视图,该视图显示按课程分组的会话(因此,列就是课程)。

  1. 将一个整数color字段添加到会话模型
  2. 添加看板视图并更新操作

修改models\models.py,为session对象增加color属性

duration = fields.Float(digits=(6, 2), help="Duration in days")    seats = fields.Integer(string="Number of seats")    active = fields.Boolean(default=True)    # 增加    color = fields.Integer()    instructor_id = fields.Many2one('res.partner', string="Instructor",        domain=['|', ('instructor', '=', True),

 

修改views\openacademy.xml增加kanban视图

                
openacademy.session.kanban
openacademy.session
Session name:
Start date:
duration:
Sessions
openacademy.session
tree,form,calendar,graph,kanban

运行效果

参考文档

https://www.odoo.com/documentation/13.0/howtos/backend.html#build-an-odoo-module

 

转载地址:http://zqpe.baihongyu.com/

你可能感兴趣的文章
mysql 转义字符用法_MySql 转义字符的使用说明
查看>>
mysql 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>
mysql 通过查看mysql 配置参数、状态来优化你的mysql
查看>>
mysql 里对root及普通用户赋权及更改密码的一些命令
查看>>
Mysql 重置自增列的开始序号
查看>>
mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
查看>>
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-8.0.16 的安装与配置
查看>>
MySQL-Buffer的应用
查看>>