
    vg0                     @   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 d dlmZ d d	lmZ d d
l ddlmZ dd
l  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )date)	QueryDict)DjangoFilterBackendstatus)PageNumberPagination)IsAuthenticated)Response)APIView)AssetFilter)*   )AssetCategoryFilterc                   <    e Zd ZegZegZeZd Z	ddZ
d Zd Zd Zy)AssetAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wN)pk)AssetobjectsgetDoesNotExistserializersValidationErrorselfr   es      5/var/www/horilla/horilla_api/api_views/asset/views.py	get_assetzAssetAPIView.get_asset   sF    	1==$$$++!! 	1--a00	1   " AA

ANc                 z   |r1| j                  |      }t        |      }t        |j                        S t	               }t
        j                  j                         }| j                  |j                  |      }|j                  |j                  |      }t        |d      }|j                  |j                        S N)querysetTmany)r   AssetSerializerr
   datar   r   r   allfilterset_classGETpaginate_querysetqsAssetGetAllSerializerget_paginated_response)	r   requestr   asset
serializer	paginatorr#   	filtersetpages	            r   r   zAssetAPIView.get   s    NN2&E(/JJOO,,(*	==$$&((x(H	**9<<A*4d;
//
@@    c                    t        |j                        }|j                         r5|j                          t	        |j                  t
        j                        S t	        |j                  t
        j                        S N)r'   r   )	r&   r'   is_validsaver
   r   HTTP_201_CREATEDerrorsHTTP_400_BAD_REQUESTr   r/   r1   s      r   postzAssetAPIView.post)   sV    $',,7
 OOJOOF4K4KLL
))&2M2MNNr5   c                    | j                  |      }t        ||j                        }|j                         r%|j	                          t        |j                        S t        |j                  t        j                        S r7   )	r   r&   r'   r8   r9   r
   r;   r   r<   )r   r/   r   r0   r1   s        r   putzAssetAPIView.put0   s^    r"$U>
 OOJOO,,
))&2M2MNNr5   c                 x    | j                  |      }|j                          t        t        j                        S Nr   )r   deleter
   r   HTTP_204_NO_CONTENT)r   r/   r   r0   s       r   rC   zAssetAPIView.delete8   s*    r"v99::r5   N)__name__
__module____qualname__r	   permission_classesr   filter_backendsr   r)   r   r   r>   r@   rC    r5   r   r   r      s4    )**+O!O1
AOO;r5   r   c                   <    e Zd ZegZegZeZd Z	ddZ
d Zd Zd Zy)AssetCategoryAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   )AssetCategoryr   r   r   r   r   r   s      r   get_asset_categoryz'AssetCategoryAPIView.get_asset_categoryC   sH    	1 ((,,,33)) 	1--a00	1r    Nc                 z   |r1| j                  |      }t        |      }t        |j                        S t	               }t
        j                  j                         }| j                  |j                  |      }|j                  |j                  |      }t        |d      }|j                  |j                        S r"   )rP   AssetCategorySerializerr
   r'   r   rO   r   r(   r)   r*   r+   r,   r.   )	r   r/   r   asset_categoryr1   r2   r#   r3   r4   s	            r   r   zAssetCategoryAPIView.getI   s    !44R8N0@JJOO,,(*	 ((,,.((x(H	**9<<A,T=
