从 odoo 管理网络服务
Manage webservice from odoo
我是 Odoo 11 的新手,我创建了一个名为 'coupon' 的模块,为此我创建了一个安全组和一个添加的默认用户到这个组:
<record id="default_coupon_user" model="res.users">
<field name="login">couponuser</field>
<field name="password">couponuser</field>
<field name="password_crypt">couponuser</field>
<field name="name">Default User Coupon</field>
<field name="display_name">Default Coupon User</field>
<field name="customer">False</field>
</record>
<record id="coupon_managers_group" model="res.groups" >
<field name="name">Coupon Managers Group</field>
<field name="comment">Coupon Managers Group that will be used in the Coupon microservice.</field>
<field name="category_id" ref="base.module_category_coupon"/>
<field name="users" eval="[(4, ref('coupon.default_coupon_user'))]"/>
</record>
我的模块依赖于网站,因为我需要创建一个网站,为此我创建了一个索引页面:
<!-- === Coupon Page === -->
<template id="index_template">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<h1>Coupons</h1>
<a href="/payum_coupon/create" class="btn btn-primary btn-lg">
Add
</a>
<p>paginas:
<t t-esc="coupons['pg']"/>
</p>
<p>total:
<t t-esc="coupons['total']"/>
</p>
<ul class="clientes">
<t t-foreach="coupons['items']" t-as="i">
<li>
<a t-attf-href="/payum_coupon/{{i['email']}}">
<t t-esc="i['firstName']"/>
<t t-esc="i['lastName']"/>
-
<t t-esc="i['email']"/>
</a>
</li>
</t>
</ul>
</div>
</div>
</t>
</template>
<record id="coupon_page" model="website.page">
<field name="name">Index Coupon page</field>
<field name="website_published">True</field>
<field name="url">/coupon</field>
<field name="view_id" ref="index_template"/>
<field name="groups">coupon.coupon_managers_group</field>
</record>
和 website.menu 使用以下代码:
<record id="coupon_page_link" model="website.menu">
<field name="name">Coupon</field>
<field name="page_id" ref="coupon_page"/>
<field name="parent_id" ref="website.main_menu"/>
</record>
将由所述菜单执行的控制器中的python代码是这样的:
@http.route('/coupon', auth='user', website=True)
def index(self, **kw):
#<<my code here>>
我需要几样东西:
如果会话中的用户不在'coupon.coupon_managers_group'[中,则显示'index'页面时=40=] group 然后菜单不显示
并且当执行控制器方法 '/coupon' 时,验证会话中的用户是否在组 'coupon.coupon_managers_group'
这个站点有一个特殊性,我的模块没有模型,因为它是管理一个api rest应用程序的数据,也就是说,在odoo中我必须创建列表的视图,创建等,但数据已写入并从远程 Web 服务读取。
我在互联网上搜索了很多网站,但我没有找到任何东西,因为它们总是引用 odoo 中的本地案例。
要根据用户组隐藏网站菜单,您可以这样做:
from odoo import api, models
class Menu(models.Model):
_inherit = "website.menu"
@api.one
def _compute_visible(self):
if self.clean_url() == '/coupon' and not self.env.user.has_group('coupon.coupon_managers_group'):
return False
return super(Menu, self)._compute_visible()
在路由的控制器中 /coupon
你可以像这样检查用户组:
request.env.user.has_group('coupon.coupon_managers_group')
我是 Odoo 11 的新手,我创建了一个名为 'coupon' 的模块,为此我创建了一个安全组和一个添加的默认用户到这个组:
<record id="default_coupon_user" model="res.users">
<field name="login">couponuser</field>
<field name="password">couponuser</field>
<field name="password_crypt">couponuser</field>
<field name="name">Default User Coupon</field>
<field name="display_name">Default Coupon User</field>
<field name="customer">False</field>
</record>
<record id="coupon_managers_group" model="res.groups" >
<field name="name">Coupon Managers Group</field>
<field name="comment">Coupon Managers Group that will be used in the Coupon microservice.</field>
<field name="category_id" ref="base.module_category_coupon"/>
<field name="users" eval="[(4, ref('coupon.default_coupon_user'))]"/>
</record>
我的模块依赖于网站,因为我需要创建一个网站,为此我创建了一个索引页面:
<!-- === Coupon Page === -->
<template id="index_template">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<h1>Coupons</h1>
<a href="/payum_coupon/create" class="btn btn-primary btn-lg">
Add
</a>
<p>paginas:
<t t-esc="coupons['pg']"/>
</p>
<p>total:
<t t-esc="coupons['total']"/>
</p>
<ul class="clientes">
<t t-foreach="coupons['items']" t-as="i">
<li>
<a t-attf-href="/payum_coupon/{{i['email']}}">
<t t-esc="i['firstName']"/>
<t t-esc="i['lastName']"/>
-
<t t-esc="i['email']"/>
</a>
</li>
</t>
</ul>
</div>
</div>
</t>
</template>
<record id="coupon_page" model="website.page">
<field name="name">Index Coupon page</field>
<field name="website_published">True</field>
<field name="url">/coupon</field>
<field name="view_id" ref="index_template"/>
<field name="groups">coupon.coupon_managers_group</field>
</record>
和 website.menu 使用以下代码:
<record id="coupon_page_link" model="website.menu">
<field name="name">Coupon</field>
<field name="page_id" ref="coupon_page"/>
<field name="parent_id" ref="website.main_menu"/>
</record>
将由所述菜单执行的控制器中的python代码是这样的:
@http.route('/coupon', auth='user', website=True)
def index(self, **kw):
#<<my code here>>
我需要几样东西:
如果会话中的用户不在'coupon.coupon_managers_group'[中,则显示'index'页面时=40=] group 然后菜单不显示
并且当执行控制器方法 '/coupon' 时,验证会话中的用户是否在组 'coupon.coupon_managers_group'
这个站点有一个特殊性,我的模块没有模型,因为它是管理一个api rest应用程序的数据,也就是说,在odoo中我必须创建列表的视图,创建等,但数据已写入并从远程 Web 服务读取。
我在互联网上搜索了很多网站,但我没有找到任何东西,因为它们总是引用 odoo 中的本地案例。
要根据用户组隐藏网站菜单,您可以这样做:
from odoo import api, models
class Menu(models.Model):
_inherit = "website.menu"
@api.one
def _compute_visible(self):
if self.clean_url() == '/coupon' and not self.env.user.has_group('coupon.coupon_managers_group'):
return False
return super(Menu, self)._compute_visible()
在路由的控制器中 /coupon
你可以像这样检查用户组:
request.env.user.has_group('coupon.coupon_managers_group')