o
    Ñâmiä  ã                   @   sJ   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	Z	ddd„Z
dS )é    N)ÚFontÚPatternFillÚ	Alignment)Úget_column_letter)ÚHttpResponsec                 C   sè  t  ¡ }|j}tdd}t| dƒD ]\}	}
|jd|	d}|
|_||_qt|dƒD ]^\}}t| ¡ dƒD ]R\}	}|j||	d}||_|r…t	|t
ƒr…t|	ƒt|ƒ }| |¡}|r…d|v retdi |d ¤Ž|_d|v rstdi |d ¤Ž|_d|v r||d |_d	|v r…|d	 |_q3q(|rât| dƒD ]S\}	}
t|	ƒ}||v rá|| }|| D ]>}d|v r²tdi |d ¤Ž|_d|v rÀtdi |d ¤Ž|_d|v rÉ|d |_d	|v rÒ|d	 |_d
|v ràtdi |d
 ¤Ž|_q¢qŽ|r8t|dƒD ]M\}}t|ƒ}||v r7|| }tdt| ƒd ƒD ]2}	|j||	d}d|v rtdi |d ¤Ž|_d|v r+tdi |d ¤Ž|_d|v r5|d |_qqêt| dƒD ]\}	}
t j |	¡}tdd„ || D ƒƒ}|d |j| _q=|d |_tdd}d |¡|d< | |¡ |S )NT)Úboldé   )ÚrowÚcolumné   ÚfontÚfillÚnumber_formatÚdate_formatÚ	alignmentc                 s   s    | ]
}t t|jƒƒV  qd S )N)ÚlenÚstrÚvalue)Ú.0Úcell© r   úF/var/www/html/kuke-dev/django-kuke/core/utils/convert_json_to_excel.pyÚ	<genexpr>M   s   € z&generate_excel_file.<locals>.<genexpr>ÚA2zAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet)Úcontent_typezattachment; filename="{}.xlsx"zContent-Dispositionr   )ÚopenpyxlZWorkbookÚactiver   Ú	enumerater   r   r   ÚvaluesÚ
isinstanceÚdictr   r   Úgetr   r   r   r   r   Úranger   ÚutilsÚmaxZcolumn_dimensionsÚwidthZfreeze_panesr   ÚformatÚsave)Úcolumn_namesÚdataÚ	file_nameÚstyleZstyle_columnsZ
style_rowsÚwbÚwsZ	bold_fontZcol_numÚcolumn_namer   Zrow_numÚrow_dataZ
cell_valueZcell_addressZ
cell_styleZcolumn_letterZ	col_styleZ	row_indexZ	row_styleZmax_lenÚresponser   r   r   Úgenerate_excel_file   s‚   



€ð

€




€


r1   )NNN)r   Zopenpyxl.stylesr   r   r   Zopenpyxl.utilsr   Údjango.httpr   Úior1   r   r   r   r   Ú<module>   s    