
    hA                         d dl Z d dlmZ ddlmZ ddlmZ ddlmZm	Z	  G d de
      Z G d	 d
      Zde
dedefdZdedefdZdedefdZdedefdZdedefdZdedefdZdedefdZy)    N)settings   )confConditionFailed)get_latest_draft_versionversion_is_unlocked_for_userc                        e Zd Zdedd f fdZdedej                  d   fdZdede	j                  ddfd	Zdede	j                  defd
Z xZS )
Conditionsotherreturnc                 4    t        t        | 	  |            S N)r   super__add__)selfr   	__class__s     O/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_versioning/conditions.pyr   zConditions.__add__   s    %'/%011    instance)r   BoundConditionsc                 "    |rt        | |      S | S r   )r   )r   r   clss      r   __get__zConditions.__get__   s    "422r   userNc                 $    | D ]  } |||        y r    )r   r   r   funcs       r   __call__zConditions.__call__   s     	!D4 	!r   c                 6    	  | ||       y# t         $ r Y yw xY w)NFTr   )r   r   r   s      r   as_boolzConditions.as_bool   s*    	4    		s   	 	)__name__
__module____qualname__listr   objecttypingUnionr   r   AUTH_USER_MODELr   boolr!   __classcell__)r   s   @r   r   r   
   ss    2T 2l 2 =\0] 
! !x/G/G !D ! h.F.F 4 r   r   c                   4    e Zd ZdededdfdZddZdefdZy)	r   
conditionsr   r   Nc                      || _         || _        y r   r-   r   )r   r-   r   s      r   __init__zBoundConditions.__init__    s    $ r   c                 <    | j                  | j                  |       y r   r/   r   r   s     r   r   zBoundConditions.__call__$   s    t,r   c                 N    | j                   j                  | j                  |      S r   )r-   r!   r   r2   s     r   r!   zBoundConditions.as_bool'   s    &&t}}d;;r   )r   N)	r"   r#   r$   r   r&   r0   r   r*   r!   r   r   r   r   r      s-    !: ! !D !-<t <r   r   statesmessager   c                       fd}|S )Nc                 8    | j                   vrt              y r   )stater   )versionr   r5   r4   s     r   innerzin_state.<locals>.inner,   s    ==&!'** 'r   r   )r4   r5   r:   s   `` r   in_stater;   +   s    + Lr   c                       fd}|S )zCondition that the version is not locked. Is only effective if ``settings.DJANGOCMS_VERSIONING_LOCK_VERSIONS``
    is set to ``True``c                     t         j                  r2t        | |      s%t        j	                  | j
                              y y N)r   )r   LOCK_VERSIONSr	   r   format	locked_byr9   r   r5   s     r   r:   zis_not_locked.<locals>.inner6   s<    />%gnn':K:Kn&LMM ? r   r   r5   r:   s   ` r   is_not_lockedrD   3   s    N Lr   c                       fd}|S )Nc                     t         j                  r@t        |       }|r2t        ||      s%t	        j                  |j                              y y y r>   )r   r?   r   r	   r   r@   rA   r9   r   draft_versionr5   s      r   r:   z"draft_is_not_locked.<locals>.inner>   sM    4W=M%A-QU%V%gnn-:Q:Qn&RSS &W} r   r   rC   s   ` r   draft_is_not_lockedrI   =   s    T
 Lr   c                       fd}|S )Nc                     t         j                  r%t        |       }|rt        ||      rt	              y t	              r   )r   r?   r   r	   r   rG   s      r   r:   zdraft_is_locked.<locals>.innerG   sB    4W=M $@PT$U%g.. %V "'**r   r   rC   s   ` r   draft_is_lockedrL   F   s    + Lr   c                       fd}|S )Nc                 >    |j                  d      st              y )Nz'djangocms_versioning.delete_versionlock)has_permr   rB   s     r   r:   zuser_can_unlock.<locals>.innerR   s!    }}FG!'** Hr   r   rC   s   ` r   user_can_unlockrP   Q       + Lr   c                       fd}|S )Nc                 >    | j                  |      st              y r   )has_publish_permissionr   rB   s     r   r:   zuser_can_publish.<locals>.innerY   s!    --d3!'** 4r   r   rC   s   ` r   user_can_publishrU   X   rQ   r   c                       fd}|S )Nc                 >    | j                  |      st              y r   )has_change_permissionr   rB   s     r   r:   zuser_can_change.<locals>.inner`   s!    ,,T2!'** 3r   r   rC   s   ` r   user_can_changerY   _   rQ   r   )r'   django.confr    r   
exceptionsr   helpersr   r	   r%   r   r   strcallabler;   rD   rI   rL   rP   rU   rY   r   r   r   <module>r`      s        ' K *	< 	<T C H 3 8   S X S X c h S X r   