aboutsummaryrefslogtreecommitdiffstats
path: root/examples/views.py
blob: e7ef2ec94ea77aff8e1a7d5e1781dd9bfe5986a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from djangorestframework.views import View
from djangorestframework.response import Response


class ProxyView(View):
    """
    A view that just acts as a proxy to call non-djangorestframework views, while still
    displaying the browsable API interface.
    """

    view_class = None

    def dispatch(self, request, *args, **kwargs):
        self.request = request = self.create_request(request)
        if request.method in ['PUT', 'POST']:
            self.response = self.view_class.as_view()(request, *args, **kwargs)
        return super(ProxyView, self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        return Response()

    def put(self, request, *args, **kwargs):
        return Response(self.response.content)

    def post(self, request, *args, **kwargs):
        return Response(self.response.content)

    def __getattribute__(self, name):
        if name == '__name__':
            return self.view_class.__name__
        elif name == '__doc__':
            return self.view_class.__doc__
        else:
            return super(ProxyView, self).__getattribute__(name)