# Path: philo/exceptions.py
# MIDDLEWARE_NOT_CONFIGURED = ImproperlyConfigured("""Philo requires the RequestNode middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'philo.middleware.RequestNodeMiddleware'.""")


from django.conf import settings
from django.core.urlresolvers import resolve
from django.http import Http404, HttpResponseRedirect
from django.views.decorators.vary import vary_on_headers
from philo.exceptions import MIDDLEWARE_NOT_CONFIGURED



@vary_on_headers('Accept')
def node_view(request, path=None, **kwargs):
	"""
	:func:`node_view` handles incoming requests by checking to make sure that:
	
	- the request has an attached :class:`.Node`.
	- the attached :class:`~philo.models.nodes.Node` handles any remaining path beyond its location.
	
	If these conditions are not met, then :func:`node_view` will either raise :exc:`Http404` or, if it seems like the address was mistyped (for example missing a trailing slash), return an :class:`HttpResponseRedirect` to the correct address.
	
	Otherwise, :func:`node_view` will call the :class:`.Node`'s :meth:`~.Node.render_to_response` method, passing ``kwargs`` in as the ``extra_context``.
	
	"""
	if "philo.middleware.RequestNodeMiddleware" not in settings.MIDDLEWARE_CLASSES:

# Path: philo/exceptions.py
# MIDDLEWARE_NOT_CONFIGURED = ImproperlyConfigured("""Philo requires the RequestNode middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'philo.middleware.RequestNodeMiddleware'.""")


# Path: philo/views.py
from django.conf import settings
from django.core.urlresolvers import resolve
from django.http import Http404, HttpResponseRedirect
from django.views.decorators.vary import vary_on_headers
from philo.exceptions import MIDDLEWARE_NOT_CONFIGURED




@vary_on_headers('Accept')
def node_view(request, path=None, **kwargs):
	"""
	:func:`node_view` handles incoming requests by checking to make sure that:
	
	- the request has an attached :class:`.Node`.
	- the attached :class:`~philo.models.nodes.Node` handles any remaining path beyond its location.
	
	If these conditions are not met, then :func:`node_view` will either raise :exc:`Http404` or, if it seems like the address was mistyped (for example missing a trailing slash), return an :class:`HttpResponseRedirect` to the correct address.
	
	Otherwise, :func:`node_view` will call the :class:`.Node`'s :meth:`~.Node.render_to_response` method, passing ``kwargs`` in as the ``extra_context``.
	
	"""
	if "philo.middleware.RequestNodeMiddleware" not in settings.MIDDLEWARE_CLASSES:

		raise MIDDLEWARE_NOT_CONFIGURED