[MERGE+FIX] fixes for translations,sequence,copy,error messages - some patches courte...
[odoo/odoo.git] / bin / tools / func.py
index 8cedf67..4150b3e 100644 (file)
@@ -93,3 +93,24 @@ def synchronized(lock_attr='_lock'):
     return decorator
 
 
+
+from inspect import getsourcefile
+
+def frame_codeinfo(fframe, back=0):
+    """ Return a (filename, line) pair for a previous frame .
+        @return (filename, lineno) where lineno is either int or string==''
+    """
+    
+    try:
+        if not fframe:
+            return ("<unknown>", '')
+        for i in range(back):
+            fframe = fframe.f_back
+        try:
+            fname = getsourcefile(fframe)
+        except TypeError:
+            fname = '<builtin>'
+        lineno = fframe.f_lineno or ''
+        return (fname, lineno)
+    except Exception:
+        return ("<unknown>", '')