diff --git a/djangodav/views/tests.py b/djangodav/views/tests.py index c22d5a9..172f459 100644 --- a/djangodav/views/tests.py +++ b/djangodav/views/tests.py @@ -327,7 +327,7 @@ def test_get_obj(self): self.assertEqual(resp['Last-Modified'], "Wed, 24 Dec 2014 06:00:00 +0000") self.assertEqual(resp.content, "C" * 42) - @patch('djangodav.views.render_to_response', Mock(return_value=HttpResponse('listing'))) + @patch('django.views.generic.TemplateView.get', Mock(return_value=HttpResponse('listing'))) def test_head_object(self): path = '/object.txt' v = DavView(path=path, base_url='/base', _allowed_methods=Mock(return_value=['ALL']), acl_class=FullAcl) @@ -338,7 +338,7 @@ def test_head_object(self): self.assertEqual("", resp.content) self.assertEqual("0", resp['Content-Length']) - @patch('djangodav.views.views.render_to_response', Mock(return_value=HttpResponse('listing'))) + @patch('django.views.generic.TemplateView.get', Mock(return_value=HttpResponse('listing'))) def test_get_collection(self): path = '/collection/' v = DavView(path=path, acl_class=FullAcl, base_url='/base', _allowed_methods=Mock(return_value=['ALL'])) diff --git a/djangodav/views/views.py b/djangodav/views/views.py index 7cc46ca..4df6050 100644 --- a/djangodav/views/views.py +++ b/djangodav/views/views.py @@ -12,9 +12,8 @@ from django.utils.decorators import method_decorator from django.utils.functional import cached_property from django.utils.http import parse_etags -from django.shortcuts import render_to_response from django.views.decorators.csrf import csrf_exempt -from django.views.generic import View +from django.views.generic import TemplateView from djangodav.responses import ResponseException, HttpResponsePreconditionFailed, HttpResponseCreated, HttpResponseNoContent, \ HttpResponseConflict, HttpResponseMediatypeNotSupported, HttpResponseBadGateway, \ @@ -25,7 +24,7 @@ PATTERN_IF_DELIMITER = re.compile(r'(<([^>]+)>)|(\(([^\)]+)\))') -class DavView(View): +class DavView(TemplateView): resource_class = None lock_class = None acl_class = None @@ -173,6 +172,12 @@ def evaluate_conditions(self, res): cond_if = '<*>' + cond_if #for (tmpurl, url, tmpcontent, content) in PATTERN_IF_DELIMITER.findall(cond_if): + def get_context_data(self, **kwargs): + context = super(DavView, self).get_context_data(**kwargs) + context['resource'] = self.resource + context['base_url'] = self.base_url + return context + def get(self, request, path, head=False, *args, **kwargs): if not self.resource.exists: raise Http404("Resource doesn't exists") @@ -192,7 +197,7 @@ def get(self, request, path, head=False, *args, **kwargs): response['Content-Length'] = self.resource.getcontentlength response.content = self.resource.read() elif not head: - response = render_to_response(self.template_name, dict(resource=self.resource, base_url=self.base_url)) + response = super(DavView, self).get(request, *args, **kwargs) response['Last-Modified'] = self.resource.getlastmodified return response