a
    µb†  ã                   @   sl   d dl Z d dl mZ d dlmZ e  d¡ eƒ ¡ e  e¡Zg Zdd„ Z	dd„ Z
dd	d
„ZG dd„ dƒZdS )é    N)ÚNullHandler)ÚconfÚconcurrencyc                 C   s
   | j jjS )N)Ú_concurrencymetaÚfieldZattname)Úobj© r   úM/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/concurrency/core.pyÚget_version_fieldname   s    r
   c                 C   s   | j j | |¡ dS )zï
    Set the given version on the passed object

    This function should be used with 'raw' values, any type conversion should be managed in
    VersionField._set_version_value(). This is needed for future enhancement of concurrency.
    N)r   r   Z_set_version_value)r   Úversionr   r   r	   Ú_set_version   s    r   c                 C   sˆ   t js
d S | jj}|p t| |jƒ}|| ¡ k}| jd ur„|r„d| j|j|i}| jj	j
f i |¤Ž}|s„t d | |¡¡ t  | ¡ q„n d S )NÚpkz?Conflict detected on `{0}` pk:`{0.pk}`, version `{1}` not found)r   ZENABLEDr   r   ÚgetattrÚnameÚget_defaultr   Ú	__class__Z_base_managerÚfilterÚloggerÚdebugÚformatZ	_callback)Zmodel_instanceZversion_valueZversion_fieldÚvalueZis_versionedÚkwargsÚentryr   r   r	   Ú_select_lock   s    ÿr   c                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZg ZdS )ÚConcurrencyOptionsNFT)Ú__name__Ú
__module__Ú__qualname__r   Zversioned_saveZmanuallyÚenabledÚbaseZcheck_fieldsZignore_fieldsÚskipZ	incrementÚinitialZtriggersr   r   r   r	   r   1   s   r   )N)Úloggingr   Zconcurrency.configr   Ú	getLoggerÚ
addHandlerr   r   Ú__all__r
   r   r   r   r   r   r   r	   Ú<module>   s   


