menu_links.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.db.models import Q
  2. from .cache import set_menus_cache, get_menus_cache
  3. from .models import MenuLink
  4. def get_top_menu_links(cache_versions):
  5. return get_links(cache_versions).get(MenuLink.POSITION_TOP)
  6. def get_footer_menu_links(cache_versions):
  7. return get_links(cache_versions).get(MenuLink.POSITION_FOOTER)
  8. def get_links(cache_versions):
  9. links = get_menus_cache(cache_versions)
  10. if links is None:
  11. links = get_links_from_db()
  12. set_menus_cache(cache_versions, links)
  13. return links
  14. def get_links_from_db():
  15. links = {
  16. MenuLink.POSITION_TOP: _get_footer_menu_links_from_db(),
  17. MenuLink.POSITION_FOOTER: _get_top_menu_links_from_db(),
  18. }
  19. return links
  20. def _get_footer_menu_links_from_db():
  21. return MenuLink.objects.filter(
  22. Q(position=MenuLink.POSITION_TOP) | Q(position=MenuLink.POSITION_BOTH)
  23. ).values()
  24. def _get_top_menu_links_from_db():
  25. return MenuLink.objects.filter(
  26. Q(position=MenuLink.POSITION_FOOTER) | Q(position=MenuLink.POSITION_BOTH)
  27. ).values()