@@ -143,12 +143,9 @@ class BusinessHostService: return BusinessHostSerializer(company, context={'token_cap_enabled': company.token_cap_enabled}) return company - def delete(self, request: Request): - serializer = DeleteBusinessAccountSerializer(data=request.data) - serializer.is_valid(raise_exception=True) - account = BusinessAccount.objects.filter( - parent_company=self.user.host_account, user__uid=serializer.validated_data['uid'] - ).first() + def delete(self, employee_user_uid: UUID): + company = self.user.host or self.user.employee.parent_company + account = BusinessAccount.objects.filter(parent_company=company, user__uid=employee_user_uid).first() if not account: raise BusinessAccountNotFound @@ -28,7 +28,7 @@ from authentication.exceptions.business_host_exceptions import ( AlreadyHost, InviteeHasPlan, ) -from authentication.exceptions.business_account import AdminReinviteForbidden +from authentication.exceptions.business_account import AdminReinviteForbidden, BusinessAccountNotFound from authentication.exceptions.business_host_exceptions.not_allowed_ip import ( NotAllowedIP, ) @@ -322,8 +322,12 @@ class BusinessHostAPIView(APIView): def delete(self, request, *args, **kwargs): """Delete user company""" try: - BusinessHostService(self.request.user).delete(request) + serializer = DeleteBusinessAccountSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + BusinessHostService(self.request.user).delete(serializer.validated_data['uid']) return Response({'detail': _('Business account has been deleted')}, status=status.HTTP_200_OK) + except BusinessAccountNotFound as exc: + return Response({'detail': str(exc)}, status=status.HTTP_400_BAD_REQUEST) except Exception as exc: logger.exception(exc) return Response(