
    1b(iP	                         d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ  e       Z G d	 d
ej"                        Zy)    )Response)IsAuthenticated)get_user_model)genericsstatus)NotFoundValidationError)UserCompanyRole)UserCompanyWithRoleSerializer)r   c                   (    e Zd ZdZegZd Zd Zd Zy)SingleUserCompaniesViewzList all companies a user belongs to
    
    Usage:
    - GET /api/core/user-companies/?user_id=2 - Returns companies for user with ID 2
    
    Required Parameters:
    - user_id: ID of the user to get companies for
    c                    | j                   }|j                  j                  d      }|st        d      	 t        j
                  j                  |d      }t        t        j
                  j                  |d      j                  dd	            }t        |d
|       |S # t        j                  $ r t        d| d      w xY w)z)Get the target user based on query paramsuser_idzuser_id parameter is requiredT)id	is_activezUser with ID z
 not found)userr   rolecompany_cached_roles)requestquery_paramsgetr	   UserobjectsDoesNotExistr   listr
   filterselect_relatedsetattr)selfr   r   target_userucrss        N/var/www/html/dp2/backend_v2.1/server/apps/core/views/single_user_companies.pyget_target_userz'SingleUserCompaniesView.get_target_user   s    ,,&&**95!"ABB	@,,**g*FK ##VV5^FI.
 	_d3    	@]7):>??	@s   !B   #Cc                 t    | j                         }|j                  j                         j                  d      S )z,Get all companies the target user belongs tousers__profile)r$   	companiesr   prefetch_related)r    r   s     r#   get_querysetz$SingleUserCompaniesView.get_queryset1   s/    ##%~~$$&778HII    c                    	 | j                         }| j                         }t        |dd|i      }t        |j                        S # t        t        f$ r0}t        dt	        |      it
        j                        cY d}~S d}~ww xY w)z*Return list of companies with user contextdetail)r   NTr   )manycontext)
r$   r	   r   r   strr   HTTP_400_BAD_REQUESTr)   r   data)r    r   argskwargsr!   excqueryset
serializers           r#   r   zSingleUserCompaniesView.list7   s    	3..0K $$&2[)

 
((  * 	3#c(113 3	3s   A B%B;BBN)	__name__
__module____qualname____doc__r   permission_classesr$   r)   r    r*   r#   r   r      s"     **.J)r*   r   N)rest_framework.responser   rest_framework.permissionsr   django.contrib.authr   rest_frameworkr   r   rest_framework.exceptionsr   r	   apps.permissions.modelsr
   %apps.core.serializers.companyuserlistr   r   ListAPIViewr   r<   r*   r#   <module>rE      s9    , 6 . + ? 3 O # 9)h22 9)r*   