diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 5a47615d1e5..6b95bf57ca1 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -5,11 +5,10 @@ import werkzeug.routing import openerp from openerp.addons.base import ir +from openerp.addons.website.models.website import slug from openerp.http import request from openerp.osv import orm -from ..utils import slugify - class ir_http(orm.AbstractModel): _inherit = 'ir.http' @@ -112,12 +111,7 @@ class ModelConverter(ir.ir_http.ModelConverter): self.regex = r'(?:[A-Za-z0-9-_]+?-)?(\d+)(?=$|/)' def to_url(self, value): - if isinstance(value, orm.browse_record): - [(id, name)] = value.name_get() - else: - # assume name_search result tuple - id, name = value - return "%s-%d" % (slugify(name), id) + return slug(value) def generate(self, cr, uid, query=None, context=None): return request.registry[self.model].name_search( diff --git a/addons/website/models/website.py b/addons/website/models/website.py index a48e93e2808..533a1dd2e79 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -14,7 +14,7 @@ import werkzeug.exceptions import werkzeug.wrappers import openerp -from openerp.osv import osv, fields +from openerp.osv import orm, osv, fields from openerp.tools.safe_eval import safe_eval from openerp.addons.web import http @@ -58,6 +58,15 @@ def url_for(path_or_uri, lang=None, keep_query=None): return location +def slug(value): + if isinstance(value, orm.browse_record): + # [(id, name)] = value.name_get() + id, name = value.id, value[value._rec_name] + else: + # assume name_search result tuple + id, name = value + return "%s-%d" % (slugify(name), id) + def urlplus(url, params): if not params: return url @@ -198,6 +207,7 @@ class website(osv.osv): json=simplejson, website=request.website, url_for=url_for, + slug=slug, res_company=request.website.company_id, user_id=user.browse(cr, uid, uid), )