B
    iŽfà  ã               @   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dZejjdddddddg 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 )%Ú
CmfCommentTÚ	mark_readZpublic_listZ
public_getZpublic_createZpublic_deleteZpublic_likeZpublic_updatec                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_name)r   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_name)r   r   r   r   Ú	_calc_doc1   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)Útz)Údatetimer   r   )ÚviewsÚis_nullr   r   r   r   ÚjsonÚ
is_changedÚappendr   ÚnowÚtimezoneÚutcÚ	isoformatr   )r   r   r   r   Ú_calc_views;   s    zCmfComment._calc_views)Ú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+   )Úcomment)Úobj)r   r)   r   r   r   Úsaver   Z_comment_save_hookÚmodelsZCmfStatZdo_calc_statistics)r   r*   r+   ÚargsÚkwargsZres)r   r   r   r.   F   s    

zCmfComment.savec             C   s&   | j s| jjsd S |  ¡  | j| _d S )N)Úis_newr   r#   Z_load_perm_fieldsZperm_parent)r   r   r   r   Ú_calc_perm_parent[   s    zCmfComment._calc_perm_parentc             C   s   d S )Nr   )r   r   r   r   Úgen_codea   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r”d| j_| j ¡  dS d	S )
Nr    zchannel_message.message_status)Zfields)r   )r   r   r   T)Z	only_dataÚreadF)r   r    r!   r   r   r   r   r"   r$   r   r%   r&   r'   r(   r   r.   Zchannel_messageZmessage_status)r   r1   r   r   r   r   d   s    
zCmfComment.mark_read)Útextc             C   s   t  | ¡} | S )N)ÚbleachÚlinkify)r6   r   r   r   r8   u   s    
zCmfComment.linkifyc                s&   |   dg¡ |  ¡  tƒ j||Ž d S )Nzcmf_author.login)r   r   r   Ú_save_import)r   r0   r1   )r   r   r   r9   z   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   r2   r/   ÚCmfEventÚdo_event)r   r0   r1   r   r   r   Ú_do_event_save   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   r/   r:   r;   )r   r0   r1   r   r   r   Ú_do_event_deletedˆ   s    
zCmfComment._do_event_deleted)Ú__name__Ú
__module__Ú__qualname__Z	api_allowr   r   Zapi_methodsr   r   r   r   r)   r.   r3   r4   r   ÚstaticmethodÚstrr8   r9   r<   r=   Ú__classcell__r   r   )r   r   r      s.   
	r   )	r   Zurllib.parser   r7   r   Zcmf.includeZ
cmf.fieldsr   r   r   r   r   r   Ú<module>   s   