From 7390b48a89511df0176e3e8b5940305bed63c3d3 Mon Sep 17 00:00:00 2001
From: Fabien Meghazi
Date: Tue, 12 Nov 2013 11:13:32 +0100
Subject: [PATCH 01/16] [IMP] Moved Add menu item to the dialog's body
bzr revid: fme@openerp.com-20131112101332-k8md3tiysoydn224
---
addons/website/static/src/js/website.menu.js | 4 +---
addons/website/static/src/xml/website.menu.xml | 12 ++++++------
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/addons/website/static/src/js/website.menu.js b/addons/website/static/src/js/website.menu.js
index 5ed3f5dcb7f..04da43cefa2 100644
--- a/addons/website/static/src/js/website.menu.js
+++ b/addons/website/static/src/js/website.menu.js
@@ -27,7 +27,7 @@
website.menu.EditMenuDialog = website.editor.Dialog.extend({
template: 'website.menu.dialog.edit',
events: _.extend({}, website.editor.Dialog.prototype.events, {
- 'click button.js_add_menu': 'add_menu',
+ 'click a.js_add_menu': 'add_menu',
'click button.js_edit_menu': 'edit_menu',
'click button.js_delete_menu': 'delete_menu',
}),
@@ -40,8 +40,6 @@
},
start: function () {
var r = this._super.apply(this, arguments);
- var button = openerp.qweb.render('website.menu.dialog.footer-button');
- this.$('.modal-footer').prepend(button);
this.$('.oe_menu_editor').nestedSortable({
listType: 'ul',
handle: 'div',
diff --git a/addons/website/static/src/xml/website.menu.xml b/addons/website/static/src/xml/website.menu.xml
index c9c73c32ae7..6eea8b25466 100644
--- a/addons/website/static/src/xml/website.menu.xml
+++ b/addons/website/static/src/xml/website.menu.xml
@@ -21,19 +21,19 @@
-
-
-
- Edit Structure
+ Edit Menu
+
+
+
From 92b0539d1d777213199860d72bc412b04d1d40be Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Tue, 12 Nov 2013 11:04:11 +0100
Subject: [PATCH 02/16] [IMP] remove unused local variable in list_pages
bzr revid: xmo@openerp.com-20131112100411-r4va4xpcovnawuzr
---
addons/website/models/website.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 7648d4cdcf2..ef2b93c53f6 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -336,7 +336,6 @@ class website(osv.osv):
router = request.httprequest.app.get_db_router(request.db)
for rule in router.iter_rules():
- endpoint = rule.endpoint
if not self.rule_is_enumerable(rule):
continue
From 5b0e0a343b3a1f94f2b4d4a6d2a8cbf1de4bd774 Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Tue, 12 Nov 2013 11:15:59 +0100
Subject: [PATCH 03/16] [IMP] use pair unpacking rather than indexing + comment
bzr revid: xmo@openerp.com-20131112101559-s280ffmmc06vq23a
---
addons/website/models/website.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index ef2b93c53f6..28d6c763490 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -345,8 +345,7 @@ class website(osv.osv):
)))
for values in generated:
- # rule.build returns (domain_part, rel_url)
- url = rule.build(values, append_unknown=False)[1]
+ domain_part, url = rule.build(values, append_unknown=False)
yield {'name': url, 'url': url }
def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None, context=None):
From 3275dcf32a1e7b08f5f30959e82af32e04bcc8b9 Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Tue, 12 Nov 2013 11:45:09 +0100
Subject: [PATCH 04/16] [FIX] website.hr.recruitment, website res.company:
access right, add a constraint with address_id (must be published) on
hr.recruitment and add a related field website_published on res.company
bzr revid: chm@openerp.com-20131112104509-0n266eias5oc55gb
---
addons/website_hr_recruitment/models/hr_job.py | 9 +++++++++
addons/website_partner/__openerp__.py | 1 +
addons/website_partner/data/website_data.xml | 8 ++++++++
addons/website_partner/models/__init__.py | 3 ++-
addons/website_partner/models/res_company.py | 11 +++++++++++
5 files changed, 31 insertions(+), 1 deletion(-)
create mode 100644 addons/website_partner/data/website_data.xml
create mode 100644 addons/website_partner/models/res_company.py
diff --git a/addons/website_hr_recruitment/models/hr_job.py b/addons/website_hr_recruitment/models/hr_job.py
index 96e2c1d7efd..8c341467354 100644
--- a/addons/website_hr_recruitment/models/hr_job.py
+++ b/addons/website_hr_recruitment/models/hr_job.py
@@ -10,3 +10,12 @@ class hr_job(osv.osv):
'website_published': fields.boolean('Available in the website'),
'website_description': fields.html('Description for the website'),
}
+
+ def _check_address_id_published(self, cr, uid, ids, context=None):
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.website_published and obj.address_id and not obj.address_id.website_published:
+ return False
+ return True
+ _constraints = [
+ (_check_address_id_published, "This Jobpost can't be published if the field Job Location is not website published.", ['address_id','website_published']),
+ ]
\ No newline at end of file
diff --git a/addons/website_partner/__openerp__.py b/addons/website_partner/__openerp__.py
index be318efa541..fa113ba3a44 100644
--- a/addons/website_partner/__openerp__.py
+++ b/addons/website_partner/__openerp__.py
@@ -31,6 +31,7 @@
'views/res_partner_view.xml',
'views/website_partner_view.xml',
'security/website_partner_security.xml',
+ 'data/website_data.xml',
],
'css': [
],
diff --git a/addons/website_partner/data/website_data.xml b/addons/website_partner/data/website_data.xml
new file mode 100644
index 00000000000..dbb20996241
--- /dev/null
+++ b/addons/website_partner/data/website_data.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ True
+
+
+
\ No newline at end of file
diff --git a/addons/website_partner/models/__init__.py b/addons/website_partner/models/__init__.py
index f6dfb12ddc8..22f0f772809 100644
--- a/addons/website_partner/models/__init__.py
+++ b/addons/website_partner/models/__init__.py
@@ -1 +1,2 @@
-import res_partner
\ No newline at end of file
+import res_partner
+import res_company
\ No newline at end of file
diff --git a/addons/website_partner/models/res_company.py b/addons/website_partner/models/res_company.py
new file mode 100644
index 00000000000..c514be0fe65
--- /dev/null
+++ b/addons/website_partner/models/res_company.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import osv, fields
+
+
+class WebsiteResCompany(osv.Model):
+ _inherit = 'res.company'
+
+ _columns = {
+ 'website_published': fields.related('partner_id', 'website_published', string='Publish', help="Publish on the website"),
+ }
From 91ac20c28c4c86837310d682a6e7b76799a1f8f7 Mon Sep 17 00:00:00 2001
From: Fabien Meghazi
Date: Tue, 12 Nov 2013 12:21:50 +0100
Subject: [PATCH 05/16] [FIX] Remove lang_code from kwargs
bzr revid: fme@openerp.com-20131112112150-ka9ner1bkqx6ioeg
---
addons/website/models/website.py | 2 +-
addons/website_sale/controllers/main.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 28d6c763490..176ff0d3a38 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -37,7 +37,7 @@ def route(routes, *route_args, **route_kwargs):
@http.route(new_routes, *route_args, **route_kwargs)
@functools.wraps(f, assigned=functools.WRAPPER_ASSIGNMENTS + ('func_name',))
def wrap(*args, **kwargs):
- request.route_lang = kwargs.get('lang_code', None)
+ request.route_lang = kwargs.pop('lang_code', None)
if not hasattr(request, 'website'):
request.multilang = f.multilang
# TODO: Select website, currently hard coded
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index f2570d7e235..19611c5d5dc 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -342,7 +342,7 @@ class Ecommerce(http.Controller):
return request.website.render("website_sale.products", values)
@website.route(['/shop/product//'], type='http', auth="public", multilang=True)
- def product(self, product, search='', category='', filter='', promo=None, lang_code=None):
+ def product(self, product, search='', category='', filter='', promo=None):
if promo:
self.change_pricelist(promo)
From b1b29acd4b1890406f7568ee8522bf03572f6c0a Mon Sep 17 00:00:00 2001
From: Xavier Morel
Date: Tue, 12 Nov 2013 13:08:14 +0100
Subject: [PATCH 06/16] [ADD] pages to pages listing
I don't see a good way to reverse `/page/` for Website.page
during pages listing, so reintoduce explicit handling of that crap.
Ideally it would be possible to plug in new converters per db and
create some sort of PageConverte, *or* add a reverse operation to
controllers on top of converters (-> controller-specific url
generation even with un-generable converters).
bzr revid: xmo@openerp.com-20131112120814-ekt1rzlzj06pzypw
---
addons/website/models/website.py | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 176ff0d3a38..74a0351e2d4 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -332,9 +332,21 @@ class website(osv.osv):
of the same.
:rtype: list({name: str, url: str})
"""
+ # FIXME: possibility to add custom converters without editing server
+ # would allow the creation of a pages converter generating page
+ # urls on its own
+ View = self.pool['ir.ui.view']
+ views = View.search_read(cr, uid, [['page', '=', True]],
+ fields=['name'], order='name', context=context)
+ xids = View.get_external_id(cr, uid, [view['id'] for view in views], context=context)
+ for view in views:
+ if xids[view['id']]:
+ yield {
+ 'name': view['name'],
+ 'url': '/page/' + xids[view['id']],
+ }
router = request.httprequest.app.get_db_router(request.db)
-
for rule in router.iter_rules():
if not self.rule_is_enumerable(rule):
continue
From 557d887496553980647450179ba6dffaca59e4bf Mon Sep 17 00:00:00 2001
From: Fabien Meghazi
Date: Tue, 12 Nov 2013 15:44:42 +0100
Subject: [PATCH 07/16] [IMP] preprocess static @href|src|action, static url
doesn't need t-href anymore
you need to pull server branch
bzr revid: fme@openerp.com-20131112144442-y9bw5q6kkoym8o1i
---
addons/website/models/ir_qweb.py | 26 +++++++++++++++++++
addons/website/models/ir_ui_view.py | 23 ----------------
addons/website/views/website_templates.xml | 16 ++++++------
.../views/website_blog_templates.xml | 2 +-
addons/website_crm/views/website_crm.xml | 2 +-
.../views/website_crm_partner_assign.xml | 4 +--
.../views/website_customer.xml | 2 +-
addons/website_event/views/website_event.xml | 4 +--
.../views/website_hr_recruitment.xml | 12 ++++-----
.../views/website_membership.xml | 6 ++---
addons/website_sale/views/website_sale.xml | 22 ++++++++--------
11 files changed, 61 insertions(+), 58 deletions(-)
diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py
index d7bd704b895..6e33742803d 100644
--- a/addons/website/models/ir_qweb.py
+++ b/addons/website/models/ir_qweb.py
@@ -21,6 +21,7 @@ from PIL import Image as I
from openerp.osv import orm, fields
from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+from openerp.addons.web.http import request
REMOTE_CONNECTION_TIMEOUT = 2.5
@@ -32,6 +33,31 @@ class QWeb(orm.AbstractModel):
_name = 'website.qweb'
_inherit = 'ir.qweb'
+ URL_ATTRS = {
+ 'form': 'action',
+ 'a': 'href',
+ 'link': 'href',
+ 'frame': 'src',
+ 'iframe': 'src',
+ 'script': 'src',
+ }
+
+ def add_template(self, into, name, node, context):
+ # preprocessing for multilang static urls
+ if request and 'url_for' in context:
+ router = request.httprequest.app.get_db_router(request.db).bind('')
+ for tag, attr in self.URL_ATTRS.items():
+ for e in node.getElementsByTagName(tag):
+ url = e.getAttribute(attr)
+ if url:
+ try:
+ func = router.match(url)[0]
+ if func.multilang:
+ e.setAttribute(attr, context['url_for'](url))
+ except Exception, e:
+ pass
+ super(QWeb, self).add_template(into, name, node, context)
+
def get_converter_for(self, field_type):
return self.pool.get(
'website.qweb.field.' + field_type,
diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py
index 123557a625e..d502ef774fa 100644
--- a/addons/website/models/ir_ui_view.py
+++ b/addons/website/models/ir_ui_view.py
@@ -100,25 +100,6 @@ class view(osv.osv):
return arch
- URL_ATTRS = {
- 'form': 'action',
- 'a': 'href',
- 'link': 'href',
- 'frame': 'src',
- 'iframe': 'src',
- 'script': 'src',
- }
- def _normalize_urls(self, root):
- for element in root.iter():
- attr = self.URL_ATTRS.get(element.tag)
- if attr is None or attr not in element.attrib:
- continue
-
- value = element.get(attr)
- if not urlparse(value).scheme:
- element.attrib.pop(attr)
- element.set('t-' + attr, value)
-
def save(self, cr, uid, res_id, value, xpath=None, context=None):
""" Update a view section. The view section may embed fields to write
@@ -131,10 +112,6 @@ class view(osv.osv):
arch_section = html.fromstring(
value, parser=html.HTMLParser(encoding='utf-8'))
- # TODO fme: Temporary desactivated because this breaks most of the snippets
- # Need to find another way to normalize multilang urls (postprocessing) ?
- # self._normalize_urls(arch_section)
-
if xpath is None:
# value is an embedded field on its own, not a view section
self.save_embedded_field(cr, uid, arch_section, context=context)
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index fbd7a9294a9..d4ac07c77c0 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -147,13 +147,13 @@
- Copyright ©
Company name -
Sitemap
+ Copyright ©
Company name -
Sitemap
@@ -366,7 +366,7 @@
Edit the content bellow this line to adapt the default "page not found" page.
@@ -381,8 +381,8 @@
Maybe you were looking for one of these popular pages ?
@@ -420,8 +420,8 @@
diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml
index 4e605907ed8..4c5f0243f40 100644
--- a/addons/website_blog/views/website_blog_templates.xml
+++ b/addons/website_blog/views/website_blog_templates.xml
@@ -263,7 +263,7 @@
through your blog entries, referenced in Google.
diff --git a/addons/website_crm/views/website_crm.xml b/addons/website_crm/views/website_crm.xml
index 0a4702e49c7..f97a3c20ea4 100644
--- a/addons/website_crm/views/website_crm.xml
+++ b/addons/website_crm/views/website_crm.xml
@@ -4,7 +4,7 @@
-