U
    ®û‡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rV| jddD ]4\}}|dkr6qt| |ƒ}|j|jkrlt 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Ò|jD ]}	| |	jj¡ q¼|jdk	rDt|tjjƒrDt|jtƒs|jd k	r| |jjj¡ n*t|jtƒrD|jD ]}	| |	jj¡ q.|d  |¡ q|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)   Údeleter+   r.   r&   r'   r0   Q   s    
zCmfPersonView.delete)r   )Ú__name__Ú
__module__Ú__qualname__Z	api_allowr(   r*   r0   Ú__classcell__r&   r&   r.   r'   r      s   
Dr   N)r   r   Zcmf.includeZ
cmf.fieldsr   r   r&   r&   r&   r'   Ú<module>   s   