a
     ld                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlZd d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& G dd dej'Z(dS )    N)datetime)	strtobool)BytesIOStringIO)IterableListOrderedDict)settings)QCount)EmailMultiAlternatives)
celery_app)DEFAULT_FROM_EMAILenv)CompanyExportExcelSerializer)Company)domain_paramfirst_letter_paramhas_reviews_param
name_paramplatform_paramrating_star_paramis_verified_paramc                       s6   e Zd Zd Zdd fddZdd Zdd Z  ZS )	ExportUserIntoExcelTaskN)returnc                    s"   t  j|i | tj | _d S )N)super__init__r   objectsallqueryset)selfargskwargs	__class__ ?/var/www/html/Ranjet/backend/verify_trusted/companies/export.pyr      s    z ExportUserIntoExcelTask.__init__c                 C   s   g }g }|D ]p}|d   |d< |d dd |d< |d dd |d< |d |vrd|d v r|| ||d  q|S )Nemail r   ,@)stripsplitappend)r    dataZexisted_emailresultdr%   r%   r&   validate_data_export#   s    
z,ExportUserIntoExcelTask.validate_data_exportc           "      C   s  t d|  | j}|tjd }|r2|j|d}|tjd }|rht|}t d|  |j|d}|t	jd }|r|j|d}|t
jd }|r|j|dd}|tjd }|r|d d }	t|	 d	t|	 d	B }
tjd
ddddd|
}|tjd }|rTtt|}|du r:|jdd}n|tddtddB }|tjd }|r|dkr|jdd}n|jdd}|jdd}|}t|ddj}| |}g d}t d|  t }dtt d}t |}d}|dkrt!t"#|d }t$j%|dt$j&d }t'd|D ]}|d d }|d d= |d!|  d" }t }t(j)|d#did$}|* }t+|D ]\}}|,d|| q~t+|dd%D ]@\}}|-|d|d
 |d |d d&|d  |d |d g q|.  |j/||0 d' q,|.  d(|1d)d*}|2d t3j4d+t5j6t5j7d,}|8|t5j9| t5j:r^d-d.g}nt5j;}d/t5j<|f } t=d0d1|  t>|d2gd3}!|!?  d S )4Nz+++++++++++++++++++++++)search_vectorz+++++++++++++++++++++++kkkkkkk)is_verified)urlr)   )review_sources__platform_id__in   )first_letteridnamer4   r'   url_displayaddressTr   )reviews_count__gt)reviews_count)Zreviews_count_isnull   )average_rating__lt)average_rating__gteF)email__isnull)many)IdzCompany NameEmailzProfile URLDomainAddresszCompany Changelogs {}z%Y-%m-%d %H-%M-%SiP  w)modecompressionz_%sz.xlsxstrings_to_urls)options)startz&https://www.verifytrusted.com/reviews/)r.   zexport_company/{}.zipr(   _s3)Zaws_access_key_idZaws_secret_access_keyzadmin@verifytrusted.comzdoanthanh58863@gmail.comzhttps://%s/%szExport companyz?Export company successful 
 Click link to download the file: %sz#verifytrusted.support@sphinxjsc.com)bcc)@printr   getr   r9   filterr   jsonloadsr   r   r,   r   r
   lowerupperr   r   onlyr   boolr   r   r   r.   r1   r   formatstrr   todaystrftimelenintmathceilzipfileZipFileZIP_DEFLATEDrange
xlsxwriterWorkbookadd_worksheet	enumeratewrite	write_rowclosewritestrgetvaluereplaceseekboto3clientr	   AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYZupload_fileobjAWS_STORAGE_BUCKET_NAMEIS_PRODUCTIONDEFAULT_SEND_TO_EMAILAWS_S3_CUSTOM_DOMAINr   r   send)"r    query_paramsr   name_filterstatusr3   Zdomain_filterplatform_filterfirst_letter_filterr7   first_letter_queryhas_reviews_filterrating_star_filtercompanyr.   headerszip_filefilenameZ
record_lenZeach_recordzfiZnew_datanew_filenameoutputworkbook	worksheetfieldrzip_pathrq   send_to_emailZlink_to_downloadmsgr%   r%   r&   export1   s    
	








zExportUserIntoExcelTask.export)__name__
__module____qualname__r9   r   r1   r   __classcell__r%   r%   r#   r&   r      s   r   ))r_   ra   r   distutils.utilr   ior   r   typingr   r   r   rp   re   django.confr	   django.db.modelsr
   r   django.core.mailr   rS   configr   config.settings.baser   r   (verify_trusted.companies.api.serializersr   verify_trusted.companies.modelsr   verify_trusted.users.api.paramsr   r   r   r   r   r   r   Taskr   r%   r%   r%   r&   <module>   s"   $