B
    iŽft  ã               @   s6   d dl mZ d dlT d dlmZ G dd„ dejƒZdS )é    )Úfields)Ú*)Úcmf_person_viewc                   s6   e Zd ZdZd	dd„Z‡ fdd„Z‡ fdd„Z‡  ZS )
ÚCmfPersonViewTÚupdatec       
      C   sâ  ddl m} t d¡}|s$i }i t_| | jj¡}|d kr i }| jj|d< tjoXtjjj|d< d |d< d |d< d |d< | j|d	< g |d
< g |d< g |d< g |d< t	| dƒr¾| j
jr¾| j
j|d< t	| dƒrÜ| jjrÜ| jj|d< t	| dƒrú| jjrú| jj|d< | d¡pg }| jrdxN| jddD ]<\}}|dkr:q"t| |ƒ}|j|jkrpt d| j› d|j› ¡ q"t|tjjƒrÚt|jtƒs¬|jd k	r¬| |jjj¡ n.t|jtƒrÚx|jD ]}	| |	jj¡ qÂW |jdk	rPt|tjjƒrPt|jtƒs"|jd k	r"| |jjj¡ n.t|jtƒrPx|jD ]}	| |	jj¡ q8W |d  |¡ q"W |d  |¡ |d  |¡ tt|d ƒƒ|d< tt|d ƒƒ|d< tt|d ƒƒ|d< tt|d
 ƒƒ|d
< |tj| jj< d S )Nr   )ÚdefaultdictÚ	emit_listÚidÚcmf_modified_byÚ	parent_idÚ	person_idÚplaceÚ
class_nameZrelation_personsZchanged_fieldsÚchanged_relationsÚactionT)Ú
is_changed)Zcmf_modified_atr
   Zcmf_viewed_atZcmf_viewed_byZcmf_locked_atZcmf_locked_byzemit: FIXME is changed bug Ú..)Úcollectionsr   ÚgÚgetr   r	   ÚvalueZcurrent_personr   Úhasattrr   Z
is_definedr   r   r   ÚitemsÚgetattrÚoldÚdebugÚ
isinstanceÚcmfr   Z
CmfRelBaseÚlistÚappendZ_oldÚextendÚset)
Úselfr   r   r   Zbodyr   ÚkÚvZfieldÚi© r&   ú./cmf/models/cmf_person_view.pyÚemit	   sj    



zCmfPersonView.emitc                s   |   ¡  tƒ j||ŽS )N)r(   ÚsuperÚsave)r"   ÚargsÚkwargs)Ú	__class__r&   r'   r*   M   s    zCmfPersonView.savec                s   |   d¡ tƒ j||ŽS )NZdeleted)r(   r)   Údelete)r"   r+   r,   )r-   r&   r'   r.   Q   s    
zCmfPersonView.delete)r   )Ú__name__Ú
__module__Ú__qualname__Z	api_allowr(   r*   r.   Ú__classcell__r&   r&   )r-   r'   r      s   
Dr   N)r   r   Zcmf.includeZ
cmf.fieldsr   r   r&   r&   r&   r'   Ú<module>   s   