U
    Z)hwD                     @   sh   d dl mZ dd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd ZdS )    )
check_userc                 C   sx   | j dkrnt| jd dd}t| d| jd  }tj|sLt	| t
| jd || t|d |  t| dS )	NPOSTZsfr_file _z	sfr/user_id_user/zcore/sfr_upload.html)methodstrFILESreplaceprintsessionospathexistsmakedirshandle_uploaded_file
insert_sfrrenderrequestfilenamer    r   -/var/www/html/Focus/src/apps/reports/views.py
sfr_upload   s    

r   c                 C   sV   dd l }|| }|j}|d t|ddD ]\}}|jd||d q.||  dS )Nr      )start)rowcolumnvaluezLine added successfully.)openpyxlZload_workbookactiveZinsert_rows	enumeratecellsave)	file_pathnew_datar    workbook	worksheetcoldatar   r   r   add_line_to_excel   s    



r+   c                 C   s  dd l }dd l}ddlm} ddlm} ddddg}t| | || }dd	 tt	|j
D }||_
|d
ddg }i }	| D ]8\}
}t|d dkr|d |	t|d dd < q|	d d|	d< |dd  D ]}|dd  d|g }|jd | }| D ]\}
}d}t|d dkr|	d D ]`}|d7 }z0t||	d d|	d d}tj|	d d}|d }t|tjr|}tj|dd }n.t|tjr| }tj|dd }tj| tddd}tj| tddd}tj||}||  kr0|k rBn n|tdd n||_||_t|ddt|| |_|   W n |k
r   t!d  Y nX q4qqd S )!Nr   parser)IntegrityErrorZNewRowZDataZHerec                 S   s   g | ]}d t | qS Zcols_r	   .0ir   r   r   
<listcomp>6   s     zinsert_sfr.<locals>.<listcomp>   cols_3cols_4)Dateu
   Chaîne(s)zCible(s)KPIz(s) u   Chaînez,       r   ZHeureCibleFrancer:   sfr_channel_namecibleregion
indicateurr9   %d/%m/%Yz%H:%M:%S   days%z*This entry already exists in the database.)"repandasdateutilr-   	django.dbr.   r+   
read_excelrangelencolumnsheaditerrowsr	   r   stripsplitilocSfr_analyticsdatetimestrptime
isinstancetimestrftimecombinedate	timedeltadayminutefloatsubpurcentr$   r   )filerJ   pdr-   r.   r&   dfrQ   infodicindexr   r)   testnamelinechannelsfrr^   heureZ
heure_timemidnightZam_3Zcombined_heurer   r   r   r   *   s^    

"0r   c                 C   s  dd l }dd l}|| }dd tt|jD }||_|dddg }i }t|}| D ]h\}}	t	|	d dkst	|	d dkst	|	d d	kst	|	d d
kr^|	d |t	|	d 
dd < q^|dd  D ]4}
t|
 |dd  d|
g }|jd |
 }| D ]\}}	t	|	d dkrt||d	 |d |d d}t	|d dd }ddlm} tjt	|d}t	|	d d}t|d dkrt	t|d d d |d  }|tjdd7 }nt	t|d d |d  }||_||_|	|
 |_|  qqd S )Nr   c                 S   s   g | ]}d t | qS r0   r1   r2   r   r   r   r5      s     z%insert_sfr_backup.<locals>.<listcomp>   Zcols_1Zcols_2r9   u   Régionr>   zIndicateur : :r;      
   nanZ
Indicateurr@   r   r   r,   rE      rG   )numpyrK   rN   rO   rP   rQ   rR   listrS   r	   r   rT   r   rV   rW   rU   rL   r-   rX   rY   intr_   r`   ra   rd   r$   )re   nprf   rg   rQ   rh   ri   trj   r   r)   rk   rl   ro   r`   r-   r^   rp   r[   r   r   r   insert_sfr_backup   s<    
@" 
r}   c                    s   ddl m} | jdkrtjj| jdd}| jd}tjj||jd}t	jj
d|jd	d
dd}tjjdd}t|\}}t|jt|j   fdd|D }	tjj
| jd d}
t| d||	d|
dS tjj
| jd d}
t| dd|
iS d S )Nr   
connectionr   
channel_idpkzonenamer   
id_channel2M Maroc)rA   rC   r`   ra   rd   1c                    s   g | ]}t t|  qS r   rz   rb   r3   xnbr   r   r5     s     zpredict_sfr.<locals>.<listcomp>r   r   zcore/predict.htmlz
2021-09=19labelsr*   r`   channelsr   )rM   r   r   Channelsobjectsgetr   ChannelsZoner   rW   filterrC   values_listImpressionspredictrb   total_usersmarket_share_purcentr   r   )r   r   rn   r   rC   valrd   r   Zpredict_valr*   r   r   r   r   predict_sfr  s    
r   c                 C   sx   | j dkrnt| jd dd}t| d| jd  }tj|sLt	| t
| jd || t|d |  t| dS )	Nr   Zbouygues_filer   r   zbouygues/user_r   r   zcore/bouygues_upload.html)r   r	   r
   r   r   r   r   r   r   r   r   insert_bouyguesr   r   r   r   r   upload_bouygues"  s    

r   c              
   C   sx  dd l }ddlm}m} || }|jd }|dddd }|d}||d d}||d	 d}|j	||d
}dd t
t|jD }	|	|_|d d }
t|d dd  }|D ]}|jdd  D ]}|| d }t|| dd  }t
dt|D ]l}|dk r8t|||
|| || d d}|  n4||d	d }t|||
|| || d d}|  qqqd S )Nr   )rX   r_   r<   zau r;   zdu r   rE   r   )r   endc                 S   s   g | ]}d t | qS r0   r1   r2   r   r   r   r5   :  s     z#insert_bouygues.<locals>.<listcomp>r8   rt   r7   r=      i  )channel_namer`   rB   ra   rd   rG   )rK   rX   r_   rN   rQ   r   rT   rU   rY   
date_rangerO   rP   ry   Bouygues_analyticsr$   )re   rf   rX   r_   rg   r^   	start_dayend_dayZperioderQ   rB   ra   r`   r)   rn   r   r4   ZbouygueZday_2r   r   r   r   -  s0    




r   c                 C   s   t jjdd}| jdkr| jd}| jd}| jd}| jd}|dkrV||_|dkrht||_|dkrzt||_	|dkr||_
|  t| d	d
|iS )Nr   )idr   rl   usersrd   rC   r;   zcore/edit_impressions.htmlimp)r   r   r   r   r   	tool_namerz   r   rb   r   rC   r$   r   )r   r   rl   r   rd   rC   r   r   r   edit_impressionsN  s     


r   c                    s"  ddl m} | jdkrtjj| jdd}| jd}tjj||jd}| jd}t	j	
|d	}|d
}tjjd|jt|ddd}tjjdd}t|jt|j  dd |D }	 fdd|D }
tjj| jd d}t| d|	|
||dS tjj| jd d}t| dd|iS d S )Nr   r~   r   r   r   r   r   r`   z%m/%d/%Yz%Y-%m-%dr   rA   rC   r`   ra   rd   r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r5   n  s     zchart_test.<locals>.<listcomp>c                    s    g | ]}t t|d    qS r   r   r   r   r   r   r5   o  s     r   r   zcore/pie_chart.htmlr   r   )rM   r   r   r   r   r   r   r   r   rX   rY   r\   rW   r   rC   r	   r   r   rb   r   r   r   r   )r   r   rn   r   rC   r`   	dayformatr   rd   r   r*   r   r   r   r   
chart_testb  s"    

 r   c                 C   sn  ddl m } tjj| jd dd}dd |D }tj dd d	 }g }|D ]}|j	|krTt