//
@@r5   c                    t        |j                        }|j                         r5|j                          t	        |j                  t
        j                        S t	        |j                  t
        j                        S r7   )	rR   r'   r8   r9   r
   r   r:   r;   r<   r=   s      r   r>   zAssetCategoryAPIView.postU   sV    ,',,?
 OOJOOF4K4KLL
))&2M2MNNr5   c                    | j                  |      }t        ||j                        }|j                         r%|j	                          t        |j                        S t        |j                  t        j                        S r7   )	rP   rR   r'   r8   r9   r
   r;   r   r<   )r   r/   r   rS   r1   s        r   r@   zAssetCategoryAPIView.put\   s`    004,^',,O
 OOJOO,,
))&2M2MNNr5   c                 x    | j                  |      }|j                          t        t        j                        S rB   )rP   rC   r
   r   rD   )r   r/   r   rS   s       r   rC   zAssetCategoryAPIView.deleted   s/    004v99::r5   rE   )rF   rG   rH   r	   rI   r   rJ   r   r)   rP   r   r>   r@   rC   rK   r5   r   rM   rM   >   s4    )**+O)O1
AOO;r5   rM   c                   2    e Zd ZegZd ZddZd Zd Zd Z	y)AssetLotAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   )AssetLotr   r   r   r   r   r   s      r   get_asset_lotzAssetLotAPIView.get_asset_lotm   sH    	1##''2'..$$ 	1--a00	1r    Nc                 ,   |r1| j                  |      }t        |      }t        |j                        S t	               }t
        j                  j                         }|j                  ||      }t        |d      }|j                  |j                        S NTr$   )
r[   AssetLotSerializerr
   r'   r   rZ   r   r(   r+   r.   )r   r/   r   	asset_lotr1   r2   assetsr4   s           r   r   zAssetLotAPIView.gets   s}    **2.I+I6JJOO,,(*	!!%%'**67;'48
//
@@r5   c                    t        |j                        }|j                         r5|j                          t	        |j                  t
        j                        S t	        |j                  t
        j                        S r7   )	r^   r'   r8   r9   r
   r   r:   r;   r<   r=   s      r   r>   zAssetLotAPIView.post~   sV    'W\\:
 OOJOOF4K4KLL
))&2M2MNNr5   c                    | j                  |      }t        ||j                        }|j                         r%|j	                          t        |j                        S t        |j                  t        j                        S r7   )	r[   r^   r'   r8   r9   r
   r;   r   r<   )r   r/   r   r_   r1   s        r   r@   zAssetLotAPIView.put   s`    &&r*	'	E
 OOJOO,,
))&2M2MNNr5   c                 x    | j                  |      }|j                          t        t        j                        S rB   )r[   rC   r
   r   rD   )r   r/   r   r_   s       r   rC   zAssetLotAPIView.delete   s/    &&r*	v99::r5   rE   )
rF   rG   rH   r	   rI   r[   r   r>   r@   rC   rK   r5   r   rX   rX   j   '    )*1	AOO;r5   rX   c                   2    e Zd ZegZd ZddZd Zd Zd Z	y)AssetAllocationAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   AssetAssignmentr   r   r   r   r   r   s      r   get_asset_assignmentz+AssetAllocationAPIView.get_asset_assignment   H    	1"**..".55++ 	1--a00	1r    Nc                 ,   |r1| j                  |      }t        |      }t        |j                        S t	               }t
        j                  j                         }|j                  ||      }t        |d      }|j                  |j                        S r]   )
rj   AssetAssignmentGetSerializerr
   r'   r   ri   r   r(   r+   r.   )r   r/   r   asset_assignmentr1   r2   r`   r4   s           r   r   zAssetAllocationAPIView.get   s    #88<56FGJJOO,,(*	 ((,,.**67;1$TB
//
@@r5   c                    t        |j                        }|j                         r5|j                          t	        |j                  t
        j                        S t	        |j                  t
        j                        S r7   )	AssetAssignmentSerializerr'   r8   r9   r
   r   r:   r;   r<   r=   s      r   r>   zAssetAllocationAPIView.post   sV    .GLLA
 OOJOOF4K4KLL
))&2M2MNNr5   c                    | j                  |      }t        ||j                        }|j                         r%|j	                          t        |j                        S t        |j                  t        j                        S r7   )	rj   rp   r'   r8   r9   r
   r;   r   r<   )r   r/   r   rn   r1   s        r   r@   zAssetAllocationAPIView.put   sb    44R8./?gllS
 OOJOO,,
))&2M2MNNr5   c                 x    | j                  |      }|j                          t        t        j                        S rB   )rj   rC   r
   r   rD   )r   r/   r   rn   s       r   rC   zAssetAllocationAPIView.delete   s0    44R8!v99::r5   rE   )
rF   rG   rH   r	   rI   rj   r   r>   r@   rC   rK   r5   r   rf   rf      rd   r5   rf   c                   2    e Zd ZegZd ZddZd Zd Zd Z	y)AssetRequestAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   AssetRequestr   r   r   r   r   r   s      r   get_asset_requestz%AssetRequestAPIView.get_asset_request   H    	1''++r+22(( 	1--a00	1r    Nc                 J   |r1| j                  |      }t        |      }t        |j                        S t	               }t
        j                  j                         j                  d      }|j                  ||      }t        |d      }|j                  |j                        S )Nz-idTr$   )rx   AssetRequestGetSerializerr
   r'   r   rw   r   r(   order_byr+   r.   )r   r/   r   asset_requestr1   r2   r`   r4   s           r   r   zAssetRequestAPIView.get   s     2226M2=AJJOO,,(*	%%))+44U;**67;.t$?
