odoo第二天,请假单,权限第一天

controllers 都是注释代码
demo 没有
模块的类文件 models/models.py

# odoo 类必要的
from odoo import models, fields, api


# 这里我们定义了qingjiadan对象模型,


class qingjiadanw(models.Model):
    _name = 'qingjia.qingjiadanw'

    # 四个属性,name,days,startdate,reason。
    # 在模块安装完成后,odoo的ORM框架会自动把这个对象映射到数据库表。
    # 属性类型会映射到表字段数据类型,表名是模块名_对象名,
    # 比如这个对象对应的表名是qingjia_qingjiadanw
    name = fields.Char(string="申请人字段")
    days = fields.Integer(string="天数字段")
    startdate = fields.Date(string="开始日期字段")
    reason = fields.Text(string="请假事由字段")

安装模块后打开数据库可以搜到我们的表,不然就是没成功

<openerp>
  <data>
    <!-- tree视图 -->
    <record id="view_tree_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单列表</field>
      <!--<field name="model">qingjia.qingjiadan</field>-->
<!--将这个视图与我们之前定义的对象模型qingjia.qingjiadan进行绑定。-->
      <field name="model">qingjia.qingjiadan</field>
      <!--这里表示这是一个tree视图,并定义列表项显示的列。
      在列表项中显示name,days,startdate三个字段的内容,
      这里字段都是在qingjia.qingjiadan对象模型中定义的。-->
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="days"/>
          <field name="startdate"/>
        </tree>
      </field>
    </record>

这里写图片描述

    <!-- form视图 -->
    <record id="view_form_qingjia_qingjiadan" model="ir.ui.view">
      <field name="name">请假单</field>
      <field name="model">qingjia.qingjiadan</field>
      <field name="arch" type="xml">
        <form>
          <sheet>
            <group name="group_top" string="请假单">
              <field name="name"/>
              <field name="days"/>
              <field name="startdate"/>
              <field name="reason"/>
            </group>
          </sheet>
        </form>
      </field>
    </record>

这里写图片描述

    <!--&lt;!&ndash; 视图动作 &ndash;&gt;-->
    <act_window id="action_qingjia_qingjiadan"
                   name="请假单"
                   res_model="qingjia.qingjiadan"
                   view_mode="tree,form" />

    <!-- 顶级菜单 -->
    <menuitem name="请假" id="menu_qingjia"/>

    <!-- 二级菜单 -->
    <!--二级菜单的通过parent属性与顶级菜单关联,action是菜单点击动作响应方法,没有这个顶部请假标签视图不会出来。-->
    <menuitem name="请假单" id="menu_qingjia_qingjiadan" parent="menu_qingjia" />

  </data>
</openerp>

权限
在odoo中新建两个用户user1,user2
编辑security/ir.model.access.csv
id, name, model_id:id, group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_qingjia_qingjia,qingjia.qingjia,model_qingjia_qingjia, ,1,0,0,0
Module loading qingjia failed: file qingjia\security/ir.model.access.csv could not be processed:
No matching record found for external id ‘model_qingjia_qingjia’ in field ‘Object’ id错误,发现是和odoo定义的id不对应
“`
id, name, model_id:id, group_id:id, perm_read,perm_write,perm_create,perm_unlink
access_qingjia_qingjiadan,qingjia.qingjiadan,model_qingjia_qingjiadan,base.group_user,1,1,1,1

id
权限id,默认规则是access_模块名_类名,还没发现有什么用
name
权限名,默认规则是模块名.类名,还没发现有什么用
model_id:id
这个是固定写法,规则是model_模块名_类名,其它地方(report)引用权限会用这个id
group_id:idid,这里的base.group_user是系统内置组,即员工.员工组,创建帐户时,默认属于这个组。所以给这个组赋权限,相当于给新帐户的默认权限。
perm_read,perm_write,perm_create,perm_unlink
对应读、写、增加、删除权限,1是有权限,0是无权限,具体根据需要来设置权限
编辑__manifest__.py
在'data':[]中添加权限文件 'security/ir.model.access.csv',
新增一行'application': True,这样在应用中默认能搜索到请假单模块,因为应用列表默认使用应用过滤器的。


record 纪录显示自己的
<!--record 规则 -->
<record id="rule_user_qingjia_qingjiadan" model="ir.rule">
  <field name="name">自己编辑自己的请假单</field>
  <!--模块id,对应ir.model.access.csv文件中定义的model_id-->
  <field name="model_id" ref="model_qingjia_qingjiadan" />
  <!--domain表达式,'create_uid'是qiangjia_qingjiadan表的字段,
  在insert数据时,odoo自动写入添加用户的id。user.id是当前用户id。
  这个domain表达式的含义就是请假单数据的添加用户id等于当前用户id.-->
  <field name="domain_force">[('create_uid','=',user.id)]</field>
  <!--(4,ID)添加主从链接关系到id=ID的对象。
  就是对应id组的成员就可以获取domain_force中的数据-->
  <field name="groups" eval="[(4,ref('base.group_user'))]"/>
</record>

“`

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值