• res_company_white_url.py 详解


    res_company_white_url.py,主要作用是,在数据库中建立一个表,存放白名单的URL。当我们读取文件时,先判断Referer是否在白名单中,如果不在则自动转到一个图片文件,防止盗链。
    在这里插入图片描述
    在这里插入图片描述
    接下来我们看一下主要代码:

    class CompanyWhiteUrl(models.Model):
        _name = 'res.company.whiteurl'
        _description = 'Company White Url configuration'
        _order = 'sequence'
        _rec_name = 'white_url'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    定义一个模型CompanyWhiteUrl,继承于models.Model,绝大多数Odoo模型中,模型都是基于models.Model模型的。 这种类型的模型具有永久的数据库持久性:为它们创建数据库表,并且它们的记录被存储,直到被显式删除。除models.Model 基本模型外还有另外两种分别是瞬态模型:models.TransientModel以及抽象模型:models.AbstractModel。
    _name属性是模型中的必填属性,Odoo里类的唯一标识,并且在整个模型文件的全局不能够重复。
    _description是描述属性,只在查看模型界面的时候作为展示之用。它可选不填,但好的编码习惯我们应该书写尽量详尽的描述。
    _order :当浏览模型记录或者显示在列表视图时,设置默认排序字段。
    _rec_name:用来指出引用关联字描述记录的字段,例如多对一关系。 默认情况下,它使用name字段,这是模型中常见的字段。但是这个属性允许我们使用任何其他字段来实现这个目的。

    def _get_white_url_dicts(self):
        whiteurls = self.sudo().search([('white_url', '!=', False)], order='sequence')
        res = whiteurls.read([
            'white_url'
        ])
        return res
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    定义一个方法,self.sudo()获得超级权限,从而确保我们的操作能够进行。
    search(domain).read(fields):返回记录集的指定字段值列表。返回字典列表。

    sequence = fields.Integer(default=10)
    company = fields.Many2one('res.company', string='Company', required=True, ondelete='cascade')
    white_url = fields.Char(string='White Url', required=True, default='www.tderp.com')
    url_name = fields.Char(string='Url Name', required=True, default='宜兴通达科技')
    
    • 1
    • 2
    • 3
    • 4

    定义4个字段,
    sequence(Integer) 模型保留字段, 可修改的排序,可以在列表视图里通过拖拽进行排序。

    Company 多对一关系:Many2one关系需要两个参数:关联模块和展示字符。
    它会在数据库表中创建一个拥有外键的字段去关联数据库表。
    其他参数:
    ondelete 在关联的记录被删除时,将会触发。默认值是null,也就是说,当关联的记录被删除时,它将被置空。其它值为restrict,当记录被关联时,禁止删除,cascade,删除关联记录的同时删除当前记录。

    white_url和url_name定义两个Char类型字段,用来存储URL和URL name.
    在这里插入图片描述
    演示:

    https://demo.tderp.com

    用户名:admin
    密码:admin

  • 相关阅读:
    【UVA No. 210】 并发模拟器 Concurrency Simulator
    AutoSAR入门:软硬件开发环境搭建概览
    业务调整,业绩短期承压,市场热潮退去后的乐舱物流将驶向何方?
    浅谈c/c++中main(),int main(),void main(),int main(void)四者之间的区别
    Chronos——中
    同时申请发明专利和实用新型专利的好处
    Docker安装Gitlab-ruuner
    【Python】-- 模块、包(导入模块、自定义模块、自定义包、安装第三方包)
    ceph源码阅读 erasure-code
    mvn package includes all the dependency jar in pom.xml
  • 原文地址:https://blog.csdn.net/r_nznf/article/details/126436991