U
    َe                     @   sR   d dl Z d dlmZ d dlmZ d dlT d dlZd dlmZ G dd dejZdS )    N)urlparse)Linker)*)cmf_commentc                       s   e Zd Z fddZ fddZdd Zdd Zd	d
 Zddd fdd
Zdd Z	dd Z
dd ZeedddZ fddZdd Zdd Z  ZS )
CmfCommentc                    s   t   dddg S )Nparent
cmf_authorstatus)supersave_preload_fieldsself	__class__ ./cmf/models/cmf_comment.pyr      s    zCmfComment.save_preload_fieldsc                    sv   |  ddg | jdkrd S | j}|s<| j r<| jj }|rltd| jj | jjtj	jjd|
 d t  S )N	log_levelr   r   zcomment-)idZ	person_id)Zevent_persons)load_fieldsr   r   Ztree_parentloadZcmf_emit_eventr   valuegcurrent_personZall_relation_personsr
   emit)r   r   r   r   r   r      s    
zCmfComment.emitc                 C   s(   | j r$| j j| _| j j| _| j j| _d S N)r   ZloginZcache_cmf_author_logincodeZcache_cmf_author_codenameZcache_cmf_author_namer   r   r   r   _calc_cache   s    

zCmfComment._calc_cachec                 C   s   | j r| j jjdkrd S d S )NZCmfDocument)r   r   
class_namer   r   r   r   	_calc_doc&   s    zCmfComment._calc_docc                 C   sh   | j jstjjj| j jkrd| j jr(g | _ d| j _| j jt	j	j
t	jjd tjjjtjjjd d S )NTZtzdatetimer   r   )viewsis_nullr   r   r   r   json
is_changedappendr"   nowtimezoneutc	isoformatr   r   r   r   r   _calc_views0   s    zCmfComment._calc_viewsT)notifyauditc                   sl   |    |   |   | jdkr&d}t j|d|i|}| jrP| jj| d | jdkrhtj	j
| d |S )u   
        Первый коммент для чатов создает либо топик без чата либо топик с чатом
        :param args:
        :param kwargs:
        :return:
        r   Fr.   )Zcomment)obj)r   r,   r   r   r
   saver   Z_comment_save_hookmodelsZCmfStatZdo_calc_statistics)r   r-   r.   argskwargsresr   r   r   r0   ;   s    

zCmfComment.savec                 C   s&   | j s| jjsd S |   | j| _d S r   )is_newr   r&   Z_load_perm_fieldsZperm_parentr   r   r   r   _calc_perm_parentP   s    zCmfComment._calc_perm_parentc                 C   s   d S r   r   r   r   r   r   gen_codeV   s    zCmfComment.gen_codec                 K   s   | j ddgd | jjrg | _tjjj| jjkr| jjt	j	j
t	jjd tjjjtjjjd | jdd | jr| jjdkrd| j_| j  dS d	S )
Nr#   zchannel_message.message_status)Zfieldsr    r!   T)Z	only_datareadF)r   r#   r$   r   r   r   r   r%   r'   r"   r(   r)   r*   r+   r   r0   Zchannel_messageZmessage_status)r   r3   r   r   r   	mark_readY   s    
zCmfComment.mark_readtextc                 C   s   t | } | S r   )bleachlinkifyr:   r   r   r   r=   j   s    
zCmfComment.linkifyc                    s&   |  dg |   t j|| d S )Nzcmf_author.login)r   r   r
   _save_importr   r2   r3   r   r   r   r>   o   s    zCmfComment._save_importc                 O   sF   | j dkrd S | jr,tjj| df|| ntjj| df|| d S )Nr   Zcomment_createdZcomment_updated)r   r5   r1   CmfEventdo_eventr?   r   r   r   _do_event_savet   s
    
zCmfComment._do_event_savec                 O   s4   |  dg | jdkrd S tjj| df|| d S )Nr   r   Zcomment_deleted)r   r   r1   r@   rA   r?   r   r   r   _do_event_deleted}   s    
zCmfComment._do_event_deleted)__name__
__module____qualname__r   r   r   r   r,   r0   r6   r7   r9   staticmethodstrr=   r>   rB   rC   __classcell__r   r   r   r   r      s   
	r   )	r"   Zurllib.parser   r<   r   Zcmf.includeZ
cmf.fieldsr   r   r   r   r   r   <module>   s   