feat: Introduce lists and reviews apps, refactor user list functionality from accounts, and add user profile fields.

This commit is contained in:
pacnpal
2025-12-26 09:27:44 -05:00
parent ed04b30469
commit cd8868a591
37 changed files with 5900 additions and 281 deletions

View File

@@ -19,7 +19,9 @@ class UserSerializer(serializers.ModelSerializer):
"""
avatar_url = serializers.SerializerMethodField()
display_name = serializers.SerializerMethodField()
display_name = serializers.CharField(source="profile.display_name", required=False)
unit_system = serializers.CharField(source="profile.unit_system", required=False)
location = serializers.CharField(source="profile.location", required=False)
class Meta:
model = User
@@ -31,6 +33,8 @@ class UserSerializer(serializers.ModelSerializer):
"date_joined",
"is_active",
"avatar_url",
"unit_system",
"location",
]
read_only_fields = ["id", "date_joined", "is_active"]
@@ -40,9 +44,15 @@ class UserSerializer(serializers.ModelSerializer):
return obj.profile.avatar.url
return None
def get_display_name(self, obj) -> str:
"""Get user display name"""
return obj.get_display_name()
def update(self, instance, validated_data):
profile_data = validated_data.pop("profile", {})
profile = instance.profile
for attr, value in profile_data.items():
setattr(profile, attr, value)
profile.save()
return super().update(instance, validated_data)
class LoginSerializer(serializers.Serializer):