<commit_before>from django.contrib.sites.models import Site
from django.conf import settings
from django.http import Http404, HttpResponse
from django.template import RequestContext
from django.views.decorators.vary import vary_on_headers
from philo.models import Node


@vary_on_headers('Accept')
def node_view(request, path=None, **kwargs):
	node = None
	subpath = None
	if path is None:
		path = '/'
	current_site = Site.objects.get_current()
	try:
		node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
	except Node.DoesNotExist:
		raise Http404
	
	if not node:
		raise Http404
	
	try:
		if subpath and not node.accepts_subpath:
			raise Http404
		return node.render_to_response(request, path=path, subpath=subpath)
	except Http404, e:
		if settings.DEBUG:
			raise e
		
		try:
			Http404View = node.relationships['Http404']
		except KeyError:
			Http404View = None
		
		if not Http404View:
			raise e
		
		extra_context = {'exception': e}
		
		return Http404View.render_to_response(node, request, path, subpath, extra_context)
	except Exception, e:
		if settings.DEBUG:
			raise e
		
		try:
			Http500View = node.relationships['Http500']
			
			if not Http500View:
				raise e
			
			extra_context = {'exception': e}
			
			return Http500View.render_to_response(node, request, path, subpath, extra_context)
		except:
			raise e<commit_msg>Tweaked nodeview error reraising to preserve traceback information.<commit_after>from django.contrib.sites.models import Site
from django.conf import settings
from django.http import Http404, HttpResponse
from django.template import RequestContext
from django.views.decorators.vary import vary_on_headers
from philo.models import Node


@vary_on_headers('Accept')
def node_view(request, path=None, **kwargs):
	node = None
	subpath = None
	if path is None:
		path = '/'
	current_site = Site.objects.get_current()
	try:
		node, subpath = Node.objects.get_with_path(path, root=current_site.root_node, absolute_result=False)
	except Node.DoesNotExist:
		raise Http404
	
	if not node:
		raise Http404
	
	try:
		if subpath and not node.accepts_subpath:
			raise Http404
		return node.render_to_response(request, path=path, subpath=subpath)
	except Http404, e:
		if settings.DEBUG:
			raise
		
		try:
			Http404View = node.relationships['Http404']
		except KeyError:
			Http404View = None
		
		if not Http404View:
			raise e
		
		extra_context = {'exception': e}
		
		return Http404View.render_to_response(node, request, path, subpath, extra_context)
	except Exception, e:
		if settings.DEBUG:
			raise
		
		try:
			Http500View = node.relationships['Http500']
			
			if not Http500View:
				raise e
			
			extra_context = {'exception': e}
			
			return Http500View.render_to_response(node, request, path, subpath, extra_context)
		except:
			raise e
{'fraction_non_alphanumeric': 0.08292166549047283, 'fraction_numerical': 0.029640084685956247, 'mean_word_length': 4.220994475138122, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1605510', 'n_tokens_mistral': 1095, 'n_tokens_neox': 888, 'n_words': 250}