def test_apply_to_class_based_view(self): @self.registry.register(allow_anonymous=True) def can_do_things(user): return user.can_do_things @self.registry.require('can_do_things') class View(object): def dispatch(self, req): return getattr(self, req.method.lower())(req) def get(self, req): pass self.assertEqual(View.dispatch.__name__, 'dispatch') request = self.request_factory.get('/things') request.user = User() request.user.can_do_things = True view = View() view.dispatch(request) request.user.can_do_things = False self.assertRaises(PermissionDenied, view.dispatch, request)
def setUp(self): self.fake_renderer = SEEDJSONRenderer() self.fake_response = mock.MagicMock() self.fake_view = View() self.fake_context = { 'view': self.fake_view, 'response': self.fake_response }
def test_setup_adds_args_kwargs_request(self): request = self.rf.get('/') args = ('arg 1', 'arg 2') kwargs = {'kwarg_1': 1, 'kwarg_2': 'year'} view = View() view.setup(request, *args, **kwargs) self.assertEqual(request, view.request) self.assertEqual(args, view.args) self.assertEqual(kwargs, view.kwargs)
def test_setup_adds_args_kwargs_request(self): request = self.rf.get("/") args = ("arg 1", "arg 2") kwargs = {"kwarg_1": 1, "kwarg_2": "year"} view = View() view.setup(request, *args, **kwargs) self.assertEqual(request, view.request) self.assertEqual(args, view.args) self.assertEqual(kwargs, view.kwargs)
def test_apply_to_class_based_view_with_model(self): @self.registry.register(model=Model, allow_anonymous=True) def can_do_stuff(user, instance): return user.can_do_stuff and instance is not None @self.registry.require('can_do_stuff') class View(object): def dispatch(self, req, model_id, *args, **kwargs): return getattr(self, req.method.lower())(req, model_id, *args, **kwargs) def get(self, req, model_id): return model_id request = self.request_factory.get('/stuff/1') request.user = User() request.user.can_do_stuff = True view = View() view.dispatch(request, 1) request.user.can_do_stuff = False self.assertRaises(PermissionDenied, view.dispatch, request, model_id=1)
"""{{ cookiecutter.project_name }} views.""" from __future__ import absolute_import from django.http import HttpResponse from django.views.generic import TemplateView, View {%- if cookiecutter.use_rest_framework == 'y' %} from rest_framework import viewsets {%- endif %} {% set views = cookiecutter.views.split(' ') %} class PingView(View): """Test if server is up.""" def get(self, request): # pylint: disable=unused-argument """Pong response.""" return HttpResponse('pong') {%- for view in views %} class {{ view.capitalize() }}View(TemplateView): template_name = "{{ view }}.html" def get_context_data(self, **kwargs): context = super({{ view.capitalize() }}View, self).get_context_data(**kwargs) context.update({}) return context {%- endfor %}