|jd
d d}|d d |d  d |d  }|j	|j|d}tjj|jd}|j|d< t
|jd
d }	t
|jd
d d}
|
d d |
d  d }||d< |	|d< d|d< t
|jdkrd|d< d|d< ztjj|d |d d}W n0   tjjt
|jd
d |d d}Y nX t| |D ]J}|d |jkrtjjdd}t|jt|j t|j }||d < qndt
|jd!krd"|d< d|d < nBt
|jd#kr:d$|d< d|d < d%|d< nd&|d< d|d < d%|d< || qTt| d'd(|iS ))Nr   )rX   r   r   r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r5   }  s     zverifs.<locals>.<listcomp>z-airTimei,  r   -rt   r   )rn   rl   r`   r   rC   rs   z:00ra   Z	minute_ssz	#00800000color0001zAired Successfullystatusz	#2c2c8cb3r`   )r`   ra   rn   r   r   nb_wach0008zFailed, Adspot cut1005zNot aired yetz	#c7c7c7b3zFailed, Other Reason.zcore/verifs.htmlr*   )rX   r   r   r   r   r   Verifsallorder_bynetworknamer	   airTimerU   spotIdr   r   r   rC   airStatuscoderW   r   rA   r   rb   rd   r   r   appendr   )r   rX   r   linesr*   rm   dprC   Zmin_ssminra   Zdonneesr4   rd   r   r   r   r   verifsy  s\    

 
*

r   c           	         s   dd l }| jd}| jd}| jd}t| tjj|dj}tjj|dj}t	jj
|||ddd	}tjjd
d}t|jt|j  dd |D } fdd|D }||d}t|ddS )Nr   rn   rC   r`   )r   r   r   ra   rd   r   r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r5     s     zsfr_channel.<locals>.<listcomp>c                    s    g | ]}t t|d    qS r   r   r   r   r   r   r5     s     )r*   labelT)safe)rX   GETr   r   r   r   rA   r   rC   rW   r   r   r   rb   r   r   JsonResponse)	r   rX   rn   rC   r`   r   rd   r   r*   r   r   r   sfr_channel  s    
r   N)apps.core.utilsr   r   r+   r   r}   r   r   r   r   r   r   r   r   r   r   r   <module>   s    7+!<