U
    3qh,	                     @   s6   d dl mZ d dlT d dlmZ G dd dejZdS )    )Path)*)cmf_evagit_groupc                       s^   e Zd Zejjdg Zedd Zedd Zdd Z	dd	 Z
 fd
dZ fddZ  ZS )CmfEvagitGroupnested_listc                 C   s(   | j js| j   ttj d| j  S )N/repos/)
url_prefix
is_definedloadr   configGIT_DIRself r   +./modules/evagit/models/cmf_evagit_group.pypath   s    
zCmfEvagitGroup.pathc                 C   s0   | j js| j   ttj d| j  d| j S )Nr   Z	_deleted_)r   r	   r
   r   r   r   coder   r   r   r   path_deleted   s    
zCmfEvagitGroup.path_deletedc                 C   s   | j rtjjddd| _d S )NZapp_gitT)Zsys_typesystem)is_newmodelsZ	CmfFoldergetparentr   r   r   r   _calc_parent   s    zCmfEvagitGroup._calc_parentc                 O   s*   t jj| d}|D ]}||  q|S )ua   Костыль. Функционал данного метода должен уехать в ORMZtree_parent)r   r   listextendr   )r   argskwargsZchildrenchildr   r   r   r      s    zCmfEvagitGroup.nested_listc                    sj   | j r\tjd|  | j r4td| j ddd tjjdd}tj| t	j
|d}|  t j||S )	NZperm_create_groupu   Группа с именем u    уже существуетT)abortzsystem.owner:default)r   )	namespacememberZgit_role)r   r   CmfEvagitRolecheck_role_permissionr   existsZ	cmf_alertr   CmfEvagitRoleAssigngZcurrent_usersavesuper)r   r   r   Zrolerole_assign	__class__r   r   r(   $   s    
zCmfEvagitGroup.savec                    s   t jd|  t jj| dD ]}|  qt jj| dD ]}|  q8t jj| dD ]}|  qT| j	 st
d| j d n| j| j t j||S )NZperm_delete_groupr   )r!   zGroup z already been deleted)r   r#   r$   ZCmfEvagitRepor   deleter   r&   r   r%   ZloggingZwarningrenamer   r)   )r   r   r   Zrepogroupr*   r+   r   r   r-   5   s    



zCmfEvagitGroup.delete)__name__
__module____qualname__r   r   Zapi_methodspropertyr   r   r   r   r(   r-   __classcell__r   r   r+   r   r      s   

r   N)pathlibr   Zcmf.includeZmodules.evagit.fieldsr   r   r   r   r   r   <module>   s   