U
    P{f[                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_custom_field_choicec                   @   sV   e Zd ZdZejjddddg ZedddZed	d
 Z	edd Z
edd ZdS )CmfCustomFieldChoiceTlist_choicecreate_choiceupdate_choicedelete_choiceNc           
      C   s`   t t|}t ||d }|r,|j}t t|}n|rDtjjjj|}nd S |||d}	|	  |	S )N)namechoice_parent_id)	getattrmodelsmodelZcmfZ	BaseModelZdpZdata_driverZgen_custom_choice_modelsave)
cls
model_name
field_namevaluer
   Zdb_choice_table_name
base_model
base_fieldr   
new_choice r   4./modules/settings/models/cmf_custom_field_choice.pyr      s    
z"CmfCustomFieldChoice.create_choicec                 C   sJ   t t|}t ||d }|j}t t|}	|	j||gd}
||
|< |
  |
S )N)idfields)r   r   r   getr   )r   r   r   r   Zchoice_fieldr   r   r   field_model_namer   choicer   r   r   r   +   s    

z"CmfCustomFieldChoice.update_choicec                 C   sf   t t|}t ||}|j}t t|}|j|d}|  |j|d}	|	rb|	D ]}
t|||
j qLd S )N)r   )r
   )	r   r   r   r   deletelistr   r   r   )r   r   r   r   r   r   r   r   r   Zchildrencr   r   r   r   6   s    


z"CmfCustomFieldChoice.delete_choicec                 C   sJ   t t|}t ||d }|sg S |j}|s,g S t t|}|jddddgdS )Nr   r	   r
   Z
cmf_hidden)r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   E   s    

z CmfCustomFieldChoice.list_choice)NN)__name__
__module____qualname__Z	api_allowr   r   Zapi_methodsclassmethodr   r   r   r   r   r   r   r   r      s   


r   N)Zcmf.includeZmodules.settings.fieldsr   r   r   r   r   r   <module>   s   