[FIX] slug: fallback to positive ID when slug appears to contain a missing negative ID
authorJeremy Kersten <jke@odoo.com>
Tue, 5 Aug 2014 08:26:03 +0000 (10:26 +0200)
committerJeremy Kersten <jke@odoo.com>
Tue, 5 Aug 2014 08:26:03 +0000 (10:26 +0200)
Cherry-pick from dcac4cc0dfd4412e1139399fb17ec7ba6118aad4

addons/website/models/ir_http.py

index b38ceb4..1f204d6 100644 (file)
@@ -202,8 +202,13 @@ class ModelConverter(ir.ir_http.ModelConverter):
     def to_python(self, value):
         m = re.match(self.regex, value)
         _uid = RequestUID(value=value, match=m, converter=self)
+        record_id = int(m.group(2))
+        if record_id < 0:
+            # limited support for negative IDs due to our slug pattern, assume abs() if not found
+            if not request.registry[self.model].exists(request.cr, _uid, [record_id]):
+                record_id = abs(record_id)
         return request.registry[self.model].browse(
-            request.cr, _uid, int(m.group(2)), context=request.context)
+            request.cr, _uid, record_id, context=request.context)
 
     def generate(self, cr, uid, query=None, args=None, context=None):
         obj = request.registry[self.model]