menus.base: 51 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/menus/base.py

Stats: 0 executed, 47 missed, 4 excluded, 21 ignored

  1. # -*- coding: utf-8 -*-
  2. from django.utils.translation import get_language
  3. from django.utils.encoding import smart_str
  4. class Menu(object):
  5. namespace = None
  6. def __init__(self):
  7. if not self.namespace:
  8. self.namespace = self.__class__.__name__
  9. def get_nodes(self, request):
  10. """
  11. should return a list of NavigationNode instances
  12. """
  13. raise NotImplementedError
  14. class Modifier(object):
  15. def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
  16. pass
  17. class NavigationNode(object):
  18. def __init__(self, title, url, id, parent_id=None, parent_namespace=None, attr=None, visible=True):
  19. self.children = [] # do not touch
  20. self.parent = None # do not touch, code depends on this
  21. self.namespace = None # TODO: Assert why we need this and above
  22. self.title = title
  23. self.url = self._remove_current_root(url)
  24. self.id = id
  25. self.parent_id = parent_id
  26. self.parent_namespace = parent_namespace
  27. self.visible = visible
  28. if attr:
  29. self.attr = attr
  30. else:
  31. self.attr = {} # To avoid declaring a dict in defaults...
  32. def __repr__(self):
  33. return "<Navigation Node: %s>" % smart_str(self.title)
  34. def _remove_current_root(self, url):
  35. current_root = "/%s/" % get_language()
  36. if url[:len(current_root)] == current_root:
  37. url = url[len(current_root) - 1:]
  38. return url
  39. def get_menu_title(self):
  40. return self.title
  41. def get_absolute_url(self):
  42. return self.url
  43. def get_attribute(self, name):
  44. return self.attr[name]
  45. def get_descendants(self):
  46. nodes = []
  47. for node in self.children:
  48. nodes.append(node)
  49. nodes += node.get_descendants()
  50. return nodes
  51. def get_ancestors(self):
  52. nodes = []
  53. if getattr(self, 'parent', None):
  54. nodes.append(self.parent)
  55. nodes += self.parent.get_ancestors()
  56. return nodes