From: Stephen Burrows Date: Thu, 21 Oct 2010 19:57:01 +0000 (-0400) Subject: Merge branch 'node_url_refactor' X-Git-Tag: philo-0.9~29^2 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/1dba84d30c4323acb722de2011ff7a0bff9148aa Merge branch 'node_url_refactor' --- 1dba84d30c4323acb722de2011ff7a0bff9148aa diff --cc models/nodes.py index ae2e081,c75700c..b16521b --- a/models/nodes.py +++ b/models/nodes.py @@@ -3,11 -3,11 +3,12 @@@ from django.contrib.contenttypes.model from django.contrib.contenttypes import generic from django.contrib.sites.models import Site from django.http import HttpResponse, HttpResponseServerError, HttpResponseRedirect + from django.core.exceptions import ViewDoesNotExist from django.core.servers.basehttp import FileWrapper - from django.core.urlresolvers import resolve, clear_url_caches + from django.core.urlresolvers import resolve, clear_url_caches, reverse from django.template import add_to_builtins as register_templatetags from inspect import getargspec +from philo.exceptions import MIDDLEWARE_NOT_CONFIGURED from philo.models.base import TreeEntity, Entity, QuerySetMapper, register_value_model from philo.utils import ContentTypeSubclassLimiter from philo.validators import RedirectValidator @@@ -29,14 -29,22 +30,22 @@@ class Node(TreeEntity) return self.view.accepts_subpath return False - def render_to_response(self, request, path=None, subpath=None, extra_context=None): - return self.view.render_to_response(self, request, path, subpath, extra_context) + def render_to_response(self, request, extra_context=None): + return self.view.render_to_response(request, extra_context) def get_absolute_url(self): - root = Site.objects.get_current().root_node try: - return '/%s' % self.get_path(root=root) - except AncestorDoesNotExist: + root = Site.objects.get_current().root_node + except Site.DoesNotExist: + root = None + + try: + path = self.get_path(root=root) + if path: + path += '/' + root_url = reverse('philo-root') + return '%s%s' % (root_url, path) + except AncestorDoesNotExist, ViewDoesNotExist: return None class Meta: @@@ -81,11 -89,16 +90,17 @@@ _view_content_type_limiter.cls = Vie class MultiView(View): accepts_subpath = True - urlpatterns = [] + @property + def urlpatterns(self, obj): + raise NotImplementedError("MultiView subclasses must implement urlpatterns.") + + def get_reverse_params(self, obj): + """This method should return a view_name, args, kwargs tuple suitable for reversing a url for the given obj using self as the urlconf.""" + raise NotImplementedError("MultiView subclasses must implement get_subpath.") - def actually_render_to_response(self, node, request, path=None, subpath=None, extra_context=None): + def actually_render_to_response(self, request, extra_context=None): clear_url_caches() + subpath = request.node.subpath if not subpath: subpath = "" subpath = "/" + subpath