summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2017-08-21 13:16:24 +0200
committerThibault Delavallée <tde@odoo.com>2017-08-21 13:54:08 +0200
commitbcada50bc59dbc23b28f173dbda9677e6a435617 (patch)
treea28747154dd798f35f1d557696fcf71999ab9d3e /addons
parentab000006247738b954e8729b823b288046886e8e (diff)
[MOV] (website_portal_)purchase: move customer portal to purchase
Diffstat (limited to 'addons')
-rw-r--r--addons/purchase/__init__.py1
-rw-r--r--addons/purchase/__manifest__.py1
-rw-r--r--addons/purchase/controllers/__init__.py (renamed from addons/website_portal_purchase/models/__init__.py)2
-rw-r--r--addons/purchase/controllers/portal.py (renamed from addons/website_portal_purchase/controllers/website_portal.py)14
-rw-r--r--addons/purchase/models/purchase.py11
-rw-r--r--addons/purchase/security/ir.model.access.csv2
-rw-r--r--addons/purchase/security/purchase_security.xml17
-rw-r--r--addons/purchase/views/portal_templates.xml (renamed from addons/website_portal_purchase/views/website_portal_purchase_templates.xml)2
-rw-r--r--addons/website_portal_purchase/__init__.py3
-rw-r--r--addons/website_portal_purchase/__manifest__.py3
-rw-r--r--addons/website_portal_purchase/controllers/__init__.py4
-rw-r--r--addons/website_portal_purchase/models/purchase.py23
-rw-r--r--addons/website_portal_purchase/security/ir.model.access.csv3
-rw-r--r--addons/website_portal_purchase/security/website_portal_purchase_security.xml24
14 files changed, 41 insertions, 69 deletions
diff --git a/addons/purchase/__init__.py b/addons/purchase/__init__.py
index 2609681a938..5905766d867 100644
--- a/addons/purchase/__init__.py
+++ b/addons/purchase/__init__.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from . import controllers
from . import models
from . import report
diff --git a/addons/purchase/__manifest__.py b/addons/purchase/__manifest__.py
index ac28acc6a60..689729b62a6 100644
--- a/addons/purchase/__manifest__.py
+++ b/addons/purchase/__manifest__.py
@@ -26,6 +26,7 @@
'data/mail_template_data.xml',
'views/purchase_config_settings_views.xml',
'views/account_config_settings_views.xml',
+ 'views/portal_templates.xml',
'report/purchase_order_templates.xml',
'report/purchase_quotation_templates.xml',
],
diff --git a/addons/website_portal_purchase/models/__init__.py b/addons/purchase/controllers/__init__.py
index 41d97a90eb4..903b755e71e 100644
--- a/addons/website_portal_purchase/models/__init__.py
+++ b/addons/purchase/controllers/__init__.py
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from . import purchase
+from . import portal
diff --git a/addons/website_portal_purchase/controllers/website_portal.py b/addons/purchase/controllers/portal.py
index 4694cc541c3..2e8c77bbfa3 100644
--- a/addons/website_portal_purchase/controllers/website_portal.py
+++ b/addons/purchase/controllers/portal.py
@@ -8,13 +8,13 @@ from odoo.exceptions import AccessError
from odoo.http import request
from odoo.tools import pycompat
from odoo.tools.translate import _
-from odoo.addons.portal.controllers.portal import get_records_pager, CustomerPortal
+from odoo.addons.portal.controllers.portal import get_records_pager, pager as portal_pager, CustomerPortal
-class WebsitePortal(CustomerPortal):
+class CustomerPortal(CustomerPortal):
def _prepare_portal_layout_values(self):
- values = super(WebsitePortal, self)._prepare_portal_layout_values()
+ values = super(CustomerPortal, self)._prepare_portal_layout_values()
partner = request.env.user.partner_id
values['purchase_count'] = request.env['purchase.order'].search_count([
'|',
@@ -64,7 +64,7 @@ class WebsitePortal(CustomerPortal):
# count for pager
purchase_count = PurchaseOrder.search_count(domain)
# make pager
- pager = request.website.pager(
+ pager = portal_pager(
url="/my/purchase",
url_args={'date_begin': date_begin, 'date_end': date_end},
total=purchase_count,
@@ -92,7 +92,7 @@ class WebsitePortal(CustomerPortal):
'filterby': filterby,
'default_url': '/my/purchase',
})
- return request.render("website_portal_purchase.portal_my_purchase_orders", values)
+ return request.render("purchase.portal_my_purchase_orders", values)
@http.route(['/my/purchase/<int:order_id>'], type='http', auth="user", website=True)
def portal_my_purchase_order(self, order_id=None, **kw):
@@ -101,10 +101,10 @@ class WebsitePortal(CustomerPortal):
order.check_access_rights('read')
order.check_access_rule('read')
except AccessError:
- return request.render("website.403")
+ return request.redirect('/my')
history = request.session.get('my_purchases_history', [])
values = {
'order': order.sudo(),
}
values.update(get_records_pager(history, order))
- return request.render("website_portal_purchase.portal_my_purchase_order", values)
+ return request.render("purchase.portal_my_purchase_order", values)
diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py
index 9c8c9b00f57..6334dfc6b5c 100644
--- a/addons/purchase/models/purchase.py
+++ b/addons/purchase/models/purchase.py
@@ -163,6 +163,14 @@ class PurchaseOrder(models.Model):
group_id = fields.Many2one('procurement.group', string="Procurement Group", copy=False)
is_shipped = fields.Boolean(compute="_compute_is_shipped")
+ website_url = fields.Char(
+ 'Website URL', compute='_website_url',
+ help='The full URL to access the document through the website.')
+
+ def _website_url(self):
+ for order in self:
+ order.website_url = '/my/purchase/%s' % (order.id)
+
@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
args = args or []
@@ -595,6 +603,9 @@ class PurchaseOrderLine(models.Model):
taxes_id = fields.Many2many('account.tax', string='Taxes', domain=['|', ('active', '=', False), ('active', '=', True)])
product_uom = fields.Many2one('product.uom', string='Product Unit of Measure', required=True)
product_id = fields.Many2one('product.product', string='Product', domain=[('purchase_ok', '=', True)], change_default=True, required=True)
+ product_image = fields.Binary(
+ 'Product Image', related="product_id.image",
+ help="Non-stored related field to allow portal user to see the image of the product he has ordered")
move_ids = fields.One2many('stock.move', 'purchase_line_id', string='Reservation', readonly=True, ondelete='set null', copy=False)
price_unit = fields.Float(string='Unit Price', required=True, digits=dp.get_precision('Product Price'))
diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv
index 713e10ca488..8a1bb0e2943 100644
--- a/addons/purchase/security/ir.model.access.csv
+++ b/addons/purchase/security/ir.model.access.csv
@@ -3,10 +3,12 @@ access_purchase_order,purchase.order,model_purchase_order,group_purchase_user,1,
access_purchase_order_manager,purchase.order,model_purchase_order,group_purchase_manager,1,1,1,1
access_purchase_order_stock_worker,purchase.order,model_purchase_order,stock.group_stock_user,1,0,0,0
access_purchase_order_invoicing_payments,purchase.order,model_purchase_order,account.group_account_invoice,1,1,0,0
+access_purchase_order_portal,purchase.order.portal,purchase.model_purchase_order,base.group_portal,1,0,0,0
access_purchase_order_line,purchase.order.line user,model_purchase_order_line,group_purchase_user,1,1,1,1
access_purchase_order_line_manager,purchase.order.line,model_purchase_order_line,group_purchase_manager,1,1,1,1
access_purchase_order_line_stock_worker,purchase.order.line,model_purchase_order_line,stock.group_stock_user,1,0,0,0
access_purchase_order_line_invoicing_payments,purchase.order.line,model_purchase_order_line,account.group_account_invoice,1,1,0,0
+access_purchase_order_line_portal,purchase.order.line.portal,purchase.model_purchase_order_line,base.group_portal,1,0,0,0
access_stock_location_purchase_user,stock.location,stock.model_stock_location,group_purchase_user,1,0,0,0
access_stock_warehouse_purchase_user,stock.warehouse,stock.model_stock_warehouse,group_purchase_user,1,0,0,0
access_stock_picking_purchase_user,stock.picking,stock.model_stock_picking,group_purchase_user,1,1,1,1
diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml
index 1416745a8bb..4e87a129066 100644
--- a/addons/purchase/security/purchase_security.xml
+++ b/addons/purchase/security/purchase_security.xml
@@ -51,5 +51,22 @@
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
+ <record id="portal_purchase_order_user_rule" model="ir.rule">
+ <field name="name">Portal Purchase Orders</field>
+ <field name="model_id" ref="purchase.model_purchase_order"/>
+ <field name="domain_force">[('message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
+ <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
+ <field name="perm_unlink" eval="1"/>
+ <field name="perm_write" eval="1"/>
+ <field name="perm_read" eval="1"/>
+ <field name="perm_create" eval="0"/>
+ </record>
+
+ <record id="portal_purchase_order_line_rule" model="ir.rule">
+ <field name="name">Portal Purhcase Orders Line</field>
+ <field name="model_id" ref="purchase.model_purchase_order_line"/>
+ <field name="domain_force">[('order_id.message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
+ <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
+ </record>
</data>
</odoo>
diff --git a/addons/website_portal_purchase/views/website_portal_purchase_templates.xml b/addons/purchase/views/portal_templates.xml
index 9c6f6acb9e6..4040abefd90 100644
--- a/addons/website_portal_purchase/views/website_portal_purchase_templates.xml
+++ b/addons/purchase/views/portal_templates.xml
@@ -54,7 +54,7 @@
</t>
</table></div>
<div t-if="pager" class="o_portal_pager text-center">
- <t t-call="website.pager"/>
+ <t t-call="portal.pager"/>
</div>
</div>
</t>
diff --git a/addons/website_portal_purchase/__init__.py b/addons/website_portal_purchase/__init__.py
index 7d34c7c054a..67dee8c60db 100644
--- a/addons/website_portal_purchase/__init__.py
+++ b/addons/website_portal_purchase/__init__.py
@@ -1,5 +1,2 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import controllers
-from . import models
diff --git a/addons/website_portal_purchase/__manifest__.py b/addons/website_portal_purchase/__manifest__.py
index 5e99ea91d51..18a73b54960 100644
--- a/addons/website_portal_purchase/__manifest__.py
+++ b/addons/website_portal_purchase/__manifest__.py
@@ -15,9 +15,6 @@ Display purchase orders on your website. Customers will be able to access their
'portal',
],
'data': [
- 'views/website_portal_purchase_templates.xml',
- 'security/ir.model.access.csv',
- 'security/website_portal_purchase_security.xml',
],
'installable': True,
}
diff --git a/addons/website_portal_purchase/controllers/__init__.py b/addons/website_portal_purchase/controllers/__init__.py
deleted file mode 100644
index 4554440ea0b..00000000000
--- a/addons/website_portal_purchase/controllers/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import website_portal
diff --git a/addons/website_portal_purchase/models/purchase.py b/addons/website_portal_purchase/models/purchase.py
deleted file mode 100644
index 10e55775c21..00000000000
--- a/addons/website_portal_purchase/models/purchase.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo import fields, models
-
-
-class PurchaseOrder(models.Model):
-
- _inherit = 'purchase.order'
-
- website_url = fields.Char('Website URL', compute='_website_url', help='The full URL to access the document through the website.')
-
- def _website_url(self):
- for order in self:
- order.website_url = '/my/purchase/%s' % (order.id)
-
-
-class PurchaseOrderLine(models.Model):
-
- _inherit = 'purchase.order.line'
-
- # Non-stored related field to allow portal user to see the image of the product he has ordered
- product_image = fields.Binary('Product Image', related="product_id.image")
diff --git a/addons/website_portal_purchase/security/ir.model.access.csv b/addons/website_portal_purchase/security/ir.model.access.csv
deleted file mode 100644
index 1405075a7a6..00000000000
--- a/addons/website_portal_purchase/security/ir.model.access.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_purchase_order_portal,purchase.order.portal,purchase.model_purchase_order,base.group_portal,1,0,0,0
-access_purchase_order_line_portal,purchase.order.line.portal,purchase.model_purchase_order_line,base.group_portal,1,0,0,0
diff --git a/addons/website_portal_purchase/security/website_portal_purchase_security.xml b/addons/website_portal_purchase/security/website_portal_purchase_security.xml
deleted file mode 100644
index d689d887377..00000000000
--- a/addons/website_portal_purchase/security/website_portal_purchase_security.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo>
- <data noupdate="1">
-
- <record id="portal_purchase_order_user_rule" model="ir.rule">
- <field name="name">Portal Purchase Orders</field>
- <field name="model_id" ref="purchase.model_purchase_order"/>
- <field name="domain_force">[('message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
- <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
- <field name="perm_unlink" eval="1"/>
- <field name="perm_write" eval="1"/>
- <field name="perm_read" eval="1"/>
- <field name="perm_create" eval="0"/>
- </record>
-
- <record id="portal_purchase_order_line_rule" model="ir.rule">
- <field name="name">Portal Purhcase Orders Line</field>
- <field name="model_id" ref="purchase.model_purchase_order_line"/>
- <field name="domain_force">[('order_id.message_partner_ids','child_of',[user.commercial_partner_id.id])]</field>
- <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
- </record>
-
- </data>
-</odoo>