ó
    q×)i  ã                   ó&   • S r SSKJr  SSKJr  S rg)z4
Utility functions for supervisor group permissions
é    )ÚSupervisorGroup)ÚUserSettingsc                 ó<  •  [         R                  R                  U S9R                  5       nU(       a  UR                  (       d>  [
        R                  R                  U S9nUR                  5       (       a  SSSS.$ SSSS.$ [
        R                  R                  UR                  S9nUR                  5       (       d  SSSS.$ [        S U 5       5      n[        S U 5       5      n[        S U 5       5      nUUUS.$ ! [         a  nSSSS.s SnA$ SnAff = f)	aò  
Get stamp permissions for a user based on their supervisor groups.

A user can belong to multiple supervisor groups. Permissions are determined by:
- If user has supervisor_code in UserSettings, find all SupervisorGroups with that code
- Check permissions from all groups the user belongs to
- Permissions are OR'd together (if ANY group allows it, user has permission)

Returns:
    dict: {
        'can_add_stamps': bool,
        'can_edit_stamps': bool,
        'can_delete_stamps': bool
    }
)Úuser_idT)Úcan_add_stampsÚcan_edit_stampsÚcan_delete_stamps)Úgroupc              3   ó8   #   • U  H  oR                   v •  M     g 7f©N)r   ©Ú.0r
   s     Ú&D:\TimeStamps\supervisorgroup\utils.pyÚ	<genexpr>Ú-get_user_stamp_permissions.<locals>.<genexpr>;   s   é € ÐJÒ8I¨u×*Ö*Ò8Iùó   ‚c              3   ó8   #   • U  H  oR                   v •  M     g 7fr   )r   r   s     r   r   r   <   s   é € ÐLÒ:K°×,Ö,Ò:Kùr   c              3   ó8   #   • U  H  oR                   v •  M     g 7fr   )r	   r   s     r   r   r   =   s   é € ÐPÒ>O°U×0Ö0Ò>Oùr   N)	r   ÚobjectsÚfilterÚfirstÚsupervisor_coder   ÚexistsÚanyÚ	Exception)r   Úuser_settingsÚsupervisor_groupsÚcan_addÚcan_editÚ
can_deleteÚes          r   Úget_user_stamp_permissionsr"      s@  € ð 2
ä$×,Ñ,×3Ñ3¸GÐ3ÐD×JÑJÓLˆæ M×$A×$Aô !0× 7Ñ 7× >Ñ >ÀwÐ >Ð OÐØ ×'Ñ'×)Ñ)ð '+Ø'+Ø)-ñð ð #'Ø#'Ø%)ñð ô ,×3Ñ3×:Ñ:À×A^ÑA^Ð:Ð_Ðà ×'Ñ'×)Ñ)ð #'Ø#'Ø%)ñð ô ÑJÑ8IÓJÓJˆÜÑLÑ:KÓLÓLˆÜÑPÑ>OÓPÓPˆ
ð &Ø'Ø!+ñ
ð 	
øô
 ó 
ð #Ø#Ø!%ñ
õ 	
ûð
ús1   ‚A:D Á=D ÂAD Ã;D Ä
DÄDÄDÄDN)Ú__doc__Úsupervisorgroup.modelsr   ÚuserSettings.modelsr   r"   © ó    r   Ú<module>r(      s   ðñõ 3Ý ,óB
r'   