Commit d07dae6e by Christopher Paolini

Ability to override name/description of view

Added settings and additions to formatting.py
parent c245fc6c
...@@ -69,6 +69,10 @@ DEFAULTS = { ...@@ -69,6 +69,10 @@ DEFAULTS = {
'PAGINATE_BY': None, 'PAGINATE_BY': None,
'PAGINATE_BY_PARAM': None, 'PAGINATE_BY_PARAM': None,
# View configuration
'VIEW_NAME_FUNCTION': None,
'VIEW_DESCRIPTION_FUNCTION': None,
# Authentication # Authentication
'UNAUTHENTICATED_USER': 'django.contrib.auth.models.AnonymousUser', 'UNAUTHENTICATED_USER': 'django.contrib.auth.models.AnonymousUser',
'UNAUTHENTICATED_TOKEN': None, 'UNAUTHENTICATED_TOKEN': None,
......
...@@ -7,6 +7,7 @@ from django.utils.html import escape ...@@ -7,6 +7,7 @@ from django.utils.html import escape
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from rest_framework.compat import apply_markdown, smart_text from rest_framework.compat import apply_markdown, smart_text
import re import re
from rest_framework.settings import api_settings
def _remove_trailing_string(content, trailing): def _remove_trailing_string(content, trailing):
...@@ -48,7 +49,14 @@ def _camelcase_to_spaces(content): ...@@ -48,7 +49,14 @@ def _camelcase_to_spaces(content):
def get_view_name(cls, suffix=None): def get_view_name(cls, suffix=None):
""" """
Return a formatted name for an `APIView` class or `@api_view` function. Return a formatted name for an `APIView` class or `@api_view` function.
If a VIEW_NAME_FUNCTION is set in settings the value of that will be used
if that value is "falsy" then the normal formatting will be used.
""" """
if api_settings.VIEW_NAME_FUNCTION:
name = api_settings.VIEW_NAME_FUNCTION(cls, suffix)
if name:
return name
name = cls.__name__ name = cls.__name__
name = _remove_trailing_string(name, 'View') name = _remove_trailing_string(name, 'View')
name = _remove_trailing_string(name, 'ViewSet') name = _remove_trailing_string(name, 'ViewSet')
...@@ -61,7 +69,14 @@ def get_view_name(cls, suffix=None): ...@@ -61,7 +69,14 @@ def get_view_name(cls, suffix=None):
def get_view_description(cls, html=False): def get_view_description(cls, html=False):
""" """
Return a description for an `APIView` class or `@api_view` function. Return a description for an `APIView` class or `@api_view` function.
If a VIEW_DESCRIPTION_FUNCTION is set in settings the value of that will be used
if that value is "falsy" then the normal formatting will be used.
""" """
if api_settings.VIEW_DESCRIPTION_FUNCTION:
description = api_settings.VIEW_DESCRIPTION_FUNCTION(cls)
if description:
return markup_description(description)
description = cls.__doc__ or '' description = cls.__doc__ or ''
description = _remove_leading_indent(smart_text(description)) description = _remove_leading_indent(smart_text(description))
if html: if html:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment