def test_view_name_uses_class_name(self):
     """
     Ensure view names are based on the class name.
     """
     class MockView(APIView):
         pass
     self.assertEqual(get_view_name(MockView), 'Mock')
Ejemplo n.º 2
0
 def metadata(self, request):
     return {
         'name': get_view_name(self.__class__),
         'description': get_view_description(self.__class__),
         'renders': [renderer.media_type for renderer in self.renderer_classes],
         'parses': [parser.media_type for parser in self.parser_classes],
     }
Ejemplo n.º 3
0
 def test_view_name_uses_class_name(self):
     """
     Ensure view names are based on the class name.
     """
     class MockView(APIView):
         pass
     self.assertEqual(get_view_name(MockView), 'Mock')
Ejemplo n.º 4
0
 def metadata(self, request):
     """
     Return a dictionary of metadata about the view.
     Used to return responses for OPTIONS requests.
     """
     ret = SortedDict()
     ret['name'] = get_view_name(self.__class__)
     ret['description'] = get_view_description(self.__class__)
     ret['renders'] = [renderer.media_type for renderer in self.renderer_classes]
     ret['parses'] = [parser.media_type for parser in self.parser_classes]
     return ret
Ejemplo n.º 5
0
    def metadata(self, request):
        """
        Return a dictionary of metadata about the view.
        Used to return responses for OPTIONS requests.
        """

        # This is used by ViewSets to disambiguate instance vs list views
        view_name_suffix = getattr(self, 'suffix', None)

        # By default we can't provide any form-like information, however the
        # generic views override this implementation and add additional
        # information for POST and PUT methods, based on the serializer.
        ret = SortedDict()
        ret['name'] = get_view_name(self.__class__, view_name_suffix)
        ret['description'] = get_view_description(self.__class__)
        ret['renders'] = [renderer.media_type for renderer in self.renderer_classes]
        ret['parses'] = [parser.media_type for parser in self.parser_classes]
        return ret
Ejemplo n.º 6
0
    def metadata(self, request):
        """
        Return a dictionary of metadata about the view.
        Used to return responses for OPTIONS requests.
        """

        # This is used by ViewSets to disambiguate instance vs list views
        view_name_suffix = getattr(self, 'suffix', None)

        # By default we can't provide any form-like information, however the
        # generic views override this implementation and add additional
        # information for POST and PUT methods, based on the serializer.
        ret = SortedDict()
        ret['name'] = get_view_name(self.__class__, view_name_suffix)
        ret['description'] = get_view_description(self.__class__)
        ret['renders'] = [renderer.media_type for renderer in self.renderer_classes]
        ret['parses'] = [parser.media_type for parser in self.parser_classes]
        return ret
Ejemplo n.º 7
0
    def breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen):
        """
        Add tuples of (name, url) to the breadcrumbs list,
        progressively chomping off parts of the url.
        """

        try:
            (view, unused_args, unused_kwargs) = resolve(url)
        except Exception:
            pass
        else:
            # Check if this is a REST framework view,
            # and if so add it to the breadcrumbs
            cls = getattr(view, 'cls', None)
            if cls is not None and issubclass(cls, APIView):
                # Don't list the same view twice in a row.
                # Probably an optional trailing slash.
                if not seen or seen[-1] != view:
                    suffix = getattr(view, 'suffix', None)
                    name = get_view_name(view.cls, suffix)
                    breadcrumbs_list.insert(0, (name, prefix + url))
                    seen.append(view)

        if url == '':
            # All done
            return breadcrumbs_list

        elif url.endswith('/'):
            # Drop trailing slash off the end and continue to try to
            # resolve more breadcrumbs
            url = url.rstrip('/')
            return breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen)

        # Drop trailing non-slash off the end and continue to try to
        # resolve more breadcrumbs
        url = url[:url.rfind('/') + 1]
        return breadcrumbs_recursive(url, breadcrumbs_list, prefix, seen)
Ejemplo n.º 8
0
 def get_name(self, view):
     return get_view_name(view.__class__, getattr(view, 'suffix', None))
Ejemplo n.º 9
0
 def get_name(self, view):
     return get_view_name(view.__class__, getattr(view, 'suffix', None))
 def __get_name__(self, callback):
     """
     Returns the APIView class name
     """
     return get_view_name(callback)