Browse Source

Neatier admin hierarchy

Rafał Pitoń 11 years ago
parent
commit
43cae54fd9
1 changed files with 8 additions and 15 deletions
  1. 8 15
      misago/admin/hierarchy.py

+ 8 - 15
misago/admin/hierarchy.py

@@ -29,7 +29,7 @@ class Node(object):
             childrens.append(
                 {
                     'link': reverse(children.link),
-                    'namespace': self.namespace,
+                    'namespace': children.namespace,
                     'name': children.name,
                     'icon': children.icon,
                 })
@@ -166,23 +166,16 @@ class AdminHierarchyBuilder(object):
                     branches.append(children)
                 node = node.parent
 
-        branches.reverse()
 
-        # Lowest level branch, active link
-        for node in branches[0]:
-            node['is_active'] = node['link'] in request.path
+        namespace = request.resolver_match.namespaces
 
-        # Other levels branches
-        for branch in branches[1:]:
+        branches.reverse()
+        for depth, branch in enumerate(branches):
+            depth_namespace = namespace[2:3 + depth]
             for node in branch:
-                active = node['namespace'] in request.resolver_match.namespace
-                node['is_active'] = active
-
-        # Hack for index link
-        full_url_name = '%s:%s' % (request.resolver_match.namespace,
-                                   request.resolver_match.url_name)
-        if full_url_name != 'misago:admin:index':
-            branches[0][0]['is_active'] = False
+                node_namespace = node['namespace'].split(':')[2:3 + depth]
+                node['is_active'] = depth_namespace == node_namespace
+
 
         return branches