//
@@r5   c                    t        |j                        }|j                         r5|j                          t	        |j                  t
        j                        S t	        |j                  t
        j                        S r7   )	AssetRequestSerializerr'   r8   r9   r
   r   r:   r;   r<   r=   s      r   r>   zAssetRequestAPIView.post   sV    +>
 OOJOOF4K4KLL
))&2M2MNNr5   c                    | j                  |      }t        ||j                        }|j                         r%|j	                          t        |j                        S t        |j                  t        j                        S r7   )	rx   r   r'   r8   r9   r
   r;   r   r<   )r   r/   r   r}   r1   s        r   r@   zAssetRequestAPIView.put   s`    ..r2+MM
 OOJOO,,
))&2M2MNNr5   c                 x    | j                  |      }|j                          t        t        j                        S rB   )rx   rC   r
   r   rD   r   r/   r   r}   s       r   rC   zAssetRequestAPIView.delete   s/    ..r2v99::r5   rE   )
rF   rG   rH   r	   rI   rx   r   r>   r@   rC   rK   r5   r   rt   rt      rd   r5   rt   c                       e Zd ZegZd Zd Zy)AssetRejectAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   rv   r   s      r   rx   z$AssetRejectAPIView.get_asset_request   ry   r    c                     | j                  |      }|j                  dk(  r#d|_        |j                          t        d      S t        j                  ddi      )N	RequestedRejected   r   errorAccess Denied..)rx   asset_request_statusr9   r
   r   r   r   s       r   r@   zAssetRejectAPIView.put   sV    ..r2--<1;M. 3''))74E*FGGr5   NrF   rG   rH   r	   rI   rx   r@   rK   r5   r   r   r      s    )*1Hr5   r   c                       e Zd ZegZd Zd Zy)AssetApproveAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   rv   r   s      r   rx   z%AssetApproveAPIView.get_asset_request   ry   r    c                    | j                  |      }|j                  dk(  r|j                  }t        |t              r|j                         }|j                  j                  |d<   |j                  j                  j                  |d<   t        |d|i      }|j                         rm|j                          t        j                  j                  |d         }d|_        |j                          d	|_        |j                          t#        d
      S t#        |j$                  t&        j(                        S t*        j-                  ddi      )Nr   assigned_to_employee_idassigned_by_employee_idr}   )r'   contextasset_ididzIn useApproved   r   r   r   )rx   r   r'   
isinstancer   dictrequested_employee_idr   useremployee_getAssetApproveSerializerr8   r9   r   r   r   asset_statusr
   r;   r   r<   r   r   )r   r/   r   r}   r'   r1   r   s          r   r@   zAssetApproveAPIView.put   s   ..r2--<<<D$	*yy{.;.Q.Q.T.TD*+.5ll.G.G.J.JD*+/O]#CJ ""$! ==,,Z0@,A(0%5?2""$s++J--f6Q6QRR))74E*FGGr5   Nr   rK   r5   r   r   r      s    )*1Hr5   r   c                       e Zd ZegZd Zd Zy)AssetReturnAPIViewc                     	 t         j                  j                  |      S # t         j                  $ r}t        j                  |      d }~ww xY wr   rh   r   s      r   rj   z'AssetReturnAPIView.get_asset_assignment  rk   r    c                    | j                  |      }|j                  j                  d      rt        ||j                        }|j                         r9|j                  j                  d      D cg c]"  }t        j                  j                  |      $ }}|j                         }|j                  j                  |       |j                  dk(  r1t        j                  j                  |      j!                  d       n0t        j                  j                  |      j!                  d	       t"        j                  j                  |j$                        j!                  t'        j(                         
       t+        d      S t+        |j,                  t.        j0                        S t"        j                  j                  |      j!                  d       t+        d      S c c}w )Nzapp_name.change_mymodel)instancer'   image)r   Healthyr   	Available)r   zNot-Available)return_dater   r   T)return_request)rj   r   has_permAssetReturnSerializerr'   r8   getlistReturnImagesr   creater9   return_imagessetreturn_statusr   filterupdateri   r   r   todayr
   r;   r   r<   )r   r/   r   rn   r1   r   imagesasset_returns           r   r@   zAssetReturnAPIView.put   s   44R8<<  !:;.)J ""$ ")!5!5g!> !((//e/<   *0**..v6--:MM((B(/66K6PMM((B(/66O6T''..,//.BII $

 J   s++J--f6Q6QRR##**b*1888M3''#s   3'G0N)rF   rG   rH   r	   rI   rj   r@   rK   r5   r   r   r     s    )*1(r5   r   N)datetimer   django.httpr   django_filters.rest_frameworkr   rest_frameworkr   rest_framework.paginationr   rest_framework.permissionsr	   rest_framework.responser
   rest_framework.viewsr   asset.filtersr   asset.modelsapi_filters.asset.filtersr   !api_serializers.asset.serializersr   rM   rX   rf   rt   r   r   r   rK   r5   r   <module>r      s     ! = ! : 6 , ( %  < 2);7 );X);7 );X&;g &;R&;W &;R&;' &;RH H$H' H@!( !(r5   