a
    7(Lh'                     @   s  d dl mZ ddlmZmZ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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ZG dd dejZeddZej e ej e ej e ej e ej e ej e dS )    )admin   )UexistEntryUexistEntriesTargetsUexistFilesUexistTargetsUsersUexistFilesTargetsUexistEntriesMatched)path)TemplateResponse)	Paginator)OuterRefSubqueryCount)HttpResponse)defaultdict)Sum)timezoneNc                       s^   e Zd Z fddZdd Zdd Zdd Zd	d
 ZdddZdd Z	dd Z
dd Z  ZS )CustomAdminSitec              
      s   t   }td| | jddtd| | jddtd| | jddtd| | jd	dtd
| | jddtd| | jddg}|| S )Nzcustom-page/zcustom-pagenamezdownload-page/zdownload-page-allzdownload-page/<int:file_id>/zdownload-pagezstats/Zstatszleads/z
leads-pagezdatewise-leads/zdatewise-leads-page)	superget_urlsr   
admin_viewcustom_pagedownload_page
stats_page
leads_pagedatewise_leads_page)selfurlsZcustom_urls	__class__ I/var/www/html/hope-faith-dev/hope-faith/src/hope_faith_harvester/admin.pyr      s    
zCustomAdminSite.get_urlsc                 C   s   t   }|jdp |d}tjjt	dd
dd d }tjj|djt|d}|
d	jtd
dd}t| |||d|d}t|d|S )Ndatez%Y-%m-%dmatched_target	target_idr   r   Zupdated_date__datetarget_namer,   entry_idtotalz-total)selected_datetodaysummary_datazadmin/datewise-leads-page.html)r   nowr&   GETgetstrftimer   objectsfilterr   valuesr
   annotater   r   order_bydicteach_contextr   )r    requestr1   r0   target_subqueryZannotated_leadsr2   contextr$   r$   r%   r      s4    
z#CustomAdminSite.datewise_leads_pagec                 C   s   |   }|jd}|jd}tjjtdd dd d }tjjt	|d}|rb|j|d}|rr|j|d}|
d	}| d
ddddd}t|d}|jd}||}	t| |||	|	d}
t|d|
S )Nsourcer&   r'   r(   r   r   r+   r*   z-updated_date	firstnamelastnameemailphoner,   updated_date2   page)namescustom_datapage_objzadmin/leads_page.html)r9   r4   r5   r   r7   r8   r   r
   r:   r   r;   r   get_pager<   r=   r   )r    r>   target_namesselected_sourcer0   r?   files	paginatorpage_numberrK   r@   r$   r$   r%   r   9   s.     


zCustomAdminSite.leads_pagec                 C   s   t t}tjddd}t t}|D ]B}|d }|d }|ddpFd}|| | ||  |7  < q$t| }	dd t	jj
|	dddD }
g }| D ]`\}}i }tjj
|d	jtd
dd
 pd}||d< |||  |d< |
|d|d< || qt| ||d}t|d|S )Nr)   file_id	processedr   c                 S   s   i | ]}|d  |d qS )r)   r   r$   ).0tr$   r$   r%   
<dictcomp>m   s   z.CustomAdminSite.stats_page.<locals>.<dictcomp>)Ztarget_id__inr   )Zfile_id__inr/   r.   file	remainingUnknown)	file_datazadmin/stats_page.html)r   listr	   r7   r9   intr5   appendkeysr   r8   itemsr   	aggregater   r<   r=   r   )r    r>   Ztarget_to_filestargetsZprocessed_by_targetrowr)   rR   rS   
target_idsrM   rZ   Zfile_idsresultZtotal_processedr@   r$   r$   r%   r   ]   s@    zCustomAdminSite.stats_pagec                 C   s<   |   }|  }tj }t| ||||d}t|d|S )N)rI   rZ   Ztotal_match_countzadmin/custom_page.html)r9   custom_blockr
   r7   countr<   r=   r   )r    r>   rM   rJ   Ztotal_matchr@   r$   r$   r%   r      s    
zCustomAdminSite.custom_pageNc              	   C   sF  |   }|jd}tjjtdd dd d }|d u rPtjjt	|d}n"t
jj|djdd	jt	|d}|r|j|d}|jd
dkrtdd}d|d< t|}|g d |D ]&}	||	j|	j|	j|	j|	j|	jg q|S | ddddddd}t|d}
|jd}|
|}t| |||||d}t|d|S )NrA   r'   r(   r   r   r+   rR   TZmatched_target__isnullZdownloadcsvztext/csv)content_typez"attachment; filename="entries.csv"zContent-Disposition)Z	FIRSTNAMEZLASTNAMEZEMAILZPHONEZSOURCESZUPDATED_DATErB   rC   rD   rE   r,   rF   rG   rH   )rI   rJ   rK   rR   zadmin/download_page.html)r9   r4   r5   r   r7   r8   r   r
   r:   r   r   excluder   ri   writerwriterowrB   rC   rD   rE   r,   rF   r   rL   r<   r=   r   )r    r>   rR   rM   rN   r?   rO   responserl   rW   rP   rQ   rK   r@   r$   r$   r%   r      sN     

	

zCustomAdminSite.download_pagec                 C   s.   t tjjddjddd }t|d |S )Nr   )activer   T)flat
all_values)r[   r   r7   r8   values_listdistinctprint)r    rq   r$   r$   r%   r9      s     
zCustomAdminSite.valuesc              	   C   s@   t jjdd}g }|D ]$}||j|j|j|j|jd q|S )NTrh   )
first_name	last_namerD   rE   sources)	r   r7   rk   r]   rB   rC   rD   rE   r'   )r    rO   file_blocksrW   r$   r$   r%   download_page_block   s    
z#CustomAdminSite.download_page_blockc           	      C   s   t j d}g }|D ]}tjj|jd}g }|D ]`}z.tjj|j	dj
}tjj|j|j	d }W n tjy~   d}Y n0 |||j|d q4||j|j|j|j|j||jd q|S )Nz-file_idrg   r(   )rR   r'   rY   )r   rS   matched_count)rR   	file_namereadyloadedr/   ra   Zuploaded_date)r   r7   allr;   r	   r8   rR   r   r5   r)   r   r
   rf   DoesNotExistr]   rS   rW   r|   r}   r/   r&   )	r    rO   rx   rW   Zfile_targetsZtarget_dataZftr,   rz   r$   r$   r%   re      s8    



zCustomAdminSite.custom_block)N)__name__
__module____qualname__r   r   r   r   r   r   r9   ry   re   __classcell__r$   r$   r"   r%   r      s   $)
;r   Zcustom_adminr   )!Zdjango.contribr   modelsr   r   r   r   r   r	   r
   django.urlsr   django.template.responser   django.core.paginatorr   django.db.modelsr   r   r   django.httpr   collectionsr   r   django.utilsr   ri   	AdminSiter   Zcustom_admin_sitesiteregisterr$   r$   r$   r%   <module>   s(   $  
