
    siK                     |    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 ed        Zed	        Zy
)    )messages)HttpResponse)render)Employee)_thread_locals)decorator_with_arguments)RecruitmentStagec                       fd}|S )
    Decorator that checks if the user has the specified permission or is a manager.

    Args:
        perm (str): The permission to check.

    Returns:
        function: The decorated function.

    Raises:
        None

    c                    t        t        d      }t        | dd      s|| _        |j                  }t        j
                  j                  |      j                         }t        j
                  j                  |      j                         xs. t        j
                  j                  |      j                         }|j                        s|r 
| g|i |S t        j                  |d       |j                  j                  dd      }d	| d
}d}	|	|j                  j!                         v rt#        |d      S t%        |      S aR  
        Inner function that performs the permission and manager check.

        Args:
            request (HttpRequest): The request object.
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.

        Returns:
            HttpResponse: The response from the decorated function.

        requestN)employee_user_id)stage_managers)recruitment_managerszYou dont have permission.HTTP_REFERER/z <script>window.location.href = "z
"</script>HTTP_HX_REQUESTzdecorator_404.html)getattrr   r   userr   objectsfilterfirstr
   existsr	   has_permr   infoMETAgetkeysr   r   selfargskwargsr   r   employee
is_managerprevious_urlscriptkeyfunctionperms             >/var/www/python-projects/worksol/recruitment/cbv_decorators.py	_functionz$manager_can_enter.<locals>._function   s#    .)4tY-"DL||##**D*AGGIMM   9@@B R""))x)HOOQ 	 ==*D242622g:;||''<3L>L',,##%%'#788F##     r*   r+   r-   s   `` r,   manager_can_enterr1      s     $@ r.   c                       fd}|S )r   c                 T   t        t        d      }t        | dd      s|| _        |j                  }t        j
                  j                  |      j                         }t        j
                  j                  |      j                         xs t        j
                  j                  |      j                         xs^ |j                  j                  j                  j                         xs. |j                  j                  j                  j                         }|j                        s|r 
| g|i |S t        j                   |d       |j"                  j%                  dd      }d	| d
}d}	|	|j"                  j'                         v rt)        |d      S t+        |      S r   )r   r   r   r   r   r   r   r   r
   r   r	   employee_getonboardingstage_setonboarding_taskr   r   r   r   r   r    r   r   r!   s             r,   r-   z(all_manager_can_enter.<locals>._functionN   si    .)4tY-"DL||##**D*AGGIMM   9@@B B""))x)HOOQB||((<<CCEB ||((88??A	 	 ==*D242622g:;||''<3L>L',,##%%'#788F##r.   r/   r0   s   `` r,   all_manager_can_enterr7   >   s      $D r.   N)django.contribr   django.httpr   django.shortcutsr   employee.modelsr   horilla.horilla_middlewaresr   horilla_views.cbv_methodsr   recruitment.modelsr	   r
   r1   r7   r/   r.   r,   <module>r?      sC    # $ # $ 6 > 1 / /d 1 1r.   