[FIX] website_membership: access right and demo data

bzr revid: chm@openerp.com-20131114113927-oiuy6zqtkwombvrw
This commit is contained in:
Christophe Matthieu 2013-11-14 12:39:27 +01:00
parent 62f00f6941
commit 3b88083958
8 changed files with 82 additions and 14 deletions

View File

@ -1 +1,2 @@
import controllers
import models

View File

@ -10,7 +10,11 @@ Website for browsing Associations, Groups and Memberships
""",
'author': 'OpenERP SA',
'depends': ['website_partner', 'website_google_map', 'association'],
'data': ['views/website_membership.xml',],
'data': [
'views/website_membership.xml',
'security/ir.model.access.csv',
'security/website_membership.xml',
],
'demo': ['demo/membership.xml'],
'qweb': ['static/src/xml/*.xml'],
'installable': True,

View File

@ -27,15 +27,12 @@ class WebsiteMembership(http.Controller):
post_country_id = int(post.get('country_id', '0'))
# base domain for groupby / searches
if request.context['is_public_user']:
base_line_domain = [('partner.website_published', '=', True)]
else:
base_line_domain = [(1, '=', 1)]
base_line_domain = [(1, '=', 1)]
if membership_id:
base_line_domain += [('membership_id', '=', membership_id)]
membership = product_obj.browse(cr, openerp.SUPERUSER_ID, membership_id, context=context)
membership = product_obj.browse(cr, uid, membership_id, context=context)
else:
membership = ''
membership = None
if post_name:
base_line_domain += ['|', ('partner.name', 'ilike', "%%%s%%" % post_name), ('partner.website_description', 'ilike', "%%%s%%" % post_name)]
@ -62,8 +59,8 @@ class WebsiteMembership(http.Controller):
# format domain for group_by and memberships
membership_domain = [('membership', '=', True)]
membership_ids = product_obj.search(cr, openerp.SUPERUSER_ID, membership_domain, context=context)
memberships = product_obj.browse(cr, openerp.SUPERUSER_ID, membership_ids, context=context)
membership_ids = product_obj.search(cr, uid, membership_domain, context=context)
memberships = product_obj.browse(cr, uid, membership_ids, context=context)
# request pager for lines
pager = request.website.pager(url="/members/", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post)
@ -83,16 +80,13 @@ class WebsiteMembership(http.Controller):
@website.route(['/members/<int:partner_id>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner_id=0, **post):
partner_obj = request.registry['res.partner']
if request.context['is_public_user']:
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', partner_id)], context=request.context)
else:
partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context)
partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context)
if not partner_ids:
return self.members(post)
values = {
'partner_id': partner_obj.browse(
request.cr, openerp.SUPERUSER_ID, partner_ids[0],
request.cr, request.uid, partner_ids[0],
context=dict(request.context, show_address=True)),
}
return request.website.render("website_membership.partner", values)

View File

@ -6,5 +6,14 @@
<record id="base.res_partner_2" model="res.partner">
<field name="website_published" eval="True"/>
</record>
<record id="membership.membership_0" model="product.product">
<field name="website_published" eval="True"/>
</record>
<record id="membership.membership_1" model="product.product">
<field name="website_published" eval="True"/>
</record>
<record id="membership.membership_2" model="product.product">
<field name="website_published" eval="True"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1 @@
import product

View File

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2013-Today OpenERP SA (<http://www.openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import osv, fields
class product_template(osv.Model):
_inherit = 'product.template'
_columns = {
'website_published': fields.boolean('Available in the website'),
}
_defaults = {
'website_published': False,
}

View File

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_membership_product_product_public,event.product.product.public,product.model_product_product,base.group_public,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_membership_product_product_public event.product.product.public product.model_product_product base.group_public 1 0 0 0

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="membership_product_product_public" model="ir.rule">
<field name="name">Product membership: Public</field>
<field name="model_id" ref="product.model_product_product"/>
<field name="domain_force">[('website_published', '=', True), ('membership', '=', True)]</field>
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="membership_membership_line_public" model="ir.rule">
<field name="name">Membership line: Public</field>
<field name="model_id" ref="membership.model_membership_membership_line"/>
<field name="domain_force">[('partner.website_published', '=', True)]</field>
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
</data>
</openerp>