def update(self, instance, validated_data): email_field = get_user_email_field_name(User) if settings.SEND_ACTIVATION_EMAIL and email_field in validated_data: instance_email = get_user_email(instance) if instance_email != validated_data[email_field]: instance.is_active = False instance.save(update_fields=['is_active']) return super(UserSerializer, self).update(instance, validated_data)
def test_get_user_email_field_name_returns_proper_value(self): if django.VERSION >= (1, 11): email_field_name = User.get_email_field_name() else: email_field_name = settings.USER_EMAIL_FIELD_NAME user_email_field_name = get_user_email_field_name(User) self.assertEquals(user_email_field_name, email_field_name)
def get_users(self, email): if self._users is None: email_field_name = get_user_email_field_name(User) users = User._default_manager.filter( **{email_field_name + '__iexact': email}) self._users = [ u for u in users if u.is_active and u.has_usable_password() ] return self._users
def get_users(self, email): if self._users is None: email_field_name = get_user_email_field_name(User) users = User._default_manager.filter(**{ email_field_name + '__iexact': email }) self._users = [ u for u in users if u.is_active and u.has_usable_password() ] return self._users
def update(self, instance, validated_data): email_field = get_user_email_field_name(User) instance.email_changed = False if settings.SEND_ACTIVATION_EMAIL and email_field in validated_data: instance_email = get_user_email(instance) if instance_email != validated_data[email_field]: instance.is_active = False instance.email_changed = True instance.save(update_fields=["is_active"]) return super().update(instance, validated_data)
def __init__(self, *args, **kwargs): super(PasswordResetSerializer, self).__init__(*args, **kwargs) email_field = get_user_email_field_name(User) self.fields[email_field] = serializers.EmailField() validate_email_fn_name = "validate_" + email_field def validate_email_fn(self, value): users = self.context["view"].get_users(value) if settings.PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND and not users: self.fail("email_not_found") else: return value setattr(PasswordResetSerializer, validate_email_fn_name, validate_email_fn)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.email_field = get_user_email_field_name(User) self.fields[self.email_field] = serializers.EmailField()
def get_users(self, email): if self._users is None: email_field_name = get_user_email_field_name(User) self._users = User.objects.filter( **{email_field_name + '__iexact': email}) return self._users
def _action(self, serializer): for user in self.get_users(serializer.data[get_user_email_field_name(User)]): self.send_password_reset_email(user) return Response(status=status.HTTP_204_NO_CONTENT)
def _action(self, serializer): if not settings.SEND_ACTIVATION_EMAIL: return response.Response(status=status.HTTP_400_BAD_REQUEST) for user in self.get_users(serializer.data[get_user_email_field_name(User)]): self.send_activation_email(user) return response.Response(status=status.HTTP_204_NO_CONTENT)