res_company_white_url.py 详解

发布于:2022-12-15 ⋅ 阅读:(532) ⋅ 点赞:(0)

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'

定义一个模型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

定义一个方法,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='宜兴通达科技')

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

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

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

https://demo.tderp.com

用户名:admin
密码:admin

本文含有隐藏内容,请 开通VIP 后查看