o
    2=h*+                     @   s   d dl mZ d dlm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 d d	lmZ ed
dgdd Zeg ddd Zed
gdd Zedgdd ZdS )    )api_view)Responsestatus)transaction
connection   )Configuration)MenuSerializer)QuestionConfiguration)	log_errorGETPOSTc                 C   s  | j dkrztj }i i d}|D ]}tjj|jd}g }|D ]|}|j|j|j	|j
|j|j|jd}|jrzIt ;}||j dd |jD }	| }
g }|
D ]}t|dkrj|t|d t|d	 d
 qR||d< W d    n1 syw   Y  W n ty } ztd| W Y d }~nd }~ww || q |j|j|j|d}|jdkr||d |j< q|jdkr||d |j< q|||j< qt|W S  ty } ztd| tdditjdW  Y d }~S d }~ww | j dkrXzDt  4 t!| j"d}|# r|$ }t!|}t|j"tj%dW  d    W S t|j&tj'dW  d    W S 1 s/w   Y  W d S  tyW } ztd| tdditjdW  Y d }~S d }~ww d S )Nr   )InMenuOutMenufunction_ref_idlabel	read_onlyrequiredquestion_typequestion_optionsborder_color
custom_sqlc                 S      g | ]}|d  qS r    .0colr   r   9C:\Users\Denis\Desktop\TimeStamps\configurations\views.py
<listcomp>+       z&configuration_list.<locals>.<listcomp>   r   r   Z
valueFieldZ	textFieldr   zconfiguration_list.execute_sqlheadericoncolor	questionsr   r   zconfiguration_list.GETerrorz/An error occurred while fetching configurationsr   r   datazconfiguration_list.POSTz.An error occurred while creating configuration)(methodr	   objectsallr   filterr   r   r   r   r   r   r   r   r   cursorexecutedescriptionfetchalllenappendstr	Exceptionr   r'   r(   r)   	menu_typer   r   HTTP_500_INTERNAL_SERVER_ERRORr   atomicr
   r-   is_validsaveHTTP_201_CREATEDerrorsHTTP_400_BAD_REQUEST)requestconfigurationsresponse_dataconfigquestion_configsr*   qcquestion_datar2   columnsresultsoptionsroweZconfig_data
serializerresponse_serializerr   r   r!   configuration_list
   s   












*
rP   )r   PUTDELETEc              
   C   sL  z	t jj|d}W n/ t jy   ttjd Y S  ty8 } ztd| tdditj	dW  Y d }~S d }~ww | j
dkriz
t|}t|jW S  tyh } ztd| tdditj	dW  Y d }~S d }~ww | j
d	krz@t 1 t|| jd
}| r| }t|}t|jW  d    W S t|jtjdW  d    W S 1 sw   Y  W d S  ty } ztd| tdditj	dW  Y d }~S d }~ww | j
dkr$z-t  |  t j }t|}t|jtjdW  d    W S 1 sw   Y  W d S  ty# } ztd| tdditj	dW  Y d }~S d }~ww d S )N)pkr   z&configuration_detail.get_configurationr+   .An error occurred while fetching configurationr   zconfiguration_detail.GETz6An error occurred while fetching configuration detailsrQ   r,   zconfiguration_detail.PUTz.An error occurred while updating configurationrR   zconfiguration_detail.DELETEz.An error occurred while deleting configuration)r	   r/   getDoesNotExistr   r   HTTP_404_NOT_FOUNDr9   r   r;   r.   r
   r-   r   r<   r=   r>   r@   rA   deleter0   HTTP_204_NO_CONTENT)rB   rS   configurationrM   rN   rE   rO   Zall_configsr   r   r!   configuration_detailf   sx   




(


(
r[   c                 C   s  zt jj|d}tjj|d}g }|D ]|}|j|j|j|j|j	|j
|jd}|jrzIt ;}||j dd |jD }| }	g }
|	D ]}t|dkr]|
t|d t|d d qE|
|d	< W d    n1 slw   Y  W n ty } ztd
| W Y d }~nd }~ww || q||j|j|j|di}t|W S  t jy   tdd| itjd Y S  ty } ztd| tdditjdW  Y d }~S d }~ww )Nr   r   c                 S   r   r   r   r   r   r   r!   r"      r#   z5get_configuration_by_function_ref.<locals>.<listcomp>r$   r   r   r%   r   z-get_configuration_by_function_ref.execute_sqlr&   r+   z-Configuration not found for function_ref_id: r   !get_configuration_by_function_refrT   )r	   r/   rU   r   r1   r   r   r   r   r   r   r   r   r2   r3   r4   r5   r6   r7   r8   r9   r   r'   r(   r)   r   rV   r   rW   r;   )rB   r   rZ   rF   r*   rG   rH   r2   rI   rJ   rK   rL   rM   rD   r   r   r!   r\      sr   





	

r\   rR   c              
   C   s   zGt  8 tjj|d}| s%tdd| itjdW  d    W S |	  tdd| itj
dW  d    W S 1 s@w   Y  W d S  tyg } ztd| tdditjdW  Y d }~S d }~ww )	Nr   r+   z-No configurations found for function_ref_id: r   messagez=Successfully deleted all configurations for function_ref_id: $delete_configuration_by_function_refz/An error occurred while deleting configurations)r   r<   r	   r/   r1   existsr   r   rW   rX   HTTP_200_OKr9   r   r;   )rB   r   rC   rM   r   r   r!   r^      s.   
(
r^   N)rest_framework.decoratorsr   rest_framework.responser   rest_frameworkr   	django.dbr   r   modelsr	   serializersr
   Zquestionconfigurations.modelsr   ErrorLogs.utilsr   rP   r[   r\   r^   r   r   r   r!   <module>   s     


[
6
D