
    1b(i	                         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 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)get_user_model)genericsstatus)AllowAnyCompanyPermission)UserCompanyRole)Company)CompanyUserSerializer)r   )Prefetch)LimitOffsetPaginationc                   *    e Zd ZdZeZegZeZ	d Z
d Zy)AllCompaniesUsersViewz2List all users from all companies (superuser only)c                     t        d      gS )N
view_users)r   )selfs    L/var/www/html/dp2/backend_v2.1/server/apps/core/views/all_companies_users.pyget_permissionsz%AllCompaniesUsersView.get_permissions   s    !,/00    c                 |   |j                   j                  st        ddit        j                        S |j
                  j                  d      }|rI|j                  d      D cg c]  }t        |       }}t        j                  j                  |d      }n t        j                  j                  d      }g }|D ]  }t        d	t        j                  j                  d
d      j                  d      d      }	|j                  j                  d      j!                  |	      j#                         }
| j%                  |
dd|i      }|j'                  |j(                  |j*                  d|j,                  |
j/                         d        t        |t1        |      t3        d |D              d      S c c}w )z+Handle the response for all companies userserrorz(Only superusers can access this endpoint)r   company_ids,T)id__in	is_active)r   company_rolesrolecompany_cached_roles)querysetto_attrprofile)manycontext)idname)r   userstotal_usersc              3   &   K   | ]	  }|d      yw)r(   N ).0r   s     r   	<genexpr>z-AllCompaniesUsersView.list.<locals>.<genexpr>D   s     LV'w}5Vs   )	companiestotal_companiesr(   )useris_superuserr   r   HTTP_403_FORBIDDENGETgetsplitintr
   objectsfilterr   r	   select_relatedr'   prefetch_relatedallget_serializerappendr%   r&   datacountlensum)r   requestargskwargsr   cr-   resultr   role_prefetchr'   
serializers               r   listzAllCompaniesUsersView.list   s   ||((DE00 
 kkoom4+6+<+<S+AB+Aa3q6+AKB..kT.RI...>I G$(00	2$''M MM00;LL][__aE,,UyRYFZ,[JMM!**#LL $${{}  !, "6{LVLL
  	9 Cs   $F9N)__name__
__module____qualname____doc__r   serializer_classr   permission_classesr   pagination_classr   rH   r*   r   r   r   r      s$    <,+,,1*r   r   N)rest_framework.responser   django.contrib.authr   rest_frameworkr   r   apps.permissions.permissionsr   r   apps.permissions.modelsr	   apps.companies.modelsr
   %apps.core.serializers.companyuserlistr   django.db.modelsr   utils.paginations.paginationr   UserListAPIViewr   r*   r   r   <module>r[      s?    , . + D 3 ) G # % > 3H00 3r   