[ADD] slug() helper to rendering context

bzr revid: fme@openerp.com-20131202125652-5e30xd3ym6nww44o
This commit is contained in:
Fabien Meghazi 2013-12-02 13:56:52 +01:00
parent de0401e043
commit a5ed3f8b42
2 changed files with 13 additions and 9 deletions

View File

@ -5,11 +5,10 @@ import werkzeug.routing
import openerp import openerp
from openerp.addons.base import ir from openerp.addons.base import ir
from openerp.addons.website.models.website import slug
from openerp.http import request from openerp.http import request
from openerp.osv import orm from openerp.osv import orm
from ..utils import slugify
class ir_http(orm.AbstractModel): class ir_http(orm.AbstractModel):
_inherit = 'ir.http' _inherit = 'ir.http'
@ -112,12 +111,7 @@ class ModelConverter(ir.ir_http.ModelConverter):
self.regex = r'(?:[A-Za-z0-9-_]+?-)?(\d+)(?=$|/)' self.regex = r'(?:[A-Za-z0-9-_]+?-)?(\d+)(?=$|/)'
def to_url(self, value): def to_url(self, value):
if isinstance(value, orm.browse_record): return slug(value)
[(id, name)] = value.name_get()
else:
# assume name_search result tuple
id, name = value
return "%s-%d" % (slugify(name), id)
def generate(self, cr, uid, query=None, context=None): def generate(self, cr, uid, query=None, context=None):
return request.registry[self.model].name_search( return request.registry[self.model].name_search(

View File

@ -14,7 +14,7 @@ import werkzeug.exceptions
import werkzeug.wrappers import werkzeug.wrappers
import openerp 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.tools.safe_eval import safe_eval
from openerp.addons.web import http from openerp.addons.web import http
@ -58,6 +58,15 @@ def url_for(path_or_uri, lang=None, keep_query=None):
return location 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): def urlplus(url, params):
if not params: if not params:
return url return url
@ -198,6 +207,7 @@ class website(osv.osv):
json=simplejson, json=simplejson,
website=request.website, website=request.website,
url_for=url_for, url_for=url_for,
slug=slug,
res_company=request.website.company_id, res_company=request.website.company_id,
user_id=user.browse(cr, uid, uid), user_id=user.browse(cr, uid, uid),
) )