[FIX] website_membership: access right and demo data
authorChristophe Matthieu <chm@openerp.com>
Thu, 14 Nov 2013 11:39:27 +0000 (12:39 +0100)
committerChristophe Matthieu <chm@openerp.com>
Thu, 14 Nov 2013 11:39:27 +0000 (12:39 +0100)
bzr revid: chm@openerp.com-20131114113927-oiuy6zqtkwombvrw

addons/website_membership/__init__.py
addons/website_membership/__openerp__.py
addons/website_membership/controllers/main.py
addons/website_membership/demo/membership.xml
addons/website_membership/models/__init__.py [new file with mode: 0644]
addons/website_membership/models/product.py [new file with mode: 0644]
addons/website_membership/security/ir.model.access.csv [new file with mode: 0644]
addons/website_membership/security/website_membership.xml [new file with mode: 0644]

index 40b92a8..0f93b6f 100644 (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,
index 07ff765..74b719c 100644 (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)
index e6c1263..138493f 100644 (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>
diff --git a/addons/website_membership/models/__init__.py b/addons/website_membership/models/__init__.py
new file mode 100644 (file)
index 0000000..926e5cf
--- /dev/null
@@ -0,0 +1 @@
+import product
diff --git a/addons/website_membership/models/product.py b/addons/website_membership/models/product.py
new file mode 100644 (file)
index 0000000..c45a7a5
--- /dev/null
@@ -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,
+    }
diff --git a/addons/website_membership/security/ir.model.access.csv b/addons/website_membership/security/ir.model.access.csv
new file mode 100644 (file)
index 0000000..5df155e
--- /dev/null
@@ -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
\ No newline at end of file
diff --git a/addons/website_membership/security/website_membership.xml b/addons/website_membership/security/website_membership.xml
new file mode 100644 (file)
index 0000000..345b7f9
--- /dev/null
@@ -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>