# HG changeset patch # User Sverre Rabbelier # Date 1228385378 0 # Node ID c2dcae60669946c66c2b25ca68aaa3b8bc4e14a0 # Parent 0e89b027b1404972bd12c5e77f7aeafd8459d01b Make base.View.create lookup the scope if appropriate Also re-introduce the custom description of the list selection for the redirection. Patch by: Sverre Rabbelier diff -r 0e89b027b140 -r c2dcae606699 app/soc/views/models/base.py --- a/app/soc/views/models/base.py Wed Dec 03 23:49:10 2008 +0000 +++ b/app/soc/views/models/base.py Thu Dec 04 10:09:38 2008 +0000 @@ -55,6 +55,9 @@ ' Create ' 'a New %(entity_type)s page.') + DEF_CREATE_INSTRUCTION_MSG_FMT = ugettext_lazy( + 'Please select a %s for the new %s.') + def __init__(self, params=None): """ @@ -137,7 +140,15 @@ kwargs: not used for create() """ - params = dicts.merge(params, self._params) + new_params = dicts.merge(params, self._params) + + if ('scope_view' in new_params) and ('scope_path' not in kwargs): + view = new_params['scope_view'].view + redirect = new_params['scope_redirect'] + return self.select(request, view, redirect, + params=params, page_name=page_name, **kwargs) + + params = new_params # Create page is an edit page with no key fields empty_kwargs = {} @@ -479,6 +490,8 @@ params = dicts.merge(params, view.getParams()) params = dicts.merge(params, self._params) params['list_action'] = (redirect, self._params) + params['list_description'] = self.DEF_CREATE_INSTRUCTION_MSG_FMT % ( + params['name'], self._params['name']) content = helper.lists.getListContent(request, params) contents = [content] diff -r 0e89b027b140 -r c2dcae606699 app/soc/views/models/program.py --- a/app/soc/views/models/program.py Wed Dec 03 23:49:10 2008 +0000 +++ b/app/soc/views/models/program.py Thu Dec 04 10:09:38 2008 +0000 @@ -75,29 +75,12 @@ (r'^%(url_name)s/create/(?P%(ulnp)s)$', 'soc.views.models.%(module_name)s.create', 'Create %(name_short)s')] + new_params['scope_redirect'] = redirects.getCreateRedirect + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) - def create(self, request, **kwargs): - """Specialized create view to enforce needing a scope_path - - This view simply gives control to the base.View.create if the - scope_path is specified in kwargs. If it is not present, it - instead displays the result of self.select. Refer to the - respective docstrings on what they do. - - Args: - see base.View.create - """ - - if 'scope_path' in kwargs: - return super(View, self).create(request, **kwargs) - - view = sponsor_view.view - redirect = redirects.getCreateRedirect - return self.select(request, view, redirect, **kwargs) - view = View() diff -r 0e89b027b140 -r c2dcae606699 app/soc/views/models/role.py --- a/app/soc/views/models/role.py Wed Dec 03 23:49:10 2008 +0000 +++ b/app/soc/views/models/role.py Thu Dec 04 10:09:38 2008 +0000 @@ -87,30 +87,12 @@ 'Invite %(name_short)s')] new_params['extra_django_patterns'] = patterns + new_params['scope_redirect'] = redirects.getInviteRedirect params = dicts.merge(params, new_params) super(View, self).__init__(params=params) - def create(self, request, **kwargs): - """Specialized create view to enforce needing a scope_path - - This view simply gives control to the base.View.create if the - scope_path is specified in kwargs. If it is not present, it - instead displays the result of self.select. Refer to the - respective docstrings on what they do. - - Args: - see base.View.create - """ - - if 'scope_path' in kwargs: - return super(View, self).create(request, **kwargs) - - view = sponsor_view.view - redirect = redirects.getInviteRedirect - return self.select(request, view, redirect, **kwargs) - def invite(self, request, page_name=None, params=None, **kwargs): """Displays the request promotion to Role page. """