diff options
| author | Ben Timby | 2012-01-23 13:32:37 -0500 |
|---|---|---|
| committer | Ben Timby | 2012-01-23 13:32:37 -0500 |
| commit | 7fa3a214fbd33dac61d3f8836e2c4aeda3149647 (patch) | |
| tree | 82c614346b2e7c8eadc26c45e7a14038d41eee4f /djangorestframework/utils/description.py | |
| parent | 2d8739115c8b82267f1006f636f05b116539e0dd (diff) | |
| download | django-rest-framework-7fa3a214fbd33dac61d3f8836e2c4aeda3149647.tar.bz2 | |
Refactored get_name()/get_description()
Diffstat (limited to 'djangorestframework/utils/description.py')
| -rw-r--r-- | djangorestframework/utils/description.py | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/djangorestframework/utils/description.py b/djangorestframework/utils/description.py deleted file mode 100644 index 096cf57f..00000000 --- a/djangorestframework/utils/description.py +++ /dev/null @@ -1,88 +0,0 @@ -""" -Get a descriptive name and description for a view. -""" -import re -from djangorestframework.resources import Resource, FormResource, ModelResource - - -# These a a bit Grungy, but they do the job. - -def get_name(view): - """ - Return a name for the view. - - If view has a name attribute, use that, otherwise use the view's class name, with 'CamelCaseNames' converted to 'Camel Case Names'. - """ - - # If we're looking up the name of a view callable, as found by reverse, - # grok the class instance that we stored when as_view was called. - if getattr(view, 'cls_instance', None): - view = view.cls_instance - - # If this view has a resource that's been overridden, then use that resource for the name - if getattr(view, 'resource', None) not in (None, Resource, FormResource, ModelResource): - name = view.resource.__name__ - - # Chomp of any non-descriptive trailing part of the resource class name - if name.endswith('Resource') and name != 'Resource': - name = name[:-len('Resource')] - - # If the view has a descriptive suffix, eg '*** List', '*** Instance' - if getattr(view, '_suffix', None): - name += view._suffix - - # Otherwise if it's a function view use the function's name - elif getattr(view, '__name__', None) is not None: - name = view.__name__ - - # If it's a view class with no resource then grok the name from the class name - elif getattr(view, '__class__', None) is not None: - name = view.__class__.__name__ - - # Chomp of any non-descriptive trailing part of the view class name - if name.endswith('View') and name != 'View': - name = name[:-len('View')] - - # I ain't got nuthin fo' ya - else: - return '' - - return re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', ' \\1', name).strip() - - -def get_description(view): - """ - Provide a description for the view. - - By default this is the view's docstring with nice unindention applied. - """ - - # If we're looking up the name of a view callable, as found by reverse, - # grok the class instance that we stored when as_view was called. - if getattr(view, 'cls_instance', None): - view = view.cls_instance - - # If this view has a resource that's been overridden, then use the resource's doctring - if getattr(view, 'resource', None) not in (None, Resource, FormResource, ModelResource): - doc = view.resource.__doc__ - - # Otherwise use the view doctring - elif getattr(view, '__doc__', None): - doc = view.__doc__ - - # I ain't got nuthin fo' ya - else: - return '' - - if not doc: - return '' - - whitespace_counts = [len(line) - len(line.lstrip(' ')) for line in doc.splitlines()[1:] if line.lstrip()] - - # unindent the docstring if needed - if whitespace_counts: - whitespace_pattern = '^' + (' ' * min(whitespace_counts)) - return re.sub(re.compile(whitespace_pattern, re.MULTILINE), '', doc) - - # otherwise return it as-is - return doc |
