o
    ›¨Êh¡#  ã                   @   sî   d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
Zd dlmZmZ g d¢g d¢gZG d	d
„ d
e	jƒ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!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Z dS ))é    )ÚrenderÚredirect)ÚHttpResponseBadRequestÚHttpResponse)ÚJsonResponse)ÚformsN)ÚQuestionÚChoice)é   é   é   )é   é   é   c                   @   s   e Zd Ze ¡ ZdS )ÚUploadFileFormN)Ú__name__Ú
__module__Ú__qualname__r   Ú	FileFieldÚfile© r   r   ú=/var/www/html/env/lib/python3.10/site-packages/polls/views.pyr      s    r   c                 C   sZ   | j dkr t| j| jƒ}| ¡ r| jd }tj| ¡ ddd�S ntƒ }t| d|ddd	œƒS )
NÚPOSTr   ÚcsvÚdownload©Ú	file_nameúupload_form.htmlz&Excel file upload and download examplez9Please choose any excel file from your cloned repository:©ÚformÚtitleÚheader)	Úmethodr   r   ÚFILESÚis_validÚexcelÚmake_responseÚ	get_sheetr   )Úrequestr   Ú
filehandler   r   r   Úupload   s"   

ÿþýýr*   c                 C   s   t j t¡}t  ||¡S )N)r%   ÚpeÚSheetÚdatar&   )r(   Ú	file_typeÚsheetr   r   r   r   '   s   r   c                 C   s   t jt||d�S )Nr   )r%   Úmake_response_from_arrayr-   )r(   r.   r   r   r   r   Údownload_as_attachment,   s   ÿr1   c                 C   sz   |dkrt jtddd�S |dkrt jttgddd�S |dkr9tjjdd�}tjj|d�}g d	¢}t j||ddd�S t	d
ƒS )Nr/   Úxlsr   ÚbookÚcustomÚide©Úslug©Úquestion)Úchoice_textÚidÚvoteszNBad request. please put one of these in your url suffix: sheet, book or custom)
r%   Úmake_response_from_a_tabler   Úmake_response_from_tablesr	   ÚobjectsÚgetÚfilterÚmake_response_from_query_setsr   )r(   Úatyper9   Ú
query_setsÚcolumn_namesr   r   r   Úexport_data1   s*   ÿ
ÿüÿrF   c                 C   óz   | j dkr0t| j| jƒ}dd„ }| ¡ r-| jd jttgd |gg d¢g d¢gd� tdƒS t	ƒ S tƒ }t
| d	|d
ddœƒS )Nr   c                 S   ó"   t jj| d d�d }|| d< | S ©Nr   r6   ©r   r?   rA   ©ÚrowÚqr   r   r   Úchoice_funcM   ó   z import_data.<locals>.choice_funcr   ©Úquestion_textÚpub_dater7   ©r9   r:   r<   ©ÚmodelsÚinitializersÚmapdictsÚhandson_viewr   ú'Import excel data into database exampleúPlease upload sample-data.xls:r   ©r"   r   r   r#   r$   Úsave_book_to_databaser   r	   r   r   r   ©r(   r   rN   r   r   r   Úimport_dataH   ó0   
ÿ
þýýýr^   c                 C   s^   | j dkr$t| j| jƒ}| ¡ r!| jd jdtg d¢d� tdƒS tƒ S tƒ }t	| dd|iƒS )	Nr   r   r   rP   )Úname_columns_by_rowÚmodelÚmapdictÚOKr   r   )
r"   r   r   r#   r$   Úsave_to_databaser   r   r   r   ©r(   r   r   r   r   Úimport_sheeth   s$   
ÿ
ýýrf   c                 C   s6   t | j| jƒ}| ¡ r| jd }t | ¡ |¡S tƒ S )Nr   )r   r   r#   r$   r%   r&   r'   r   )r(   r.   r   r)   r   r   r   Úexchange|   s
   
