
    1b(i<                         d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZ  e       Z G d dej4                        Zy)    )get_user_model)genericsfiltersCompanyPermission)NotFound)ConcatCoalesce)UserCompanyRole)Company)CompanyUserSerializer)r   )LimitOffsetPagination)FValuePrefetchCountc                        e Zd ZdZeZeZej                  ej                  gZg dZdgZg dZd Zd Z fdZd Z xZS )	CompanyUsersViewz$List all users in a specific company)	full_nameemailprofile__phone_numbercompanies_countz-created_at)r   r   r   c                     t        d      gS )N
view_usersr   )selfs    F/var/www/html/dp2/backend_v2.1/server/apps/core/views/company_users.pyget_permissionsz CompanyUsersView.get_permissions!   s    !,/00    c                 R   | j                   j                  }| j                   j                  j                  d      }|xs t	        |j
                  dd      }|st        d      	 t        j                  j                  |      }|S # t        j                  $ r t        d      w xY w)z.Get company based on user type and parameters.
company_ididNz5No company id provided or user has no active company.)r!   zCompany not found.)
requestuserquery_paramsgetgetattractive_companyr   r   objectsDoesNotExist)r   r#   r    target_company_idcompanys        r   get_companyzCompanyUsersView.get_company$   s    ||  \\..22<@
&R'$2E2EtT*R RSS	1oo))->)?G  ## 	1/00	1s   % B B&c                 r    t         |          }	 | j                         }||d<   |S # t        $ r d }Y w xY w)Nr+   )superget_serializer_contextr,   r   )r   contextr+   	__class__s      r   r/   z'CompanyUsersView.get_serializer_context5   sJ    '02	&&(G %	  	G	s   ( 66c                    | j                   j                  }| j                   j                  j                  d      }t	        |dd      dk(  r/|-t
        j                  j                  d      j                         S | j                         }t        dt        j                  j                  dd      j                  d	
      d      }|j                  j                  t        t!        t#        d      t%        d            t%        d      t!        t#        d      t%        d                  t'        d            j                  d      j)                  |      }|r|j*                  r|j                  |      }|S )z?Get users from the specified company - assumes company is validr    	user_typeNsuper_adminprofilecompany_rolesroler+   T)	is_active_cached_roles)querysetto_attrprofile__first_name  profile__last_name	companies)r   r   )r@   )r"   r#   r$   r%   r&   Userr(   select_relatedallr,   r   r   filterusersannotater	   r
   r   r   r   prefetch_relatedr!   )r   r#   r    r+   role_prefetchr:   s         r   get_querysetzCompanyUsersView.get_queryset>   s:   ||  \\..22<@
4d+}<AS<<..y9==??""$ $,,^FI.VdV##
 ==))0159=c
/0%)<
 "+. * 
 .



 	 wzz9Hr   )__name__
__module____qualname____doc__r   serializer_classr   pagination_classr   OrderingFilterSearchFilterfilter_backendsordering_fieldsorderingsearch_fieldsr   r,   r/   rI   __classcell__)r1   s   @r   r   r      sO    .,,--w/C/CDOXOHM1""r   r   N)django.contrib.authr   rest_frameworkr   r   apps.permissions.permissionsr   rest_framework.exceptionsr   django.db.models.functionsr	   r
   apps.permissions.modelsr   apps.companies.modelsr   %apps.core.serializers.companyuserlistr   utils.paginationsr   django.db.modelsr   r   r   r   rA   ListAPIViewr    r   r   <module>rc      sG    . , : . 7 3 ) G # 3 6 6 Nx++ Nr   