diff --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py
--- a/rhodecode/lib/utils.py
+++ b/rhodecode/lib/utils.py
@@ -148,6 +148,11 @@ def action_logger(user, action, repo, ip
 
     if not sa:
         sa = meta.Session()
+    # if we don't get explicit IP address try to get one from registered user
+    # in tmpl context var
+    from pylons import tmpl_context
+    if not ipaddr and hasattr(tmpl_context, 'rhodecode_user'):
+        ipaddr = tmpl_context.rhodecode_user.ip_addr
 
     try:
         if hasattr(user, 'user_id'):
@@ -160,7 +165,7 @@ def action_logger(user, action, repo, ip
         if hasattr(repo, 'repo_id'):
             repo_obj = Repository.get(repo.repo_id)
             repo_name = repo_obj.repo_name
-        elif  isinstance(repo, basestring):
+        elif isinstance(repo, basestring):
             repo_name = repo.lstrip('/')
             repo_obj = Repository.get_by_repo_name(repo_name)
         else: