U
    rRd                     @   s6   d dl mZ d dlT d dlmZ G dd dejZdS )    )
cmf_plugin)*)fieldsc                       sP   e Zd Zedd Zdd Zdd Zdddd	d
 fdd
Z fddZ  Z	S )	CmfPluginc              	   C   s   t js
d S tjdr(tjdd }ntj}dg}t jD ]V}dd|gddddgdd|ggg}t j| D ]}||dtj|g qh|| q:t	
d	|  tjj|d
}|std|S )NzX-Forwarded-Forr   ORtypez==Zext_networkz	0.0.0.0/0ext_ipu   Ищем секрет )filteru   Ошибка доступа)ZconfigZPUB_ACCEPT_TYPESZrequestZheadersZgetlistZremote_addrappendargsgetgdebugZmodelsr   	Exception)clsr   Z_filter	type_nameZ
sub_filterkeyZplugin r   ./models/cmf_plugin.pycheck_secret   s     
 zCmfPlugin.check_secretc                 C   s   | j r
d S | j| _ d S )N)nameext_urlselfr   r   r   
_calc_name    s    zCmfPlugin._calc_namec                 C   s   ddl m} | jjsD| jjsD| jjsD| jjsD| jjr@| jsD| jsDd S | jjd k	rX| jjnd}| jjd k	rp| jjnd}|	| | d| _d S )Nr   )cmf_hashlib    )
Zcmf.utilr   r   Zis_not_nullZ
is_changedext_token_addonsource_hashZis_nullvalueZshort_str_enc)r   r   r   r   r   r   r   _calc_source_hash%   s&    zCmfPlugin._calc_source_hashr   TNdepthnotifyemitorderno_filterc                   s@   |    |   | jr$| jj | _t j|||||d|S )Nr"   )r   r!   Z	ext_loginr    stripsupersave)r   r#   r$   r%   r&   r   kwargs	__class__r   r   r)   1   s
    zCmfPlugin.savec                    s   t   ddg S )Nr   r   )r(   save_preload_fieldsr   r+   r   r   r-   8   s    zCmfPlugin.save_preload_fields)
__name__
__module____qualname__classmethodr   r   r!   r)   r-   __classcell__r   r   r+   r   r      s   
r   N)Z
cmf.fieldsr   Zcmf.includeZcmfr   r   r   r   r   r   <module>   s   