Merge pull request #2628 from maryokhin/patch-2

CreateOnlyDefault call default.set_context() only on create
This commit is contained in:
Tom Christie 2015-03-03 16:23:42 +00:00
commit 932998134f

View File

@ -103,7 +103,7 @@ def set_value(dictionary, keys, value):
dictionary[keys[-1]] = value dictionary[keys[-1]] = value
class CreateOnlyDefault: class CreateOnlyDefault(object):
""" """
This class may be used to provide default values that are only used This class may be used to provide default values that are only used
for create operations, but that do not return any value for update for create operations, but that do not return any value for update
@ -114,7 +114,7 @@ class CreateOnlyDefault:
def set_context(self, serializer_field): def set_context(self, serializer_field):
self.is_update = serializer_field.parent.instance is not None self.is_update = serializer_field.parent.instance is not None
if callable(self.default) and hasattr(self.default, 'set_context'): if callable(self.default) and hasattr(self.default, 'set_context') and not self.is_update:
self.default.set_context(serializer_field) self.default.set_context(serializer_field)
def __call__(self): def __call__(self):
@ -130,7 +130,7 @@ class CreateOnlyDefault:
) )
class CurrentUserDefault: class CurrentUserDefault(object):
def set_context(self, serializer_field): def set_context(self, serializer_field):
self.user = serializer_field.context['request'].user self.user = serializer_field.context['request'].user