Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions client/src/components/dashboard/UpdateUser.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 })
Expand Down
39 changes: 21 additions & 18 deletions server/cshr/views/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading