app/soc/views/models/program.py
changeset 700 8baf8367340d
parent 681 48983ecf4665
child 705 0ab17e14df95
equal deleted inserted replaced
699:4e8eefe95748 700:8baf8367340d
    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
    33 from soc.views import helper
    34 from soc.views import helper
       
    35 from soc.views.helper import access
    34 from soc.views.helper import redirects
    36 from soc.views.helper import redirects
    35 from soc.views.models import base
    37 from soc.views.models import base
    36 from soc.views.models import sponsor as sponsor_view
    38 from soc.views.models import sponsor as sponsor_view
       
    39 from soc.views.models import document as document_view
    37 
    40 
    38 import soc.logic.models.program
    41 import soc.logic.models.program
    39 
    42 
    40 
    43 
    41 class View(base.View):
    44 class View(base.View):
    46     """Defines the fields and methods required for the base View class
    49     """Defines the fields and methods required for the base View class
    47     to provide the user with list, public, create, edit and delete views.
    50     to provide the user with list, public, create, edit and delete views.
    48 
    51 
    49     Params:
    52     Params:
    50       params: a dict with params for this View
    53       params: a dict with params for this View
    51     """    
    54     """
       
    55 
       
    56     rights = {}
       
    57     rights['any_access'] = [access.allow]
       
    58     rights['public'] = [access.allow]
    52 
    59 
    53     new_params = {}
    60     new_params = {}
    54     new_params['logic'] = soc.logic.models.program.logic
    61     new_params['logic'] = soc.logic.models.program.logic
       
    62     new_params['rights'] = rights
    55 
    63 
    56     new_params['scope_view'] = sponsor_view
    64     new_params['scope_view'] = sponsor_view
    57     new_params['scope_redirect'] = redirects.getCreateRedirect
    65     new_params['scope_redirect'] = redirects.getCreateRedirect
    58 
    66 
    59     new_params['name'] = "Program"
    67     new_params['name'] = "Program"
    72 
    80 
    73     params = dicts.merge(params, new_params)
    81     params = dicts.merge(params, new_params)
    74 
    82 
    75     super(View, self).__init__(params=params)
    83     super(View, self).__init__(params=params)
    76 
    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):
       
   119     """Returns the extra menu's for this view.
       
   120 
       
   121     A menu item is generated for each program that is currently
       
   122     running. The public page for each program is added as menu item,
       
   123     as well as all public documents for that program.
       
   124 
       
   125     Args:
       
   126       request: unused
       
   127       params: a dict with params for this View.
       
   128     """
       
   129 
       
   130     params = dicts.merge(params, self._params)
       
   131     logic = params['logic']
       
   132 
       
   133     entities = logic.getForLimitAndOffset(1000)
       
   134 
       
   135     menus = []
       
   136 
       
   137     for entity in entities:
       
   138       menu = {}
       
   139       menu['heading'] = entity.short_name
       
   140       menu['items'] = self._getItemsForProgram(entity, params)
       
   141       menus.append(menu)
       
   142 
       
   143     return menus
    77 
   144 
    78 view = View()
   145 view = View()
    79 
   146 
    80 create = view.create
   147 create = view.create
    81 delete = view.delete
   148 delete = view.delete