o
    mi                     @   s   d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ G dd	 d	ejZG d
d deZdS )    )BaseUserManager)models)FQuerySetOuterRefCountSubquery)Coalesce)Vendor)
Consultant)
Contractorc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ProjectQuerySetc                 C   s   | j tddS )NZclient__name)Zclient_name)annotater   self r   K/var/www/html/kuke-dev/django-kuke/apps/project/managers/project_manager.pyannotate_client_name      z$ProjectQuerySet.annotate_client_namec                 C   @   t jjtdddjtddd}| jtt|ddS )Npk)project_vendorsr   id)total_vendorsr   r   )	r
   objectsfilterr   valuesr   r   r	   r   )r   Zvendors_subqueryr   r   r   annotate_vendors_count      z&ProjectQuerySet.annotate_vendors_countc                 C   r   )Nr   )project_consultantsr   r   )total_consultantsr    r   )	r   r   r   r   r   r   r   r	   r   )r   Zconsultants_subqueryr   r   r   annotate_consultants_count   r   z*ProjectQuerySet.annotate_consultants_countc                 C   r   )Nr   )project_contractorsr"   r   )total_contractorsr#   r   )	r   r   r   r   r   r   r   r	   r   )r   Zcontractors_subqueryr   r   r   annotate_contractors_count   r   z*ProjectQuerySet.annotate_contractors_countN)__name__
__module____qualname__r   r   r!   r$   r   r   r   r   r      s
    r   c                   @   s   e Zd Zdd Zdd ZdS )ProjectManagerc                 C   s   t | j| jdjddS )NusingT)deleted_at__isnull)r   model_dbr   r   r   r   r   get_queryset"   s   zProjectManager.get_querysetc                 C   s   t | j| jdS )Nr)   )r   r,   r-   r   r   r   r   with_trashed%   r   zProjectManager.with_trashedN)r%   r&   r'   r.   r/   r   r   r   r   r(   !   s    r(   N)django.contrib.auth.modelsr   	django.dbr   django.db.modelsr   r   r   r   r   django.db.models.functionsr	   apps.vendor.modelsr
   apps.consultant.modelsr   apps.contractor.modelsr   r   r(   r   r   r   r   <module>   s    