Refactor maintenance tools app

This commit is contained in:
Roberto Rosario
2012-08-06 00:56:26 -04:00
parent c15ec9ce8d
commit 66c398c884
10 changed files with 103 additions and 58 deletions
+51 -8
View File
@@ -1,12 +1,55 @@
from common.utils import reverse_lazy
from navigation.api import bind_links
from .links import maintenance_menu
tools = {}
def register_maintenance_links(links, title=None, namespace=None):
namespace_dict = tools.get(namespace, {'title': None, 'links': []})
namespace_dict['title'] = title
for link in links:
link.url = getattr(link, 'url', reverse_lazy(link.view))
namespace_dict['links'].append(link)
tools[namespace] = namespace_dict
class MaintenanceNamespace(object):
namespaces = {}
tools_by_id = {}
@classmethod
def tool_all(cls):
tool_list = []
for namespace in cls.all():
for tool in namespace.tools:
tool_list.append(tool)
return tool_list
@classmethod
def tool_get(cls, id):
return MaintenanceNamespace.tools_by_id[id]
@classmethod
def all(cls):
return MaintenanceNamespace.namespaces.keys()
def __init__(self, label):
self.label = label
self.tools = []
MaintenanceNamespace.namespaces[self] = self
def create_tool(self, link):
tool = MaintenanceTool(self, link)
self.add_tool(tool)
return tool
def add_tool(self, tool_instance):
self.tools.append(tool_instance)
tool_instance.id = len(MaintenanceNamespace.tools_by_id) + 1
MaintenanceNamespace.tools_by_id[tool_instance.id] = tool_instance
bind_links([tool_instance.link.view], maintenance_menu, menu_name='secondary_menu')
def __unicode__(self):
return unicode(self.label)
class MaintenanceTool(object):
def __init__(self, namespace, link):
self.namespace = namespace
self.link = link
def __unicode__(self):
return unicode(self.link.text)