rg   c                 C   sœ   t | j| jƒ}| ¡ rK| jd }|dkrtd| ¡ iƒS |dkr&t| ¡ ƒS |dkr2td| ¡ iƒS |dkr>t| ¡  	¡ ƒS |dkrHt| 
¡ ƒS tƒ S tƒ S )Nr   ÚarrayÚresultÚdictÚrecordsr3   Ú	book_dict)r   r   r#   r$   r   Ú	get_arrayÚget_dictÚget_recordsÚget_bookÚto_dictÚget_book_dictr   )r(   Údata_struct_typer   r)   r   r   r   Úparse…   s   
rt   c                 C   s   t  ttgd¡S )Núhandsontable.html)r%   r>   r   r	   )r(   r   r   r   Úhandson_table™   s   ÿrv   c                 C   s4   t jjttgddd�}| d¡ t| dd| ¡ iƒS )z-
    Renders two table in a handsontable
    ru   T)rU   Údest_file_typeÚ
dest_embedr   úcustom-handson-table.htmlÚhandsontable_content)r%   r+   Úsave_book_asr   r	   Úseekr   Úread©r(   Úcontentr   r   r   Úembed_handson_tablež   s   ý
ÿýr€   c                 C   s0   t jjtddd�}| d¡ t| dd| ¡ iƒS )z-
    Renders one table in a handsontable
    ru   T)ra   rw   rx   r   ry   rz   )r%   r+   Úsave_asr   r|   r   r}   r~   r   r   r   Ú'embed_handson_table_from_a_single_table¯   s   ý
ÿýr‚   c                 C   sŒ   t jjdd�}tjj|d�}ddg}tjj||d�}| d¡ |j	 
dt¡ tjj|j	d |j	d gdd	|jd
dd�}t| dt| ¡ d�ƒS )Nr5   r6   r8   r:   r<   )rD   rE   r   ÚsvgÚpieiX  i�  )rh   rw   Údest_chart_typeÚ
dest_titleÚ
dest_widthÚdest_heightzsurvey_result.html)rƒ   )r   r?   r@   r	   rA   r%   r+   r'   r`   ÚcolumnÚformatÚintr�   rQ   r   rj   r}   )r(   r9   rD   rE   r/   rƒ   r   r   r   Úsurvey_resultÀ   s*   ÿ
ú	ýrŒ   c                 C   s\   | j dkr#t| j| jƒ}| ¡ r | jd jtg d¢d� tdƒS tƒ S tƒ }t	| dd|iƒS )Nr   r   rP   )ra   rb   rc   r   r   )
r"   r   r   r#   r$   Úisave_to_databaser   r   r   r   re   r   r   r   Ú$import_sheet_using_isave_to_databaseÜ   s"   
ÿ
þýrŽ   c                 C   rG   )Nr   c                 S   rH   rI   rJ   rK   r   r   r   rN   ô   rO   z4import_data_using_isave_book_as.<locals>.choice_funcr   rP   rS   rT   rX   r   rY   rZ   r   )r"   r   r   r#   r$   Úisave_book_to_databaser   r	   r   r   r   r]   r   r   r   Úimport_data_using_isave_book_asï   r_   r�   c                 C   s|   | j dkr1t| j| jƒ}dd„ }| ¡ r.| jd jttgd |gg d¢g d¢gdd� td	ƒS t	ƒ S tƒ }t
| d
|dddœƒS )Nr   c                 S   rH   rI   rJ   rK   r   r   r   rN     rO   z-import_without_bulk_save.<locals>.choice_funcr   rP   rS   F)rU   rV   rW   Ú	bulk_saverX   r   rY   rZ   r   r[   r]   r   r   r   Úimport_without_bulk_save  s2   
ÿ
þúýýr’   )!Údjango.shortcutsr   r   Údjango.httpr   r   Ú_compactr   Údjangor   Údjango_excelr%   Úpolls.modelsr   r	   r-   ÚFormr   r*   r   r1   rF   r^   rf   rg   rt   rv   r€   r‚   rŒ   rŽ   r�   r’   r   r   r   r   Ú<module>   s2    þ 	 