♻️(backend) UserSerializer fallback strategy from UserLightSerializer
In the UserLightSerializer we were fallbacking on a strategy to never have a full_name or short_name empty. We use the part of the email befire the @. We are doing the same thing now in the main UserSerializer.
This commit is contained in:
committed by
Anthony LC
parent
a1463e0a10
commit
f8b8390758
@@ -25,22 +25,13 @@ from core.services.converter_services import (
|
|||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
"""Serialize users."""
|
"""Serialize users."""
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.User
|
|
||||||
fields = ["id", "email", "full_name", "short_name", "language"]
|
|
||||||
read_only_fields = ["id", "email", "full_name", "short_name"]
|
|
||||||
|
|
||||||
|
|
||||||
class UserLightSerializer(UserSerializer):
|
|
||||||
"""Serialize users with limited fields."""
|
|
||||||
|
|
||||||
full_name = serializers.SerializerMethodField(read_only=True)
|
full_name = serializers.SerializerMethodField(read_only=True)
|
||||||
short_name = serializers.SerializerMethodField(read_only=True)
|
short_name = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.User
|
model = models.User
|
||||||
fields = ["full_name", "short_name"]
|
fields = ["id", "email", "full_name", "short_name", "language"]
|
||||||
read_only_fields = ["full_name", "short_name"]
|
read_only_fields = ["id", "email", "full_name", "short_name"]
|
||||||
|
|
||||||
def get_full_name(self, instance):
|
def get_full_name(self, instance):
|
||||||
"""Return the full name of the user."""
|
"""Return the full name of the user."""
|
||||||
@@ -59,6 +50,15 @@ class UserLightSerializer(UserSerializer):
|
|||||||
return instance.short_name
|
return instance.short_name
|
||||||
|
|
||||||
|
|
||||||
|
class UserLightSerializer(UserSerializer):
|
||||||
|
"""Serialize users with limited fields."""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.User
|
||||||
|
fields = ["full_name", "short_name"]
|
||||||
|
read_only_fields = ["full_name", "short_name"]
|
||||||
|
|
||||||
|
|
||||||
class TemplateAccessSerializer(serializers.ModelSerializer):
|
class TemplateAccessSerializer(serializers.ModelSerializer):
|
||||||
"""Serialize template accesses."""
|
"""Serialize template accesses."""
|
||||||
|
|
||||||
|
|||||||
@@ -278,6 +278,35 @@ def test_api_users_retrieve_me_authenticated():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_users_retrieve_me_authenticated_empty_name():
|
||||||
|
"""
|
||||||
|
Authenticated users should be able to retrieve their own user via the "/users/me" path.
|
||||||
|
when no name is provided, the full name and short name should be the email without the domain.
|
||||||
|
"""
|
||||||
|
user = factories.UserFactory(
|
||||||
|
email="test_foo@test.com",
|
||||||
|
full_name=None,
|
||||||
|
short_name=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
client = APIClient()
|
||||||
|
client.force_login(user)
|
||||||
|
|
||||||
|
factories.UserFactory.create_batch(2)
|
||||||
|
response = client.get(
|
||||||
|
"/api/v1.0/users/me/",
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.json() == {
|
||||||
|
"id": str(user.id),
|
||||||
|
"email": "test_foo@test.com",
|
||||||
|
"full_name": "test_foo",
|
||||||
|
"language": user.language,
|
||||||
|
"short_name": "test_foo",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_api_users_retrieve_anonymous():
|
def test_api_users_retrieve_anonymous():
|
||||||
"""Anonymous users should not be allowed to retrieve a user."""
|
"""Anonymous users should not be allowed to retrieve a user."""
|
||||||
client = APIClient()
|
client = APIClient()
|
||||||
|
|||||||
Reference in New Issue
Block a user