これを実現するには、2つの方法があります。顧客は自分が作成したデータのみを表示します
- 権限グループを直接使用する
レコードルール(ir.rule)を使用してフィルタリング(domain_force)
<record id="wg_sale_partner_data_query_self" model="res.groups">
<field name="name">客户资料查询(仅自己)</field>
<field name="category_id" ref="module_category_wg_production_function"/>
</record>
<record id="wg_sale_partner_my" model="ir.rule">
<field name="name">客户资料查询规则(仅自己)</field>
<field ref="base.model_res_partner" name="model_id"/>
<field name="domain_force">[('create_uid','in',[user.id,False])]</field>
<field name="groups" eval="[(4, ref('wg_sale_partner_data_query_self'))]"/>
</record>
注:レコードルールにアクセス許可グループがない場合、グローバルに有効になります。つまり、特定のアクセス許可グループを対象としません。
- Pythonコードを
使用して_search()関数を使用します。
ルールを作成する必要はありません。権限グループを選択するかどうかを直接決定し、選択する場合はフィルタリングできます。
from odoo.osv import expression
@api.model
def _search(self, args, offset=0, limit=None, order=None, count=False, access_rights_uid=None):
if self.user_has_groups('production_management.wg_sale_partner_data_query_self'):
args = expression.AND([[('create_uid', 'in', [self.env.user.id,False])], list(args)])
return super(SupplierManager, self)._search(args, offset=offset, limit=limit, order=order,
count=count, access_rights_uid=access_rights_uid)
どちらの方法も実装できます。私は個人的にテストします。