diff --git a/rhodecode/apps/_base/__init__.py b/rhodecode/apps/_base/__init__.py
--- a/rhodecode/apps/_base/__init__.py
+++ b/rhodecode/apps/_base/__init__.py
@@ -251,6 +251,13 @@ class RepoAppView(BaseAppView):
         return default
 
 
+class RepoGroupAppView(BaseAppView):
+    def __init__(self, context, request):
+        super(RepoGroupAppView, self).__init__(context, request)
+        self.db_repo_group = request.db_repo_group
+        self.db_repo_group_name = self.db_repo_group.group_name
+
+
 class DataGridAppView(object):
     """
     Common class to have re-usable grid rendering components
diff --git a/rhodecode/config/middleware.py b/rhodecode/config/middleware.py
--- a/rhodecode/config/middleware.py
+++ b/rhodecode/config/middleware.py
@@ -273,7 +273,7 @@ def includeme(config):
     if asbool(settings.get('appenlight', 'false')):
         config.include('appenlight_client.ext.pyramid_tween')
 
-    if not 'mako.default_filters' in settings:
+    if 'mako.default_filters' not in settings:
         # set custom default filters if we don't have it defined
         settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
         settings['mako.default_filters'] = 'h_filter'
diff --git a/rhodecode/integrations/__init__.py b/rhodecode/integrations/__init__.py
--- a/rhodecode/integrations/__init__.py
+++ b/rhodecode/integrations/__init__.py
@@ -54,7 +54,7 @@ def integrations_event_handler(event):
             integration_model.send_event(integration, event)
         except Exception:
             log.exception(
-                'failure occured when sending event %s to integration %s' % (
+                'failure occurred when sending event %s to integration %s' % (
                     event, integration))
 
 
diff --git a/rhodecode/lib/auth.py b/rhodecode/lib/auth.py
--- a/rhodecode/lib/auth.py
+++ b/rhodecode/lib/auth.py
@@ -1463,8 +1463,9 @@ class HasRepoPermissionAnyDecorator(Perm
         try:
             user_perms = set([perms['repositories'][repo_name]])
         except KeyError:
-            log.debug('cannot locate repo with name: `%s` in permissions defs',
-                      repo_name)
+            log.debug(
+                'cannot locate repo with name: `%s` in permissions defs',
+                repo_name)
             return False
 
         log.debug('checking `%s` permissions for repo `%s`',
@@ -1490,8 +1491,9 @@ class HasRepoGroupPermissionAllDecorator
         try:
             user_perms = set([perms['repositories_groups'][group_name]])
         except KeyError:
-            log.debug('cannot locate repo group with name: `%s` in permissions defs',
-                      group_name)
+            log.debug(
+                'cannot locate repo group with name: `%s` in permissions defs',
+                group_name)
             return False
 
         log.debug('checking `%s` permissions for repo group `%s`',
@@ -1518,8 +1520,9 @@ class HasRepoGroupPermissionAnyDecorator
         try:
             user_perms = set([perms['repositories_groups'][group_name]])
         except KeyError:
-            log.debug('cannot locate repo group with name: `%s` in permissions defs',
-                      group_name)
+            log.debug(
+                'cannot locate repo group with name: `%s` in permissions defs',
+                group_name)
             return False
 
         log.debug('checking `%s` permissions for repo group `%s`',
diff --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py
--- a/rhodecode/lib/utils.py
+++ b/rhodecode/lib/utils.py
@@ -96,11 +96,18 @@ def repo_name_slug(value):
 # PERM DECORATOR HELPERS FOR EXTRACTING NAMES FOR PERM CHECKS
 #==============================================================================
 def get_repo_slug(request):
-    if isinstance(request, Request) and getattr(request, 'db_repo', None):
-        # pyramid
-        _repo = request.db_repo.repo_name
-    else:
-        # TODO(marcink): remove after pylons migration...
+    _repo = ''
+    if isinstance(request, Request):
+        if hasattr(request, 'db_repo'):
+            # if our requests has set db reference use it for name, this
+            # translates the example.com/_<id> into proper repo names
+            _repo = request.db_repo.repo_name
+        elif getattr(request, 'matchdict', None):
+            # pyramid
+            _repo = request.matchdict.get('repo_name')
+
+    # TODO(marcink): remove after pylons migration...
+    if not _repo:
         _repo = request.environ['pylons.routes_dict'].get('repo_name')
 
     if _repo:
@@ -109,10 +116,18 @@ def get_repo_slug(request):
 
 
 def get_repo_group_slug(request):
-    if isinstance(request, Request) and getattr(request, 'matchdict', None):
-        # pyramid
-        _group = request.matchdict.get('repo_group_name')
-    else:
+    _group = ''
+    if isinstance(request, Request):
+        if hasattr(request, 'db_repo_group'):
+            # if our requests has set db reference use it for name, this
+            # translates the example.com/_<id> into proper repo group names
+            _group = request.db_repo_group.group_name
+        elif getattr(request, 'matchdict', None):
+            # pyramid
+            _group = request.matchdict.get('repo_group_name')
+
+    # TODO(marcink): remove after pylons migration...
+    if not _group:
         _group = request.environ['pylons.routes_dict'].get('group_name')
 
     if _group: