
    siv                         d dl mZ d dlmZ d dlmZmZmZmZ ddl	m
Z
mZmZ d Zed        Zedd	       Zedd
       Zedd       Zedd       Zedd       Zedd       Zy)    )messages)HttpResponse)any_project_managerany_project_memberany_task_managerany_task_member   )ProjectProjectStageTaskc                       fdS )Nc                        fdS )Nc                      | gi S N )funcargs	decoratorkwargss    5/var/www/python-projects/worksol/project/decorator.py<lambda>z,<lambda>.<locals>.<lambda>.<locals>.<lambda>   s    9<<<     r   )r   r   r   s   ``r   r   z<lambda>.<locals>.<lambda>   s
     / r   r   )r   s   `r   r   r      s
      r   c                       fd}|S )Nc                     | j                   }|j                        s,t        |      s!t        |      st	        |      st        |      r | g|i |S t        j                  | d       t        d      S )U
        This method is used to check the employee is project manager or not
        zYou don't have permission.)<script>window.location.reload()</script>)	userhas_permr   r   r   r   r   infor   )requestr   r   r   functionperms       r   	_functionz7is_projectmanager_or_member_or_perms.<locals>._function   sj     ||MM$"4(!$'%t$G5d5f55g;<GHHr   r   )r!   r"   r#   s   `` r   $is_projectmanager_or_member_or_permsr$      s    I  r   Nc                      	 d fd	}|S )Nc                 &   t         j                  j                  |      }| j                  j                  | j                  j                  d      s|j                  j                         v st|j                  j                         v sXt        fd|j                  j                         D              s,t        fd|j                  j                         D              r | g|d|i|S t        j                  | d       t        d      S )zT
        This method is used to check the employee is project member or not
        idproject.change_projectc              3   V   K   | ]   }|j                   j                         v  " y wr   )task_managersall.0taskemployees     r   	<genexpr>zJproject_update_permission.<locals>.check_project_member.<locals>.<genexpr>:   s*      9=D..2244   &)c              3   V   K   | ]   }|j                   j                         v  " y wr   )task_membersr,   r-   s     r   r1   zJproject_update_permission.<locals>.check_project_member.<locals>.<genexpr>=   s*      8<D--1133r2   
project_idYou dont have permission.r   )r
   objectsgetr   employee_getr   managersr,   membersanytask_setr   r   r   )r    r5   r   r   projectr0   r!   s        @r   check_project_memberz7project_update_permission.<locals>.check_project_member+   s     //%%%4<<,,LL!!":;7++//117??..00 AHAQAQAUAUAW   @G@P@P@T@T@V  GLdLzLVLLg:;GHHr   r   r   r!   r   r   r?   s   `   r   project_update_permissionrA   )   s     I6  r   c                      	 d fd	}|S )Nc                 .   t         j                  j                  |      }| j                  j                  |j
                  j                         v s| j                  j                  r | g|d|i|S t        j                  | d       t        d      S )r   r'   r5   r6   r   )r
   r7   r8   r   r9   r:   r,   is_superuserr   r   r   )r    r5   r   r   r>   r!   s        r   is_project_managerz5project_delete_permission.<locals>.is_project_managerK   s     //%%%4LL%%)9)9)=)=)??||((GLdLzLVLLg:;GHHr   r   r   r!   r   r   rE   s   `   r   project_delete_permissionrG   I   s     I$ r   c                      	 d fd	}|S )Nc                    t         j                  j                  |      j                  }| j                  j                  d      s{| j                  j                  d      s`| j                  j                  |j                  j                         v s0| j                  j                  |j                  j                         v r | g|d|i|S t        j                  | d       t        d      S )zZ
        This method is used to check the employee is project stage member or not
        r'   r)   project.change_taskstage_idr6   r   )r   r7   r8   r>   r   r   r9   r:   r,   r;   r   r   r   r    rK   r   r   r>   r!   s        r   r?   z=project_stage_update_permission.<locals>.check_project_memberb   s     &&**h*7??LL!!":;||$$%:;||((G,<,<,@,@,BB||((GOO,?,?,AAGHdHXHHHg:;GHHr   r   r   r@   s   `   r   project_stage_update_permissionrM   `   s     I*  r   c                      	 d fd	}|S )Nc                 B   t         j                  j                  |      j                  }| j                  j
                  |j                  j                         v s| j                  j                  r | g|d|i|S t        j                  | d       t        d      S )z[
        This method is used to check the employee is project stage manager or not
        r'   rK   r6   r   )r   r7   r8   r>   r   r9   r:   r,   rD   r   r   r   rL   s        r   rE   z;project_stage_delete_permission.<locals>.is_project_manager|   s     &&**h*7??LL%%)9)9)=)=)??||((GHdHXHHHg:;GHHr   r   r   rF   s   `   r   project_stage_delete_permissionrP   z   s     I$ r   c                       fd}|S )Nc                    t         j                  j                  |      }|j                  }| j                  j                  d      s| j                  j                  d      s| j                  j                  |j                  j                         v s| j                  j                  |j                  j                         v s`| j                  j                  |j                  j                         v s0| j                  j                  |j                  j                         v r | gd|iS t        j                  | d       t        d      S )zQ
        This method is used to check the employee is task member or not
        r'   rJ   r)   task_idr6   r   )r   r7   r8   r>   r   r   r9   r+   r,   r4   r:   r;   r   r   r   )r    rS   r/   r>   r   r!   r   s       r   is_task_memberz.task_update_permission.<locals>.is_task_member   s    ||7+,, LL!!"78||$$%=>||((D,>,>,B,B,DD||((D,=,=,A,A,CC||((G,<,<,@,@,BB||((GOO,?,?,AAGFdFGFvFFg:;GHHr   r   )r!   r   r   rT   s   ``` r   task_update_permissionrU      s    I( r   c                       fd}|S )Nc                    t         j                  j                  |      }|j                  }| j                  j
                  s`| j                  j                  |j                  j                         v s0| j                  j                  |j                  j                         v r
 | |      S t        j                  | d       t        d      S )zR
        This method is used to check the employee is task manager or not
        r'   )rS   r6   r   )r   r7   r8   r>   r   rD   r9   r+   r,   r:   r   r   r   )r    rS   r/   r>   r!   s       r   is_task_managerz/task_delete_permission.<locals>.is_task_manager   s     ||7+,, LL%%||((D,>,>,B,B,DD||((G,<,<,@,@,BBGW55g:;GHHr   r   )r!   r   r   rX   s   `   r   task_delete_permissionrY      s    I" r   r   )django.contribr   django.httpr   project.methodsr   r   r   r   modelsr
   r   r   decorator_with_argumentsr$   rA   rG   rM   rP   rU   rY   r   r   r   <module>r_      s    # $  0 /   (    >  ,    2  ,  0  r   