o
    Qh0'                     @   sx   d dl mZ d dlmZmZmZmZmZmZ G dd dej	Z
G dd dej	ZG dd dej	ZG d	d
 d
ej	ZdS )    )forms)	Chat_Data	TableList
ColumnListOptionsRelatedOptionTable	MapTablesc                       sx  e Zd ZG dd dZejdejdddddd	Zejg d
ej	dddddZ
ejejdddddddZejej ej	ddddddZejg ddej	dddddZejej ddej	ddiddZejej ej	ddddddZejej ej	ddddddZejddgej	d d!ddd"dd#Z fd$d%Zd&d' Zd(d) Z fd*d+Z  ZS ),ChatFormc                   @   s   e Zd ZeZg dZdS )zChatForm.Meta)	chat_name	chat_typerelated_chatoption_tableoption_columnmessageoption_typerelated_option_idN)__name__
__module____qualname__r   modelfields r   r   7/var/www/html/Testing_prj/Navya-Bakers/chatbot/forms.pyMeta       r   z	Chat Nameform-controlzEnter Chat NameclassplaceholderattrsTlabelwidgetrequired) z	---------)Welcome Messager'   )Relatedr(   )End Messager)   zform-control form-selectr   r   id)choicesr#      2   )rowscolsr   )r#   r$   r   Fquerysetr#   r$   ))r&   z-------)Customr3   )Tabler4   r   )r,   r$   r#   zSelect an optionr   )r2   r$   empty_labelr#   r   r   )Nor6   )Yesr7   z'form-control form-select redirect_classredirectr6   )r,   r#   initialr$   c                    s   t t| j|i | dgdd tj D  | jd _| jj	dkr$dnd| jd _
d| jv rBdgd	d tj D  | jd _d S d S )
Nr%   c                 S      g | ]}|j |jfqS r   )r+   column_name).0colr   r   r   
<listcomp>P       z%ChatForm.__init__.<locals>.<listcomp>r   r7   r6   r8   r   c                 S   r:   r   )pkr
   )r<   chatr   r   r   r>   d   r?   )superr	   __init__r   objectsallr   r,   instancer8   r9   r   )selfargskwargs	__class__r   r   rC   M   s   


zChatForm.__init__c                 C   s6   | j dd }| j dd }|dkr|std|S )Nr   r   r(   zPlease select a option type!)cleaned_datagetr   ValidationError)rG   r   r   r   r   r   clean_option_typej   s   
zChatForm.clean_option_typec                 C   sB   | j dd }|dkrtjjddj| jjd rt	
d|S )Nr   r'   )r   chat_idz!Only one welcome message allowed!)rL   rM   r   rD   filterexcluderF   rQ   existsr   rN   )rG   r   r   r   r   clean_chat_type   s
   
zChatForm.clean_chat_typec           
         s   t   }|d}| jdd }| jdd }| jdd }| jdd }| jdd }| jd}|dkrK|d	krK|sC| dd
 |sK| dd |dksS|dkrt|s]| dd |S tjj|jd	 }	|	j
dkrt|st| dd |S )Ncoder   r   r   r   r   r   r(   r4   zPlease select option column!zPlease select option table!r)   z%Please select a related chat message!rP   r3   zPlease select a related option!)rB   cleanrM   rL   	add_errorr   rD   rR   rQ   firstr   )
rG   rL   rV   r   r   r   r   r   r   	chat_datarJ   r   r   rW      s.   


zChatForm.clean)r   r   r   r   r   	CharField	TextInputr
   ChoiceFieldSelectr   Textarear   ModelChoiceFieldr   rD   rE   r   r   r   r   r   r   r   r   r8   rC   rO   rU   rW   __classcell__r   r   rJ   r   r	      sn    

(r	   c                   @   s8   e Zd ZG dd dZejdejdddddd	Zd
S )TableListFormc                   @   s   e Zd ZeZdgZdS )zTableListForm.Meta
table_nameN)r   r   r   r   r   r   r   r   r   r   r      s    
r   z
Table Namer   zEnter Table Namer   r   Tr!   N)r   r   r   r   r   r[   r\   rc   r   r   r   r   rb      s    
rb   c                   @   sV   e Zd ZG dd dZejdejdddddd	Zejd
ejdddddd	ZdS )ColumnListFormc                   @      e Zd ZeZddgZdS )zColumnListForm.Metar;   	column_idN)r   r   r   r   r   r   r   r   r   r   r      r   r   zColumn(Name)r   zEnter Name Columnr   r   Tr!   z
Column(ID)zEnter ID ColumnN)	r   r   r   r   r   r[   r\   r;   rf   r   r   r   r   rd      s    
rd   c                   @   sd   e Zd ZG dd dZejdejdddddd	Zeje	j
 ejdd
ddddZdd ZdS )MapFormc                   @   re   )zMapForm.Metamap_namerc   N)r   r   r   r   r   r   r   r   r   r   r      r   r   zMap Namer   zEnter Map Namer   r   Tr!   r   r*   Fr1   c                 C   s   | j dd }d}z| jj}d}W n   d}d}Y tjj|d}|rA|| jjkr8tt|dkr6t	
d|S |r?t	
d|S |rHt	
d|S )Nrc   FTr&   )rc      z.Table is already mapped Please check map list!)rL   rM   rF   rc   r   rD   rR   lenlistr   rN   )rG   rc   	edit_flagexisting_table_namevalid_checkr   r   r   clean_table_name   s(   



zMapForm.clean_table_nameN)r   r   r   r   r   r[   r\   rh   r`   r   rD   rE   r^   rc   ro   r   r   r   r   rg      s    rg   N)djangor   chatbot.modelsr   r   r   r   r   r   	ModelFormr	   rb   rd   rg   r   r   r   r   <module>   s      @