diff options
| author | Tom Christie | 2013-04-09 18:22:39 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-04-09 18:22:39 +0100 | 
| commit | c73d0e1e39e661c7324eb0df8c3ce6e18f57915b (patch) | |
| tree | 54862d6affb779b3c39102b975dd3c4d753efe55 /rest_framework/compat.py | |
| parent | 027792c981b1442a018e382a6fa2e58496b0b750 (diff) | |
| download | django-rest-framework-c73d0e1e39e661c7324eb0df8c3ce6e18f57915b.tar.bz2 | |
Minor cleaning up on View
Diffstat (limited to 'rest_framework/compat.py')
| -rw-r--r-- | rest_framework/compat.py | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 6551723a..8bfebe68 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -87,9 +87,7 @@ else:          raise ImportError("User model is not to be found.") -# First implementation of Django class-based views did not include head method -# in base View class - https://code.djangoproject.com/ticket/15668 -if django.VERSION >= (1, 4): +if django.VERSION >= (1, 5):      from django.views.generic import View  else:      from django.views.generic import View as _View @@ -97,6 +95,8 @@ else:      from django.utils.functional import update_wrapper      class View(_View): +        # 1.3 does not include head method in base View class +        # See: https://code.djangoproject.com/ticket/15668          @classonlymethod          def as_view(cls, **initkwargs):              """ @@ -126,11 +126,15 @@ else:              update_wrapper(view, cls.dispatch, assigned=())              return view -# Taken from @markotibold's attempt at supporting PATCH. -# https://github.com/markotibold/django-rest-framework/tree/patch -http_method_names = set(View.http_method_names) -http_method_names.add('patch') -View.http_method_names = list(http_method_names)  # PATCH method is not implemented by Django +        # _allowed_methods only present from 1.5 onwards +        def _allowed_methods(self): +            return [m.upper() for m in self.http_method_names if hasattr(self, m)] + + +# PATCH method is not implemented by Django +if 'patch' not in View.http_method_names: +    View.http_method_names = View.http_method_names + ['patch'] +  # PUT, DELETE do not require CSRF until 1.4.  They should.  Make it better.  if django.VERSION >= (1, 4):  | 
