
    vgj	                     T    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 Z
d Zd
d	Zy)    )Counter)Q)	QueryDict)PageNumberPagination)EmployeeWorkInformationc                     | j                  d      }|j                  }t        |d   d      }|j                  dd        |dz   |j	                         z   S )N?   T)mutablegroupby_field)splitpathr   pop	urlencode)current_urlrequest	url_partsbase_urlquery_paramss        8/var/www/horilla/horilla_api/api_methods/base/methods.pyget_filter_urlr   
   sS    !!#&I||HYq\48L_d+c>L22444    c                    |j                        }t        fd|D              }g }|D ]  }|j                  |d||   i        g }t        ||       }|D ]  }	|	d   }
j	                  d      }|	   s |j
                  di |	   ij                         }|D ]  }t        ||      } |j                  |
t        |      | d d|	    d        t               }|j                  ||       }|j                  |      S )Nc              3   (   K   | ]	  }|     y wN ).0item
field_names     r   	<genexpr>z#groupby_queryset.<locals>.<genexpr>   s     G$T*%Gs   count__&=)r!   name
filter_urlr   )valuesr   appendr   r   filterfirstgetattrstrr   paginate_querysetget_paginated_response)r   urlr   querysetqueryset_with_countscountsresult_listicounts_and_objectsr   r!   related_fieldsrelated_objfield
paginationpages     `             r   groupby_querysetr;      s?   #??:6G2FGGFK @J7F1I>?@ 
g
&C W#))$/
)(//KZj9I,JKQQSK' :%k59:%%",%(E:,aZ8H7I"J &'J''(:GDD,,T22r   Nc                 x   | j                  |      r|S | j                  }t        j                  j	                  |      j                         }|rZ|r(|j	                  t        |      t        |      z        S t        |      }t        |      }||z  }|j	                  |      }	|	S |j	                  |      S )N)reporting_manager_id)employee_id)5employee_id__employee_work_info__reporting_manager_id)has_permemployee_getr   objectsr)   existsr   )
userpermr0   user_objemployee
is_managermanager_filtersubordinates_filtermerged_filtermerged_querysets
             r   permission_based_querysetrM   0   s    }}T  H(0077% 8 fh  ??h'(ST  x0BJ
 ')<<"//-8??x?00r   r   )collectionsr   django.db.modelsr   django.httpr   rest_framework.paginationr   employee.modelsr   r   r;   rM   r   r   r   <module>rS      s#      ! : 353<1r   