diff options
| author | Christophe Matthieu <chm@openerp.com> | 2013-08-02 05:55:04 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2013-08-02 05:55:04 +0200 |
| commit | d37aebb7f0fd712a063d0beb6f19e81d1d337510 (patch) | |
| tree | 3501d62bc850571900816b79b43b9dc536e06721 /addons | |
| parent | de0e2ab31325e165081f62dd7acabc631f278726 (diff) | |
[IMP] website: security and public access
bzr revid: chm@openerp.com-20130802035504-lokijwh57e0q3w6a
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/product/security/ir.model.access.csv | 2 | ||||
| -rw-r--r-- | addons/website_mail/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_mail/static/src/js/blog.js | 2 | ||||
| -rw-r--r-- | addons/website_sale/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website_sale/__openerp__.py | 4 | ||||
| -rw-r--r-- | addons/website_sale/controllers/main.py | 17 | ||||
| -rw-r--r-- | addons/website_sale/product.py | 10 | ||||
| -rw-r--r-- | addons/website_sale/security/ecommerce.xml | 15 | ||||
| -rw-r--r-- | addons/website_sale/security/ir.model.access.csv | 3 | ||||
| -rw-r--r-- | addons/website_sale/static/src/js/ecommerce.js | 17 | ||||
| -rw-r--r-- | addons/website_sale/views/ecommerce.xml | 44 |
11 files changed, 105 insertions, 12 deletions
diff --git a/addons/product/security/ir.model.access.csv b/addons/product/security/ir.model.access.csv index d4c4261bb8c..637c4b47a28 100644 --- a/addons/product/security/ir.model.access.csv +++ b/addons/product/security/ir.model.access.csv @@ -17,4 +17,4 @@ access_product_pricelist_partner_manager,product.pricelist partner manager,model access_product_product_employee,product.product employee,model_product_product,base.group_user,1,0,0,0
access_product_template_sale_manager,product.template salemanager,model_product_template,base.group_sale_manager,1,1,1,1
access_product_product_sale_manager,product.product salemanager,model_product_product,base.group_sale_manager,1,1,1,1
-access_product_category_sale_manager,product.category salemanager,product.model_product_category,base.group_sale_manager,1,1,1,1
+access_product_category_sale_manager,product.category salemanager,product.model_product_category,base.group_sale_manager,1,1,1,1
\ No newline at end of file diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index dd155eccf32..18fceb2ea7c 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -62,7 +62,7 @@ class website_mail(http.Controller): @http.route(['/blog/publish'], type='http', auth="public") def publish(self, **post): - message_id = int(post['message_id']) + message_id = int(post['id']) message_obj = request.registry['mail.message'] blog = message_obj.browse(request.cr, request.uid, message_id) diff --git a/addons/website_mail/static/src/js/blog.js b/addons/website_mail/static/src/js/blog.js index 1588c7cd9b5..7d62d43ba5e 100644 --- a/addons/website_mail/static/src/js/blog.js +++ b/addons/website_mail/static/src/js/blog.js @@ -5,7 +5,7 @@ $(document).ready(function () { $link.find('.js_publish, .js_unpublish').addClass("hidden"); var $unp = $link.find(".js_unpublish"); var $p = $link.find(".js_publish"); - $.post('/blog/publish/', {'message_id': $link.data('id')}, function (result) { + $.post('/blog/publish', {'id': $link.data('id')}, function (result) { if (+result) { $p.addClass("hidden"); $unp.removeClass("hidden"); diff --git a/addons/website_sale/__init__.py b/addons/website_sale/__init__.py index e6dc1baf9d5..ce36211f7be 100644 --- a/addons/website_sale/__init__.py +++ b/addons/website_sale/__init__.py @@ -1,2 +1,3 @@ import controllers import pricelist +import product diff --git a/addons/website_sale/__openerp__.py b/addons/website_sale/__openerp__.py index 6565269b1b4..ace4505c1f5 100644 --- a/addons/website_sale/__openerp__.py +++ b/addons/website_sale/__openerp__.py @@ -11,7 +11,9 @@ OpenERP E-Commerce 'depends': ['website', 'sale', 'point_of_sale'], 'data': [ 'views/ecommerce.xml', - 'views/pricelist.xml' + 'views/pricelist.xml', + 'security/ir.model.access.csv', + 'security/ecommerce.xml', ], 'qweb': ['static/src/xml/*.xml'], 'installable': True, diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 4d2733d75e6..bae6b8b0758 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -71,7 +71,7 @@ class Ecommerce(http.Controller): @http.route(['/shop', '/shop/category/<cat_id>'], type='http', auth="public") def category(self, cat_id=0, offset=0, **post): - domain = [] + domain = [("sale_ok", "=", True)] if post.get("search"): domain += ['|', '|', ('name', 'ilike', "%%%s%%" % post.get("search")), ('desrequest.cription', 'ilike', "%%%s%%" % post.get("search")), ('pos_categ_id.name', 'ilike', "%%%s%%" % post.get("search"))] if cat_id: @@ -79,11 +79,11 @@ class Ecommerce(http.Controller): domain = [('pos_categ_id.id', 'child_of', cat_id)] + domain product_obj = request.registry.get('product.product') - product_ids = product_obj.search(request.cr, openerp.SUPERUSER_ID, domain or [(1, '=', 1)], limit=20, offset=offset) + product_ids = product_obj.search(request.cr, request.uid, domain, limit=20, offset=offset) values = { 'current_category': cat_id, - 'products': product_obj.browse(request.cr, openerp.SUPERUSER_ID, product_ids), + 'products': product_obj.browse(request.cr, request.uid, product_ids), 'search': post.get("search"), } html = self.render("website_sale.products", values) @@ -314,4 +314,15 @@ class Ecommerce(http.Controller): } return self.render("website_sale.confirmed", values) + @http.route(['/shop/publish'], type='http', auth="public") + def publish(self, **post): + product_id = int(post['id']) + product_obj = request.registry['product.product'] + + product = product_obj.browse(request.cr, request.uid, product_id) + product_obj.write(request.cr, request.uid, [product_id], {'website_published': not product.website_published}) + product = product_obj.browse(request.cr, request.uid, product_id) + + return product.website_published and "1" or "0" + # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website_sale/product.py b/addons/website_sale/product.py new file mode 100644 index 00000000000..c6f8da63613 --- /dev/null +++ b/addons/website_sale/product.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +from openerp.osv import osv, fields + + +class product_pricelist(osv.osv): + _inherit = "product.product" + _columns = { + 'website_published': fields.boolean('Available in the website'), + }
\ No newline at end of file diff --git a/addons/website_sale/security/ecommerce.xml b/addons/website_sale/security/ecommerce.xml new file mode 100644 index 00000000000..b37578d41e0 --- /dev/null +++ b/addons/website_sale/security/ecommerce.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> +<data> + <record id="product_product_public" model="ir.rule"> + <field name="name">product: Public product</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">[('website_published', '=', True), ("sale_ok", "=", 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> diff --git a/addons/website_sale/security/ir.model.access.csv b/addons/website_sale/security/ir.model.access.csv new file mode 100644 index 00000000000..8d41ba779d4 --- /dev/null +++ b/addons/website_sale/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_product_product_public,product.product.public,product.model_product_product,base.group_public,1,0,0,0 +access_point_of_sale_category_public,point_of_sale.category.public,point_of_sale.model_pos_category,base.group_public,1,0,0,0
\ No newline at end of file diff --git a/addons/website_sale/static/src/js/ecommerce.js b/addons/website_sale/static/src/js/ecommerce.js index a53a1451302..ed4581abf2b 100644 --- a/addons/website_sale/static/src/js/ecommerce.js +++ b/addons/website_sale/static/src/js/ecommerce.js @@ -1,4 +1,21 @@ $(document).ready(function () { + $('.oe_ecommerce').on('click', '.js_publish, .js_unpublish', function (e) { + e.preventDefault(); + var $link = $(this).parent(); + $link.find('.js_publish, .js_unpublish').addClass("hidden"); + var $unp = $link.find(".js_unpublish"); + var $p = $link.find(".js_publish"); + $.post('/shop/publish', {'id': $link.data('id')}, function (result) { + if (+result) { + $p.addClass("hidden"); + $unp.removeClass("hidden"); + } else { + $p.removeClass("hidden"); + $unp.addClass("hidden"); + } + }); + }); + $('.oe_ecommerce').on('click', '.oe_product .btn, .oe_product_detail .btn', function (e) { var $button = $(e.currentTarget); var $product = $button.parents('.oe_product:first, .oe_product_detail:first'); diff --git a/addons/website_sale/views/ecommerce.xml b/addons/website_sale/views/ecommerce.xml index af3a666c3e3..a86e8f0a4d7 100644 --- a/addons/website_sale/views/ecommerce.xml +++ b/addons/website_sale/views/ecommerce.xml @@ -16,6 +16,31 @@ </data> </field> </record> + <record id="header_ecommerce" model="ir.ui.view"> + <field name="name">header_ecommerce</field> + <field name="inherit_id" ref="website.header"/> + <field name="arch" type="xml"> + <data> + <xpath expr="(//li)[last()]" position="after"> + <li class="pull-right"><a href="/shop/mycart"><i class="icon-shopping-cart icon-large" style="position: absolute;"></i>&nbsp; &nbsp; &nbsp; My cart</a></li> + <li class="pull-right"><a href="/shop">Shop</a></li> + </xpath> + </data> + </field> + </record> + + <record id="product_normal_form_view" model="ir.ui.view"> + <field name="name">product.normal.form.inherit</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/> + <field name="arch" type="xml"> + <group name="sale" position="before"> + <group name="pos" string="Website"> + <field name="website_published"/> + </group> + </group> + </field> + </record> <!-- Page Shop --> @@ -83,15 +108,20 @@ <template id="product_card"> <div class="media oe_product span3"> <a t-att-href="'/shop/product/%%s' %% product.id"><h4 class="media-heading"><span t-record="product" t-field="name"><t t-esc="product.name"/></span></h4></a> - <a class="pull-left" t-att-href="'/shop/product/%%s' %% product.id"><img class="media-object" t-att-src="'data:image/png;base64,' + product.image"/></a> + <a class="pull-left" t-att-href="'/shop/product/%%s' %% product.id"> + <img class="media-object" t-att-src="'data:image/png;base64,' + product.image"/> + </a> <div class="media-body"> <div class="oe_ecommerce_description" t-record="product" t-field="description_sale"><t t-esc="product.description_sale"/></div> <div class="oe_ecommerce_price"><span><span t-record="product" t-field="list_price"><t t-esc="product.list_price"/></span>€</span></div> <div class="oe_button_cart"> - <button t-att-class="'btn btn-small btn-inverse %%s' %% (not quantity and 'oe_hidden' or '')" t-att-data-id="product.id">Remove one</button> - <button t-att-class="'btn btn-small %%s' %% (quantity and 'btn-success' or 'btn-primary')" t-att-data-id="product.id">Add to cart - <span class="oe_txt">(<span class="oe_quantity"><t t-esc="quantity"/></span>)</span> - </button> + <div class="alert mb0" t-if="editable and not product.website_published">Product not published</div> + <t t-if="product.website_published"> + <button t-att-class="'btn btn-small btn-inverse %%s' %% (not quantity and 'oe_hidden' or '')" t-att-data-id="product.id">Remove one</button> + <button t-att-class="'btn btn-small %%s' %% (quantity and 'btn-success' or 'btn-primary')" t-att-data-id="product.id">Add to cart + <span class="oe_txt">(<span class="oe_quantity"><t t-esc="quantity"/></span>)</span> + </button> + </t> </div> </div> </div> @@ -113,6 +143,10 @@ <t t-set="title">Product</t> <t t-set="shop_content"> <div class="oe_product_detail"> + <a href="#" t-att-data-id="product.id" class="pull-right" t-if="editable"> + <span t-att-class="'label label-success js_unpublish %%s' %% (not product.website_published and 'hidden' or '')">Click to Unpublish</span> + <span t-att-class="'label label-important js_publish %%s' %% (product.website_published and 'hidden' or '')">Click to Publish</span> + </a> <h1><span t-record="product" t-field="name"><t t-esc="product.name"/></span></h1> <div class="oe_button_cart"> <button t-att-class="'btn btn-inverse %%s' %% (not quantity and 'oe_hidden' or '')" t-att-data-id="product.id">Remove one</button> |
