
    siX                     0   d Z ddl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mZmZmZ  ej                   e      Zej&                  Zd Zej*                  j,                  Zd	 Zeej*                  _         eed
e        G d dej2                        Zy)z
horilla_company_manager.py
    N)	CoroutineSequence)models)QuerySet)_thread_locals)post_bulk_updatepost_model_cleanpre_bulk_updatepre_model_cleanc                     t        t        dd      }|| _        t        j                  | j
                  | ||       t        | g|i |}t        j                  | j
                  | ||       |S )z
    Bulk Update
    requestN)senderquerysetargskwargs)getattrr   r   r
   sendmodeldjango_filter_updater   )selfr   r   r   results        @/var/www/python-projects/worksol/base/horilla_company_manager.pyupdater      sb    
 ni6GDL

TVT!$888FdfUM    c                     t        j                  d| j                  j                  | d| t	        |       }t        j                  d| j                  j                  | d| |S )z@
    Method to override django clean and trigger to signals
    )r   instance )r   r   _metar   django_model_cleanr	   )r   r   r   r   s       r   cleanr    )   sW     J

 0 04J6J%FK!1!1DKFKMr   r   c                   H     e Zd ZdZd fd	Z fdZd Z fdZ fdZ xZ	S )HorillaCompanyManagerz
    HorillaCompanyManager
    c                 D    t        |   |i | || _        ddg| _        y )Nemployee_idrequested_employee_id)super__init__related_company_fieldcheck_fields)r   r(   r   r   	__class__s       r   r'   zHorillaCompanyManager.__init__=   s-    $)&)%:"#
r   c                    t         |          }t        t        dd      }d}||j                  j                  d      }	 |dk7  r'|r%|j                  | j                  j                        n|}	 |j                         |j                         j                         k7  }|r|j                         }|S # t        $ r}t        j                  |       Y d}~gd}~ww xY w#  Y |S xY w)z%
        get_queryset method
        r   Nselected_companyall)r&   get_querysetr   r   sessiongetfilterr   company_filter	Exceptionloggererrorcountdistinct)r   r   r   r,   ehas_duplicatesr*   s         r   r.   z"HorillaCompanyManager.get_querysetE   s    
 7').)T:&223EF	 $u,1A 

 9 9: 	%^^-1B1B1D1J1J1LLN#,,.   	LLOO		s%   .B3 0AC 3	C<CCC#c                 &   g }	 | j                         }|j                         r	 |j                  j                  j                  }|dk(  r1t        t        dd      }t        |dd      s|j                  d      }n|dk(  r|S |j                  j                  j                  D ]Y  }t        |t        j                        s|j                  | j                  v s7|j                   ddi} |j                  d	i |}[ |S 	 |S #  Y |S xY w#  Y |S xY w)
z+
        Override the all() method
        employeer   Nis_filteringT)	is_activeoffboardingemployee__is_activer   )r.   existsr   r   
model_namer   r   r1   fields
isinstancer   
ForeignKeynamer)   )r   r   rA   r   fieldrelated_model_is_active_filters         r   r-   zHorillaCompanyManager.all_   s&    	((*H !)!5!5!@!@J!Z/").)T"J&wE'/'FH#'<<'%-^^%9%9%@%@ &E)%1B1BC#(::1B1B#B+0::,k(BDF&$B 0?x 0&*H0&H& / !. 	 	s5    D AD =D  D %D DD D Dc                 H    t        |   |i |}t        t        d|       |S )Nqueryset_filter)r&   r1   setattrr   )r   r   r   r   r*   s       r   r1   zHorillaCompanyManager.filter   s(    7>4262 18<r   c                 $    t         |          }|S )zS
        Fetch all datas from a model without applying any company filter.
        )r&   r.   )r   r   r*   s     r   entirezHorillaCompanyManager.entire   s     7')r   )N)
__name__
__module____qualname____doc__r'   r.   r-   r1   rL   __classcell__)r*   s   @r   r"   r"   8   s'    
4@
 r   r"   )rP   loggingtypingr   r   	django.dbr   django.db.models.queryr   horilla.horilla_middlewaresr   horilla.signalsr   r	   r
   r   	getLoggerrM   r4   r   r   Modelr    r   rJ   Managerr"   r   r   r   <module>r[      s     &  + 6  
		8	$  \\''    (F #QFNN Qr   