diff --git a/client/src/components/dashboard/UpdateUser.vue b/client/src/components/dashboard/UpdateUser.vue index fcbf4b84..6dd397ed 100644 --- a/client/src/components/dashboard/UpdateUser.vue +++ b/client/src/components/dashboard/UpdateUser.vue @@ -53,6 +53,7 @@ import { $api } from '@/clients'; import { requiredRules, listAllOfficeUsers } from '@/utils'; import type { Api } from '@/types'; import { listOffices, listTeamLeads, userInputs as UpdateUserForm , listAllUsers} from '@/utils/add_update_user_form'; +import { ApiClientBase } from '@/clients/api/base'; import { onMounted, ref, watch } from 'vue'; export default { @@ -81,6 +82,9 @@ export default { if (field.key === 'location' || field.key === 'reporting_to') { field.options = [] } + if (field.key === 'hidden_from_users' && ApiClientBase.user.value?.fullUser?.location?.name !== 'Egypt') { + userInputs.value.splice(userInputs.value.indexOf(field), 1) + } } locations.value = await listOffices({ count: 10, key: 'location', items: [], page: 1 }) diff --git a/server/cshr/views/users.py b/server/cshr/views/users.py index 2c86dcc4..8ff1929c 100644 --- a/server/cshr/views/users.py +++ b/server/cshr/views/users.py @@ -336,28 +336,31 @@ def put(self, request: Request, id: str, format=None) -> Response: if not image: request.data["image"] = None - new_hidden_from_ids = set(request.data.get("hidden_from_users")) - if new_hidden_from_ids is not None and user.id in new_hidden_from_ids: - return CustomResponse.bad_request(message="A user cannot be hidden from themselves.") - - users = User.objects.filter(id__in=new_hidden_from_ids) - if users.count() != len(new_hidden_from_ids): - return CustomResponse.not_found( - status_code=404, - message="One of the hidden from users does not exist.", - ) + raw_hidden_from = request.data.get("hidden_from_users") + new_hidden_from_ids = set(raw_hidden_from) if raw_hidden_from is not None else None + if new_hidden_from_ids is not None: + if user.id in new_hidden_from_ids: + return CustomResponse.bad_request(message="A user cannot be hidden from themselves.") + users = User.objects.filter(id__in=new_hidden_from_ids) + if users.count() != len(new_hidden_from_ids): + return CustomResponse.not_found( + status_code=404, + message="One of the hidden from users does not exist.", + ) serializer = self.get_serializer(user, data=request.data, partial=True) if serializer.is_valid(): office = get_office_by_id(request.data.get("location")) - user = serializer.save( - team=request.data.get("team"), - gender=request.data.get("gender"), - location=office, - joining_at=request.data.get("joining_at"), - reporting_to=request.data.get("reporting_to"), - hidden_from=new_hidden_from_ids, - ) + save_kwargs = { + "team": request.data.get("team"), + "gender": request.data.get("gender"), + "location": office, + "joining_at": request.data.get("joining_at"), + "reporting_to": request.data.get("reporting_to"), + } + if new_hidden_from_ids is not None: + save_kwargs["hidden_from"] = new_hidden_from_ids + user = serializer.save(**save_kwargs) return CustomResponse.success( data=serializer.data, status_code=202, message="User updated"