X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/4e82deefc47c7b5d6a9ff46bbcfe1473d8eba285..e3037e2cf8a7ad3d0c3dba94083d1753301f581b:/models/nodes.py diff --git a/models/nodes.py b/models/nodes.py index a8125ee..f84565d 100644 --- a/models/nodes.py +++ b/models/nodes.py @@ -4,11 +4,13 @@ from django.contrib.contenttypes import generic from django.contrib.sites.models import Site from django.http import HttpResponse, HttpResponseServerError, HttpResponseRedirect from django.core.servers.basehttp import FileWrapper -from django.core.urlresolvers import resolve +from django.core.urlresolvers import resolve, clear_url_caches +from django.template import add_to_builtins as register_templatetags from inspect import getargspec -from philo.models.base import TreeEntity, Entity, QuerySetMapper +from philo.models.base import TreeEntity, Entity, QuerySetMapper, register_value_model from philo.utils import ContentTypeSubclassLimiter from philo.validators import RedirectValidator +from philo.exceptions import ViewDoesNotProvideSubpaths _view_content_type_limiter = ContentTypeSubclassLimiter(None) @@ -21,7 +23,9 @@ class Node(TreeEntity): @property def accepts_subpath(self): - return self.view.accepts_subpath + if self.view: + 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) @@ -39,6 +43,9 @@ class View(Entity): accepts_subpath = False + def get_subpath(self, obj): + raise ViewDoesNotProvideSubpaths + def attributes_with_node(self, node): return QuerySetMapper(self.attribute_set, passthrough=node.attributes) @@ -61,6 +68,7 @@ class MultiView(View): urlpatterns = [] def render_to_response(self, node, request, path=None, subpath=None, extra_context=None): + clear_url_caches() if not subpath: subpath = "" subpath = "/" + subpath @@ -108,4 +116,11 @@ class File(View): return response class Meta: - app_label = 'philo' \ No newline at end of file + app_label = 'philo' + + def __unicode__(self): + return self.file.name + + +register_templatetags('philo.templatetags.nodes') +register_value_model(Node) \ No newline at end of file