aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2013-01-30 20:33:50 +0000
committerTom Christie2013-01-30 20:33:50 +0000
commite4ac566625dcb2858ce15148e38595b49eedfa1b (patch)
tree17d929890ed80b62e4c24ba1ff5b2ca7cb5a73e0
parente24d29ec05fd3fa7cc12533929dc1b68e9d56f9a (diff)
downloaddjango-rest-framework-e4ac566625dcb2858ce15148e38595b49eedfa1b.tar.bz2
Add dprecation warnings
-rw-r--r--rest_framework/fields.py26
-rw-r--r--rest_framework/relations.py32
2 files changed, 36 insertions, 22 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index d6689c4e..b9b7e426 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -33,7 +33,7 @@ class Field(object):
empty = ''
type_name = None
partial = False
- _use_files = None
+ use_files = False
form_field_class = forms.CharField
def __init__(self, source=None):
@@ -126,6 +126,13 @@ class WritableField(Field):
validators=[], error_messages=None, widget=None,
default=None, blank=None):
+ # 'blank' is to be deprecated in favor of 'required'
+ if blank is not None:
+ warnings.warn('The `blank` keyword argument is due to deprecated. '
+ 'Use the `required` keyword argument instead.',
+ PendingDeprecationWarning, stacklevel=2)
+ required = not(blank)
+
super(WritableField, self).__init__(source=source)
self.read_only = read_only
@@ -143,7 +150,6 @@ class WritableField(Field):
self.validators = self.default_validators + validators
self.default = default if default is not None else self.default
- self.blank = blank
# Widgets are ony used for HTML forms.
widget = widget or self.widget
@@ -182,7 +188,7 @@ class WritableField(Field):
return
try:
- if self._use_files:
+ if self.use_files:
files = files or {}
native = files[field_name]
else:
@@ -289,16 +295,6 @@ class CharField(WritableField):
if max_length is not None:
self.validators.append(validators.MaxLengthValidator(max_length))
- def validate(self, value):
- """
- Validates that the value is supplied (if required).
- """
- # if empty string and allow blank
- if self.blank and not value:
- return
- else:
- super(CharField, self).validate(value)
-
def from_native(self, value):
if isinstance(value, basestring) or value is None:
return value
@@ -567,7 +563,7 @@ class FloatField(WritableField):
class FileField(WritableField):
- _use_files = True
+ use_files = True
type_name = 'FileField'
form_field_class = forms.FileField
widget = widgets.FileInput
@@ -611,7 +607,7 @@ class FileField(WritableField):
class ImageField(FileField):
- _use_files = True
+ use_files = True
form_field_class = forms.ImageField
default_error_messages = {
diff --git a/rest_framework/relations.py b/rest_framework/relations.py
index 046b0db1..d49ca39b 100644
--- a/rest_framework/relations.py
+++ b/rest_framework/relations.py
@@ -8,6 +8,7 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework.fields import Field, WritableField
from rest_framework.reverse import reverse
from urlparse import urlparse
+import warnings
##### Relational fields #####
@@ -26,23 +27,27 @@ class RelatedField(WritableField):
cache_choices = False
empty_label = None
- default_read_only = True # TODO: Remove this
+ read_only = True
many = False
def __init__(self, *args, **kwargs):
- # 'null' will be deprecated in favor of 'required'
+ # 'null' is to be deprecated in favor of 'required'
if 'null' in kwargs:
+ warnings.warn('The `null` keyword argument is due to be deprecated. '
+ 'Use the `required` keyword argument instead.',
+ PendingDeprecationWarning, stacklevel=2)
kwargs['required'] = not kwargs.pop('null')
self.queryset = kwargs.pop('queryset', None)
self.many = kwargs.pop('many', self.many)
- super(RelatedField, self).__init__(*args, **kwargs)
- self.read_only = kwargs.pop('read_only', self.default_read_only)
if self.many:
self.widget = self.many_widget
self.form_field_class = self.many_form_field_class
+ kwargs['read_only'] = kwargs.pop('read_only', self.read_only)
+ super(RelatedField, self).__init__(*args, **kwargs)
+
def initialize(self, parent, field_name):
super(RelatedField, self).initialize(parent, field_name)
if self.queryset is None and not self.read_only:
@@ -157,7 +162,7 @@ class PrimaryKeyRelatedField(RelatedField):
"""
Represents a relationship as a pk value.
"""
- default_read_only = False
+ read_only = False
default_error_messages = {
'does_not_exist': _("Invalid pk '%s' - object does not exist."),
@@ -231,7 +236,7 @@ class SlugRelatedField(RelatedField):
"""
Represents a relationship using a unique field on the target.
"""
- default_read_only = False
+ read_only = False
default_error_messages = {
'does_not_exist': _("Object with %s=%s does not exist."),
@@ -269,7 +274,7 @@ class HyperlinkedRelatedField(RelatedField):
pk_url_kwarg = 'pk'
slug_field = 'slug'
slug_url_kwarg = None # Defaults to same as `slug_field` unless overridden
- default_read_only = False
+ read_only = False
default_error_messages = {
'no_match': _('Invalid hyperlink - No URL match'),
@@ -390,6 +395,7 @@ class HyperlinkedIdentityField(Field):
pk_url_kwarg = 'pk'
slug_field = 'slug'
slug_url_kwarg = None # Defaults to same as `slug_field` unless overridden
+ read_only = True
def __init__(self, *args, **kwargs):
# TODO: Make view_name mandatory, and have the
@@ -452,23 +458,35 @@ class HyperlinkedIdentityField(Field):
class ManyRelatedField(RelatedField):
def __init__(self, *args, **kwargs):
+ warnings.warn('`ManyRelatedField()` is due to be deprecated. '
+ 'Use `RelatedField(many=True)` instead.',
+ PendingDeprecationWarning, stacklevel=2)
kwargs['many'] = True
super(ManyRelatedField, self).__init__(*args, **kwargs)
class ManyPrimaryKeyRelatedField(PrimaryKeyRelatedField):
def __init__(self, *args, **kwargs):
+ warnings.warn('`ManyPrimaryKeyRelatedField()` is due to be deprecated. '
+ 'Use `PrimaryKeyRelatedField(many=True)` instead.',
+ PendingDeprecationWarning, stacklevel=2)
kwargs['many'] = True
super(ManyPrimaryKeyRelatedField, self).__init__(*args, **kwargs)
class ManySlugRelatedField(SlugRelatedField):
def __init__(self, *args, **kwargs):
+ warnings.warn('`ManySlugRelatedField()` is due to be deprecated. '
+ 'Use `SlugRelatedField(many=True)` instead.',
+ PendingDeprecationWarning, stacklevel=2)
kwargs['many'] = True
super(ManySlugRelatedField, self).__init__(*args, **kwargs)
class ManyHyperlinkedRelatedField(HyperlinkedRelatedField):
def __init__(self, *args, **kwargs):
+ warnings.warn('`ManyHyperlinkedRelatedField()` is due to be deprecated. '
+ 'Use `HyperlinkedRelatedField(many=True)` instead.',
+ PendingDeprecationWarning, stacklevel=2)
kwargs['many'] = True
super(ManyHyperlinkedRelatedField, self).__init__(*args, **kwargs)