o
    'hy                     @   s@   d dl mZmZ d dlmZ dd Zdd Zdd Zd	d
 ZdS )   )get_user_permissionshas_permission)GroupPermissionManagerc                 C   sL   | j sdS | jr
dS t| }d|v p%d|v p%d|v p%d|v p%d|v p%d|v S )	z)Check if user can access expense featuresFTview_expensescreate_expensesmanage_expensesview_expenseadd_expensechange_expenseis_authenticatedis_superuserr   useruser_permissions r   ;/var/www/html/optinet_system/accounts/context_processors.pycan_access_expenses   s    r   c                 C   s<   | j sdS | jr
dS t| }d|v pd|v pd|v pd|v S )z2Check if user can manage expenses (approve/reject)FTr   approve_expensesr
   delete_expenser   r   r   r   r   can_manage_expenses   s   r   c                 C   s   t  ddddd}| jjrut| j}||d< d|v |d< d|v |d< d	|v |d
< t| jdru| jjru| jj}|jrA|jj |d< ddl	m
} | jjj}|rg|jj|ddd}|D ]}|d |jj q[|t| jt| jd |S )z(Add permission flags to template contextNF)r   user_departmenthas_financial_accesscan_assign_ticketscan_delete_customersr   view_billingr   assign_ticketsr   delete_customersr   employee_profiler   r   )DepartmentPermissionAssignmentT)
departmentpermission__is_active
permission)r   r   )setr   r   r   hasattrr   r    namelowermodelsr   objectsfilterselect_relatedaddr"   updater   r   )requestcontextr   employeer   r    assigned_permissions
assignmentr   r   r   department_permissions$   s@   	

r2   c                    sn   t  } jjrt j}t jdr j }|| | fdd jjr3dd  jj D dS g dS )z(Add user permissions to template contextget_all_permissionsc                    s   t  j| S )N)r   r   )permr-   r   r   <lambda>`   s    z"user_permissions.<locals>.<lambda>c                 S   s   g | ]}|j qS r   )r%   ).0groupr   r   r   
<listcomp>a   s    z$user_permissions.<locals>.<listcomp>)r   r   user_groups)	r#   r   r   r   r$   r3   r,   groupsall)r-   permissionsdjango_permissionsr   r5   r   r   R   s   



r   N)	r=   r   r   r'   r   r   r   r2   r   r   r   r   r   <module>   s    .