4949
5050User = get_user_model ()
5151
52-
53- class SimpleRegularUserSerializer (serializers .ModelSerializer ):
54-
55- uuid = serializers .SerializerMethodField ()
56- full_name = serializers .SerializerMethodField ()
57-
58- def get_uuid (self , obj ) -> UUID :
59- return UUID (int = obj .pk )
60-
61- def get_full_name (self , obj ) -> str :
62- return obj .get_full_name ()
63-
64- class Meta :
65- model = User
66- fields = (
67- 'uuid' ,
68- 'username' ,
69- 'first_name' ,
70- 'last_name' ,
71- 'full_name'
72- )
73- extra_kwargs = {
74- "id" : {"read_only" : True },
75- }
76-
7752class CampaignSerializer (serializers .ModelSerializer ):
7853 class Meta :
7954 model = OWCampaigns
@@ -139,6 +114,9 @@ class Meta:
139114 uuid = serializers .UUIDField (source = "user_UUID" , read_only = True )
140115 language_iso = serializers .SerializerMethodField (help_text = 'ISO 639-1 code' , default = 'en' )
141116 username = serializers .SerializerMethodField ()
117+ first_name = serializers .SerializerMethodField ()
118+ last_name = serializers .SerializerMethodField ()
119+ full_name = serializers .SerializerMethodField ()
142120 is_guest = serializers .SerializerMethodField ()
143121 score = UserScoreSerializer (source = '*' , read_only = True )
144122
@@ -148,6 +126,21 @@ def get_is_guest(self, obj) -> bool:
148126 def get_username (self , obj ) -> str :
149127 return obj .get_username ()
150128
129+ def get_first_name (self , obj ) -> str :
130+ if isinstance (obj , User ):
131+ return obj .first_name
132+ return 'Anonymous'
133+
134+ def get_last_name (self , obj ) -> str :
135+ if isinstance (obj , User ):
136+ return obj .last_name
137+ return 'User'
138+
139+ def get_full_name (self , obj ) -> str :
140+ if isinstance (obj , User ):
141+ return obj .get_full_name ()
142+ return 'Anonymous User'
143+
151144 def get_language_iso (self , obj ) -> str :
152145 return obj .language_iso2
153146
@@ -157,6 +150,9 @@ def to_representation(self, instance):
157150 data = {}
158151 data ['uuid' ] = UUID (int = instance .pk )
159152 data ['username' ] = instance .get_username ()
153+ data ['first_name' ] = self .get_first_name (obj = instance )
154+ data ['last_name' ] = self .get_last_name (obj = instance )
155+ data ['full_name' ] = self .get_full_name (obj = instance )
160156 data ['registration_time' ] = instance .date_joined
161157 data ['locale' ] = 'en'
162158 data ['language_iso' ] = 'en'
@@ -165,7 +161,10 @@ def to_representation(self, instance):
165161 'value' : 0 ,
166162 'updated_at' : None
167163 }
168- return data
164+ return {
165+ k : v for k , v in data .items ()
166+ if k in self .fields .keys ()
167+ }
169168
170169 return super ().to_representation (instance )
171170
@@ -174,6 +173,9 @@ class Meta:
174173 fields = (
175174 "uuid" ,
176175 "username" ,
176+ "first_name" ,
177+ "last_name" ,
178+ "full_name" ,
177179 "registration_time" ,
178180 "locale" ,
179181 "language_iso" ,
@@ -189,6 +191,23 @@ class Meta:
189191 }
190192
191193class SimpleUserSerializer (UserSerializer ):
194+
195+ uuid = serializers .SerializerMethodField ()
196+
197+ def get_uuid (self , obj ) -> UUID :
198+ return UUID (int = obj .pk )
199+
200+ class Meta (UserSerializer .Meta ):
201+ model = User
202+ fields = (
203+ 'uuid' ,
204+ 'username' ,
205+ 'first_name' ,
206+ 'last_name' ,
207+ 'full_name'
208+ )
209+
210+ class MinimalUserSerializer (UserSerializer ):
192211 class Meta (UserSerializer .Meta ):
193212 fields = (
194213 "uuid" ,
@@ -711,7 +730,7 @@ class SimplifiedObservationWithPhotosSerializer(BaseSimplifiedReportSerializerWi
711730 class Meta (BaseSimplifiedReportSerializerWithPhoto .Meta ):
712731 pass
713732
714- class SimpleAnnotatorUserSerializer (SimpleRegularUserSerializer ):
733+ class SimpleAnnotatorUserSerializer (SimpleUserSerializer ):
715734 def to_representation (self , instance ):
716735 # Get the request user
717736 user = self .context .get ('request' ).user
@@ -1019,7 +1038,7 @@ class Meta:
10191038
10201039class AssignmentSerializer (BaseAssignmentSerializer ):
10211040 class AssignedObservationSerializer (SimplifiedObservationWithPhotosSerializer ):
1022- user = SimpleUserSerializer (read_only = True )
1041+ user = MinimalUserSerializer (read_only = True )
10231042 class Meta (SimplifiedObservationWithPhotosSerializer .Meta ):
10241043 fields = tuple (
10251044 fname for fname in SimplifiedObservationWithPhotosSerializer .Meta .fields if fname != 'user_uuid'
0 commit comments