# HG changeset patch # User Sverre Rabbelier # Date 1228348090 0 # Node ID 5a381b290691f4714615a1f52bbdf1984069fa0d # Parent 23ef8f62d7cb5f14d02420593d391d31625019b5 Introduced django_extra_patterns This way no classes ever need to override the getDjangoURLPatterns, which results in less code, which is also more clear (that is, it is immediately obvious that a View adds an extra mapping if it sets the new django_extra_patterns value, or that it overrides the mapping when it sets django_patterns_defaults. Patch by: Sverre Rabbelier diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/helper/params.py --- a/app/soc/views/helper/params.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/helper/params.py Wed Dec 03 23:48:10 2008 +0000 @@ -100,19 +100,20 @@ new_params['link_id_pattern_core'] = linkable.LINK_ID_PATTERN_CORE new_params['django_patterns'] = None + new_params['extra_django_patterns'] = [] new_params['django_patterns_defaults'] = [ (r'^%(url_name)s/show/%(key_fields)s$', - 'soc.views.models.%s.public', 'Show %(name_short)s'), + 'soc.views.models.%(module_name)s.public', 'Show %(name_short)s'), (r'^%(url_name)s/create$', - 'soc.views.models.%s.create', 'Create %(name_short)s'), + 'soc.views.models.%(module_name)s.create', 'Create %(name_short)s'), (r'^%(url_name)s/create/%(key_fields)s$', - 'soc.views.models.%s.create', 'Create %(name_short)s'), + 'soc.views.models.%(module_name)s.create', 'Create %(name_short)s'), (r'^%(url_name)s/delete/%(key_fields)s$', - 'soc.views.models.%s.delete', 'Delete %(name_short)s'), + 'soc.views.models.%(module_name)s.delete', 'Delete %(name_short)s'), (r'^%(url_name)s/edit/%(key_fields)s$', - 'soc.views.models.%s.edit', 'Edit %(name_short)s'), + 'soc.views.models.%(module_name)s.edit', 'Edit %(name_short)s'), (r'^%(url_name)s/list$', - 'soc.views.models.%s.list', 'List %(name_plural)s'), + 'soc.views.models.%(module_name)s.list', 'List %(name_plural)s'), ] new_params['public_template'] = 'soc/%(module_name)s/public.html' % params diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/models/program.py --- a/app/soc/views/models/program.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/models/program.py Wed Dec 03 23:48:10 2008 +0000 @@ -68,6 +68,10 @@ 'clean_link_id': cleaning.clean_link_id, } + new_params['extra_django_patterns'] = [ + (r'^%(url_name)s/create/(?P%(ulnp)s)$', + 'soc.views.models.%(module_name)s.create', 'Create %(name_short)s')] + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) @@ -106,24 +110,6 @@ fields['scope'] = sponsor - def getDjangoURLPatterns(self, params=None): - """See base.View.getDjangoURLPatterns(). - """ - - default_patterns = self._params['django_patterns_defaults'] - default_patterns += [ - (r'^%(url_name)s/create/(?P%(ulnp)s)$', - 'soc.views.models.%s.create', 'Create %(name_short)s')] - - params = {} - params['django_patterns_defaults'] = default_patterns - - params = dicts.merge(params, self._params) - patterns = super(View, self).getDjangoURLPatterns(params) - - return patterns - - view = View() create = view.create diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/models/role.py --- a/app/soc/views/models/role.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/models/role.py Wed Dec 03 23:48:10 2008 +0000 @@ -80,6 +80,16 @@ params: This dictionary should be filled with the parameters """ + new_params = {} + + patterns = [(r'^%(url_name)s/invite/%(lnp)s$', + 'soc.views.models.%(module_name)s.invite', + 'Invite %(name_short)s')] + + new_params['extra_django_patterns'] = patterns + + params = dicts.merge(params, new_params) + super(View, self).__init__(params=params) def create(self, request, **kwargs): @@ -129,21 +139,3 @@ contents = [content] return self._list(request, params, contents, page_name) - - def getDjangoURLPatterns(self, params=None): - """See base.View.getDjangoURLPatterns(). - """ - - default_patterns = self._params['django_patterns_defaults'] - default_patterns += [ - (r'^%(url_name)s/invite/%(lnp)s$', - 'soc.views.models.%s.invite', 'Invite %(name_short)s')] - - params = {} - params['django_patterns_defaults'] = default_patterns - - params = dicts.merge(params, self._params) - patterns = super(View, self).getDjangoURLPatterns(params) - - return patterns - diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/models/site.py --- a/app/soc/views/models/site.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/models/site.py Wed Dec 03 23:48:10 2008 +0000 @@ -95,6 +95,19 @@ 'public': [access.allow] } + patterns = [] + + page_name = "Home Page" + patterns += [(r'^$', 'soc.views.models.%(module_name)s.main_public', + page_name)] + + page_name = "Edit Site Settings" + patterns += [(r'^%(url_name)s/edit$', + 'soc.views.models.%(module_name)s.main_edit', + page_name)] + + new_params['extra_django_patterns'] = patterns + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) @@ -135,20 +148,6 @@ return self.edit(request, page_name, seed=key_values, **key_values) - def getDjangoURLPatterns(self, params=None): - """See base.View.getDjangoURLPatterns(). - """ - - page_name = "Home Page" - patterns = super(View, self).getDjangoURLPatterns() - patterns += [(r'^$', 'soc.views.models.site.main_public', - {'page_name': page_name}, page_name)] - - page_name = "Edit Site Settings" - patterns += [(r'^' + self._params['url_name'] + '/edit$', - 'soc.views.models.site.main_edit', - {'page_name': page_name}, page_name)] - return patterns view = View() diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/models/user_self.py --- a/app/soc/views/models/user_self.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/models/user_self.py Wed Dec 03 23:48:10 2008 +0000 @@ -113,6 +113,18 @@ new_params['sidebar_heading'] = 'Users' + patterns = [] + + page_name = "Profile" + patterns += [(r'^%(url_name)s/edit$', + 'soc.views.models.%(module_name)s.edit', page_name)] + + page_name = "Requests Overview" + patterns += [(r'^%(url_name)s/roles$', + 'soc.views.models.request.list_self', page_name)] + + new_params['django_patterns_defaults'] = patterns + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) @@ -234,21 +246,6 @@ return super(View, self).getSidebarLinks(request, params) - def getDjangoURLPatterns(self, params=None): - """See base.View.getDjangoURLPatterns(). - """ - - patterns = [] - patterns += [(r'^' + self._params['url_name'] + '/edit$', - 'soc.views.models.user_self.edit')] - - page_name = "Requests Overview" - patterns += [(r'^' + self._params['url_name'] + '/roles$', - 'soc.views.models.request.list_self', - {'page_name': page_name}, page_name)] - - return patterns - view = View() diff -r 23ef8f62d7cb -r 5a381b290691 app/soc/views/sitemap/sitemap.py --- a/app/soc/views/sitemap/sitemap.py Wed Dec 03 21:28:16 2008 +0000 +++ b/app/soc/views/sitemap/sitemap.py Wed Dec 03 23:48:10 2008 +0000 @@ -59,13 +59,14 @@ # Construct defaults manualy default_patterns = params['django_patterns_defaults'] + default_patterns += params['extra_django_patterns'] key_fields_pattern = params['key_fields_pattern'] patterns = [] for url, module, name in default_patterns: name = name % params - module = module % params['module_name'] + module = module % params url = url % { 'url_name': params['url_name'],