app/soc/views/models/program.py
changeset 1038 0a0bc446f869
parent 1036 b4e275e97c60
child 1051 c532dd9def48
equal deleted inserted replaced
1037:f706ac5beccf 1038:0a0bc446f869
    26 from django import forms
    26 from django import forms
    27 
    27 
    28 from soc.logic import dicts
    28 from soc.logic import dicts
    29 from soc.logic.models import program as program_logic
    29 from soc.logic.models import program as program_logic
    30 from soc.views import helper
    30 from soc.views import helper
       
    31 from soc.views import out_of_band
    31 from soc.views.helper import access
    32 from soc.views.helper import access
       
    33 from soc.views.helper import decorators
    32 from soc.views.helper import redirects
    34 from soc.views.helper import redirects
    33 from soc.views.helper import widgets
    35 from soc.views.helper import widgets
    34 from soc.views.models import presence
    36 from soc.views.models import presence
    35 from soc.views.models import document as document_view
    37 from soc.views.models import document as document_view
    36 from soc.views.models import sponsor as sponsor_view
    38 from soc.views.models import sponsor as sponsor_view
   115     properties = {'scope_path': key_name}
   117     properties = {'scope_path': key_name}
   116 
   118 
   117     timeline = timeline_logic.updateOrCreateFromFields(properties, properties)
   119     timeline = timeline_logic.updateOrCreateFromFields(properties, properties)
   118     return timeline
   120     return timeline
   119 
   121 
       
   122   @decorators.merge_params
   120   def getExtraMenus(self, id, user, params=None):
   123   def getExtraMenus(self, id, user, params=None):
   121     """Returns the extra menu's for this view.
   124     """Returns the extra menu's for this view.
   122 
   125 
   123     A menu item is generated for each program that is currently
   126     A menu item is generated for each program that is currently
   124     running. The public page for each program is added as menu item,
   127     running. The public page for each program is added as menu item,
   126 
   129 
   127     Args:
   130     Args:
   128       params: a dict with params for this View.
   131       params: a dict with params for this View.
   129     """
   132     """
   130 
   133 
   131     params = dicts.merge(params, self._params)
       
   132     logic = params['logic']
   134     logic = params['logic']
       
   135     rights = params['rights']
   133 
   136 
   134     entities = logic.getForLimitAndOffset(1000)
   137     entities = logic.getForLimitAndOffset(1000)
   135 
   138 
   136     doc_params = document_view.view.getParams()
   139     doc_params = document_view.view.getParams()
   137     menus = []
   140     menus = []
   138 
   141 
       
   142     rights.setCurrentUser(id, user)
       
   143     filter_args = {}
       
   144 
   139     for entity in entities:
   145     for entity in entities:
       
   146       filter_args['scope_path'] = entity.key().name()
       
   147       try:
       
   148         rights.doCheck('checkIsHost', filter_args, [])
       
   149       except out_of_band.Error:
       
   150         continue
       
   151 
   140       menu = {}
   152       menu = {}
   141       menu['heading'] = entity.short_name
   153       menu['heading'] = entity.short_name
   142       items = document_view.view.getMenusForScope(entity, params)
   154       items = document_view.view.getMenusForScope(entity, params)
   143       items += [(redirects.getEditRedirect(entity, params),'Edit','edit')]
   155       items += [(redirects.getEditRedirect(entity, params),'Edit','edit')]
   144       menu['items'] = sidebar.getSidebarMenu(id, user, items, params=doc_params)
   156       menu['items'] = sidebar.getSidebarMenu(id, user, items, params=params)
   145       menu['group'] = 'Programs'
   157       menu['group'] = 'Programs'
   146       menus.append(menu)
   158       menus.append(menu)
   147 
   159 
   148     return menus
   160     return menus
   149 
   161