
    htf,                     T   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
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
j*                        Z G d de
j*                        Z G d de      Z G d dee      Z G d de      Z G d de      Z G d dee      Z G d de      Zy)    )Group
Permission)GenericForeignKey)ContentType)ValidationError)models)gettext_lazy)user_model_label)get_content_type)GroupObjectPermissionManagerUserObjectPermissionManagerc                   x     e Zd ZdZ ej
                  eej                        Z G d d      Z	d Z
 fdZ xZS )BaseObjectPermissionz
    Abstract ObjectPermission class. Actual class should additionally define
    a ``content_object`` field and either ``user`` or ``group`` field.
    	on_deletec                       e Zd ZdZy)BaseObjectPermission.MetaTN__name__
__module____qualname__abstract     `/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/guardian/models/models.pyMetar      s    r   r   c           
          dj                  t        | j                        t        t        | dd      xs | j                        t        | j
                  j                              S )Nz{} | {} | {}userF)formatstrcontent_objectgetattrgroup
permissioncodename)selfs    r   __str__zBaseObjectPermission.__str__   sO    $$##$fe,:

;(()+ 	+r   c                     t        | j                        }|| j                  j                  k7  r&t	        d| j                  j                  d|d      t        |   |i |S )NzLCannot persist permission not designed for this class (permission's type is z and object's type is ))r   r!   r$   content_typer   supersave)r&   argskwargsr*   	__class__s       r   r,   zBaseObjectPermission.save   s_    '(;(;<4??777!%)__%A%A<#Q R R w|T,V,,r   )r   r   r   __doc__r   
ForeignKeyr   CASCADEr$   r   r'   r,   __classcell__)r/   s   @r   r   r      s;     #"":HJ +- -r   r   c                       e Zd Z ej                  eej                        Z ej                   e	d      d      Z
 ed      Z G d d      Zy	)
BaseGenericObjectPermissionr   z	object ID   )
max_length	object_pk)fk_fieldc                   <    e Zd ZdZ ej
                  ddg      gZy) BaseGenericObjectPermission.MetaTr*   r8   )fieldsN)r   r   r   r   r   Indexindexesr   r   r   r   r;   *   s!    FLL =>
r   r   N)r   r   r   r   r1   r   r2   r*   	CharField_r8   r   r!   r   r   r   r   r5   r5   %   sF    $6$$[FNNKL   ;C@I&<N
 
r   r5   c                   n    e Zd ZdZ ej
                  eej                        Z e	       Z
 G d d      Zy)UserObjectPermissionBasez=
    **Manager**: :manager:`UserObjectPermissionManager`
    r   c                       e Zd ZdZg dZy)UserObjectPermissionBase.MetaT)r   r$   r!   Nr   r   r   r   unique_togetherr   r   r   r   rD   9   s    Br   r   N)r   r   r   r0   r   r1   r
   r2   r   r   objectsr   r   r   r   rB   rB   1   s6     6-HD)+GC Cr   rB   c                   L    e Zd Z G d dej                  ej                        Zy)UserObjectPermissionAbstractc                       e Zd ZdZg dZy)!UserObjectPermissionAbstract.MetaT)r   r$   r8   NrE   r   r   r   r   rK   @   s    =r   r   N)r   r   r   rB   r   r5   r   r   r   rI   rI   >   s    >',,.I.N.N >r   rI   c                   6    e Zd Z G d dej                        Zy)UserObjectPermissionc                       e Zd ZdZy)UserObjectPermission.MetaFNr   r   r   r   r   rO   G       r   r   N)r   r   r   rI   r   r   r   r   rM   rM   E   s    +00 r   rM   c                   n    e Zd ZdZ ej
                  eej                        Z e	       Z
 G d d      Zy)GroupObjectPermissionBasez>
    **Manager**: :manager:`GroupObjectPermissionManager`
    r   c                       e Zd ZdZg dZy)GroupObjectPermissionBase.MetaT)r#   r$   r!   NrE   r   r   r   r   rT   S   s    Cr   r   N)r   r   r   r0   r   r1   r   r2   r#   r   rG   r   r   r   r   rR   rR   K   s5     Fev~~>E*,GD Dr   rR   c                   L    e Zd Z G d dej                  ej                        Zy)GroupObjectPermissionAbstractc                       e Zd ZdZg dZy)"GroupObjectPermissionAbstract.MetaT)r#   r$   r8   NrE   r   r   r   r   rX   Z   s    >r   r   N)r   r   r   rR   r   r5   r   r   r   rV   rV   X   s    ?(--/J/O/O ?r   rV   c                   6    e Zd Z G d dej                        Zy)GroupObjectPermissionc                       e Zd ZdZy)GroupObjectPermission.MetaFNr   r   r   r   r   r\   `   rP   r   r   N)r   r   r   rV   r   r   r   r   rZ   rZ   ^   s    ,11 r   rZ   N)django.contrib.auth.modelsr   r   "django.contrib.contenttypes.fieldsr   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   	django.dbr   django.utils.translationr	   r@   guardian.compatr
   guardian.ctypesr   guardian.managersr   r   Modelr   r5   rB   rI   rM   rR   rV   rZ   r   r   r   <module>rg      s    8 @ : 2  6 , , W-6<< -2	
&,, 	

C3 
C>#;=X >7 
D 4 
D?$=?Z ?9 r   