Added app_label to Tag. Removed app_label from abstract models, as it would be inheri...
[philo.git] / models / nodes.py
index bb1601e..9c18e52 100644 (file)
@@ -4,7 +4,7 @@ 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.contrib.sites.models import Site
 from django.http import HttpResponse, HttpResponseServerError, HttpResponseRedirect
 from django.core.servers.basehttp import FileWrapper
-from philo.models.base import TreeEntity, Entity
+from philo.models.base import TreeEntity, Entity, QuerySetMapper
 from philo.utils import ContentTypeSubclassLimiter
 from philo.validators import RedirectValidator
 
 from philo.utils import ContentTypeSubclassLimiter
 from philo.validators import RedirectValidator
 
@@ -21,8 +21,8 @@ class Node(TreeEntity):
        def accepts_subpath(self):
                return self.view.accepts_subpath
        
        def accepts_subpath(self):
                return self.view.accepts_subpath
        
-       def render_to_response(self, request, path=None, subpath=None):
-               return self.view.render_to_response(self, request, path, subpath)
+       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)
        
        class Meta:
                app_label = 'philo'
        
        class Meta:
                app_label = 'philo'
@@ -37,12 +37,17 @@ class View(Entity):
        
        accepts_subpath = False
        
        
        accepts_subpath = False
        
-       def render_to_response(self, node, request, path=None, subpath=None):
+       def attributes_with_node(self, node):
+               return QuerySetMapper(self.attribute_set, passthrough=node.attributes)
+       
+       def relationships_with_node(self, node):
+               return QuerySetMapper(self.relationship_set, passthrough=node.relationships)
+       
+       def render_to_response(self, node, request, path=None, subpath=None, extra_context=None):
                raise NotImplementedError('View subclasses must implement render_to_response.')
        
        class Meta:
                abstract = True
                raise NotImplementedError('View subclasses must implement render_to_response.')
        
        class Meta:
                abstract = True
-               app_label = 'philo'
 
 
 _view_content_type_limiter.cls = View
 
 
 _view_content_type_limiter.cls = View
@@ -53,7 +58,7 @@ class MultiView(View):
        
        urlpatterns = []
        
        
        urlpatterns = []
        
-       def render_to_response(self, node, request, path=None, subpath=None):
+       def render_to_response(self, node, request, path=None, subpath=None, extra_context=None):
                if not subpath:
                        subpath = ""
                subpath = "/" + subpath
                if not subpath:
                        subpath = ""
                subpath = "/" + subpath
@@ -63,7 +68,6 @@ class MultiView(View):
        
        class Meta:
                abstract = True
        
        class Meta:
                abstract = True
-               app_label = 'philo'
 
 
 class Redirect(View):
 
 
 class Redirect(View):
@@ -74,7 +78,7 @@ class Redirect(View):
        target = models.CharField(max_length=200, validators=[RedirectValidator()])
        status_code = models.IntegerField(choices=STATUS_CODES, default=302, verbose_name='redirect type')
        
        target = models.CharField(max_length=200, validators=[RedirectValidator()])
        status_code = models.IntegerField(choices=STATUS_CODES, default=302, verbose_name='redirect type')
        
-       def render_to_response(self, node, request, path=None, subpath=None):
+       def render_to_response(self, node, request, path=None, subpath=None, extra_context=None):
                response = HttpResponseRedirect(self.target)
                response.status_code = self.status_code
                return response
                response = HttpResponseRedirect(self.target)
                response.status_code = self.status_code
                return response
@@ -89,7 +93,7 @@ class File(View):
        mimetype = models.CharField(max_length=255)
        file = models.FileField(upload_to='philo/files/%Y/%m/%d')
        
        mimetype = models.CharField(max_length=255)
        file = models.FileField(upload_to='philo/files/%Y/%m/%d')
        
-       def render_to_response(self, node, request, path=None, subpath=None):
+       def render_to_response(self, node, request, path=None, subpath=None, extra_context=None):
                wrapper = FileWrapper(self.file)
                response = HttpResponse(wrapper, content_type=self.mimetype)
                response['Content-Length'] = self.file.size
                wrapper = FileWrapper(self.file)
                response = HttpResponse(wrapper, content_type=self.mimetype)
                response['Content-Length'] = self.file.size