Skip to content

Commit 6d558db

Browse files
committed
Refactor
1 parent 69b29f8 commit 6d558db

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

api/serializers.py

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -119,22 +119,29 @@ def _get_role(self, obj: Union[User, TigaUser]) -> Role:
119119

120120
def get_role(self, obj: Union[User, TigaUser]) -> Role:
121121
if isinstance(obj, User):
122-
obj = UserStat.objects.filter(user=obj).first()
123-
if not obj:
124-
return self._get_role(obj=TigaUser())
122+
try:
123+
obj = obj.userstat
124+
except UserStat.DoesNotExist:
125+
obj = None
126+
127+
if not obj:
128+
obj = TigaUser()
125129
return self._get_role(obj=obj)
126130

127131
@extend_schema_field(PermissionsSerializer)
128132
def get_permissions(self, obj: Union[User, TigaUser]):
129-
role = self.get_role(obj=obj)
130-
131133
if isinstance(obj, User):
132-
obj = UserStat.objects.filter(user=obj).first()
134+
try:
135+
obj = obj.userstat
136+
except UserStat.DoesNotExist:
137+
obj = None
133138

134139
if not obj:
135140
obj = TigaUser()
136141

137-
permissions = obj.get_role_permissions(role=role)
142+
permissions = obj.get_role_permissions(
143+
role=self.get_role(obj=obj)
144+
)
138145
return PermissionsSerializer(permissions).data
139146

140147
class UserPermissionSerializer(serializers.Serializer):
@@ -168,13 +175,17 @@ def get_general(self, obj: Union[User, TigaUser]):
168175
@extend_schema_field(CountryPermissionSerializer(many=True))
169176
def get_countries(self, obj: Union[User, TigaUser]):
170177
if isinstance(obj, User):
171-
obj = UserStat.objects.filter(user=obj).first()
172-
if obj:
173-
result = []
174-
for country in obj.get_countries_with_roles():
175-
result.append(self.CountryPermissionSerializer(instance=obj, country=country).data)
176-
return result
177-
return self.CountryPermissionSerializer(many=True).data
178+
try:
179+
obj = obj.userstat
180+
except UserStat.DoesNotExist:
181+
obj = None
182+
if not obj:
183+
return self.CountryPermissionSerializer(many=True).data
184+
185+
result = []
186+
for country in obj.get_countries_with_roles():
187+
result.append(self.CountryPermissionSerializer(instance=obj, country=country).data)
188+
return result
178189

179190
class UserSerializer(serializers.ModelSerializer):
180191
class UserScoreSerializer(serializers.ModelSerializer):
@@ -1012,7 +1023,10 @@ def validate(self, data):
10121023
data['validation_complete_executive'] = data.pop("is_decisive")
10131024
user_role = data['user']
10141025
if isinstance(user_role, User):
1015-
user_role = UserStat.objects.filter(user=user_role).first()
1026+
try:
1027+
user_role = user_role.userstat
1028+
except UserStat.DoesNotExist:
1029+
user_role = None
10161030
can_set_is_decisive = False
10171031
if user_role:
10181032
can_set_is_decisive = user_role.has_role_permission_by_model(

0 commit comments

Comments
 (0)