Ë
    º2Úi‘  ã                   ód   — 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	  e«       Z
 G d„ de	«      Zy)	é    )ÚMapping)Úget_user_model)ÚGroup)Útransaction)Ú
Serializerc                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )Ú ObjectPermissionsAssignmentMixinz’
    A serializer mixin that provides an easy way to assign permissions
    to given users and/or group when an object is created or updated.
    c                 ó†   •— | j                   d u}t        ‰| �  di |¤Ž}| j                  |«      }| j	                  |«       |S )N© )ÚinstanceÚsuperÚsaveÚget_permissions_mapÚassign_permissions)ÚselfÚkwargsÚcreatedÚresultÚpermissions_mapÚ	__class__s        €úZ/var/www/html/acx/venv/lib/python3.12/site-packages/rest_framework_guardian/serializers.pyr   z%ObjectPermissionsAssignmentMixin.save   sE   ø€ Ø—-‘- tÐ+ˆä‘‘Ñ' Ñ'ˆà×2Ñ2°7Ó;ˆØ×Ñ Ô0àˆó    c                 ó   — t         ‚)zl
        Return a map where keys are permissions
        and values are list of users and/or groups
        )ÚNotImplementedError)r   r   s     r   r   z4ObjectPermissionsAssignmentMixin.get_permissions_map   s
   € ô
 "Ð!r   c           	      ó  — ddl m} t        |t        «      s5J d| j                  j
                  ›dt        |«      j
                  ›d�«       ‚t        j                  «       5  |j                  «       D ]{  \  }}|D �cg c]  }t        |t        «      sŒ|‘Œ }}|D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]  }	 |||	| j                  «       Œ |D ]  }
 |||
| j                  «       Œ Œ} 	 ddd«       yc c}w c c}w # 1 sw Y   yxY w)zJ
        Assign the permissions to their associated users/groups.
        r   )Úassign_permz	Expected z+.get_permissions_map to return a dict, got z	 instead.N)Úguardian.shortcutsr   Ú
isinstancer   r   Ú__name__Útyper   ÚatomicÚitemsÚUserr   r   )r   r   r   Ú
permissionÚ	assigneesÚuÚusersÚgÚgroupsÚuserÚgroups              r   r   z3ObjectPermissionsAssignmentMixin.assign_permissions#   s  € õ
 	3ä˜/¬7Ô3ñ 	
à�~‰~×&Ó&¬¨_Ó(=×(FÓ(FðHó	
Ð3ô
 ×ÑÓ!ñ 	BØ)8×)>Ñ)>Ó)@ò BÑ%�
˜IØ$-ÖE˜q´¸A¼tÕ1DšÐE�ÐEØ%.ÖG ´*¸QÄÕ2Fš!ÐG�ÐGð "ò A�DÙ 
¨D°$·-±-Õ@ðAà#ò B�EÙ 
¨E°4·=±=ÕAñBñB÷	Bð 	BùâEùÚG÷	Bð 	Bús6   Á DÁ;C9ÂC9ÂDÂC>Â1C>Â5:DÃ9
DÄD)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__classcell__)r   s   @r   r	   r	      s   ø„ ñô
ò"öBr   r	   N)Úcollections.abcr   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Ú	django.dbr   Úrest_framework.serializersr   r#   r	   r   r   r   ú<module>r5      s,   ðÝ #å .Ý ,Ý !Ý 1ñ Ó€ô0B zõ 0Br   