app/soc/views/models/program.py
changeset 705 0ab17e14df95
parent 700 8baf8367340d
child 712 b9e4cc00f30a
equal deleted inserted replaced
704:8647e6b441fc 705:0ab17e14df95
    28 from django.utils.translation import ugettext_lazy
    28 from django.utils.translation import ugettext_lazy
    29 
    29 
    30 from soc.logic import cleaning
    30 from soc.logic import cleaning
    31 from soc.logic import dicts
    31 from soc.logic import dicts
    32 from soc.logic.models import sponsor as sponsor_logic
    32 from soc.logic.models import sponsor as sponsor_logic
    33 from soc.logic.models import document as document_logic
       
    34 from soc.views import helper
    33 from soc.views import helper
    35 from soc.views.helper import access
    34 from soc.views.helper import access
    36 from soc.views.helper import redirects
    35 from soc.views.helper import redirects
    37 from soc.views.models import base
    36 from soc.views.models import base
    38 from soc.views.models import sponsor as sponsor_view
    37 from soc.views.models import sponsor as sponsor_view
    39 from soc.views.models import document as document_view
    38 from soc.views.models import document as document_view
       
    39 from soc.views.sitemap import sidebar
    40 
    40 
    41 import soc.logic.models.program
    41 import soc.logic.models.program
    42 
    42 
    43 
    43 
    44 class View(base.View):
    44 class View(base.View):
    80 
    80 
    81     params = dicts.merge(params, new_params)
    81     params = dicts.merge(params, new_params)
    82 
    82 
    83     super(View, self).__init__(params=params)
    83     super(View, self).__init__(params=params)
    84 
    84 
    85   def _getItemsForProgram(self, entity, params):
       
    86     """Returns the menu items for one specifc program
       
    87 
       
    88     Args:
       
    89       entity: the program for which the entry should be constructed
       
    90       params: a dict with params for this View.
       
    91     """
       
    92 
       
    93     filter = {
       
    94         'scope_path': entity.key().name(),
       
    95         'is_featured': True,
       
    96         }
       
    97 
       
    98     doc_params = document_view.view.getParams()
       
    99     entities = document_logic.logic.getForFields(filter)
       
   100 
       
   101     submenus = []
       
   102 
       
   103     # add a link to the home page
       
   104     submenu = {}
       
   105     submenu['title'] = "Home"
       
   106     submenu['url'] = redirects.getPublicRedirect(entity, params)
       
   107     submenus.append(submenu)
       
   108 
       
   109     # add a link to all featured documents
       
   110     for entity in entities:
       
   111       submenu = {}
       
   112       submenu['title'] = entity.short_name
       
   113       submenu['url'] = redirects.getPublicRedirect(entity, doc_params)
       
   114       submenus.append(submenu)
       
   115 
       
   116     return submenus
       
   117 
       
   118   def getExtraMenus(self, request, params=None):
    85   def getExtraMenus(self, request, params=None):
   119     """Returns the extra menu's for this view.
    86     """Returns the extra menu's for this view.
   120 
    87 
   121     A menu item is generated for each program that is currently
    88     A menu item is generated for each program that is currently
   122     running. The public page for each program is added as menu item,
    89     running. The public page for each program is added as menu item,
   135     menus = []
   102     menus = []
   136 
   103 
   137     for entity in entities:
   104     for entity in entities:
   138       menu = {}
   105       menu = {}
   139       menu['heading'] = entity.short_name
   106       menu['heading'] = entity.short_name
   140       menu['items'] = self._getItemsForProgram(entity, params)
   107       items = document_view.view.getMenusForScope(entity, params)
       
   108       menu['items'] = sidebar.getSidebarMenu(request, items, params=params)
   141       menus.append(menu)
   109       menus.append(menu)
   142 
   110 
   143     return menus
   111     return menus
   144 
   112 
   145 view = View()
   113 view = View()