U
    Md                     @   s    d dl T G dd dejjZdS )    )*c                   @   s2   e Zd Zdd Zdd Zdd Zeddd	Zd
S )CmfGroupc                 O   s   t dt| jS )N )strjoinreversedname)selfargskwargs r   3./cmf/contrib/auth/modules/user/models/cmf_group.pyreverse_name   s    zCmfGroup.reverse_namec                 C   s
   t | jS N)r   __dict__r	   r   r   r   __str__   s    zCmfGroup.__str__c                 C   s   t | S r   )r   r   r   r   r   __repr__   s    zCmfGroup.__repr__Fc                    s(   | j d d}d fdd	| |S )NZtree_parent_idr   c                    s   |dkrd S g }| tjj| jd | tjj| jd | tjj| jd  rZi ng }|D ]>}||d d |jddgd} r|||j< qb|| qb|| _	d S )N
   r      )depthZtree_parentmembers)Zskip_fields)
extendmodelsZCmfRolelistidr   ZCmfUserZget_values_dictappendZtree_children)rr   ZchildrenZord_childrenschildZchild_values
only_dictsprocessr   r   r"      s     z'CmfGroup.get_full_tree.<locals>.process)r   )get)clsr!   rootr   r    r   get_full_tree   s    zCmfGroup.get_full_treeN)F)__name__
__module____qualname__r   r   r   classmethodr&   r   r   r   r   r      s
   r   N)Zcmf.includeZcmfr   Z	CmfEntityr   r   r   r   r   <module>   s   