a
    $h=#                     @   sX  d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d dlmZ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$m%Z%m&Z& G dd dej'Z(G dd dej'Z)G dd dej'Z*G dd dej'Z+G dd dej'Z,G dd dej'Z-dS )    )Q)Advocate_for_lokadalatRoster)AdvocateLokAdalatSerializerRosterBenchSerializerRosterHeadingSerializerRosterListSerializerRosterSerializerRosterSessionSerializerRosterSittingSerializer)viewsetspermissions)openapi)swagger_auto_schema)genericsstatus)actionResponse)Advocate)now)AdvocateDetailSerializer)transaction)RosterBenchRosterHeadingsRosterSessionRosterSittingc                   @   sj   e Zd Zej dZeZ	eZ
dd Zdd Zeddgdd	eejd
ejdejdgddd ZdS )RosterBenchViewSet-created_atc                 C   s   |   dS z3 Set the created_by user when creating a new City. Nsaveself
serializer r%   :E:\Server_2_sachin\app\JRP\backend_erp\cis\views\roster.pyperform_create   s    z!RosterBenchViewSet.perform_createc                 C   s   |   dS z/ Set the updated_by user when updating a City. Nr    r"   r%   r%   r&   perform_update"   s    z!RosterBenchViewSet.perform_updateFGETzGet Roster Bench By Bench Iddetailmethodsnamebench_idzbench_id Query Param)descriptiontype)manual_parametersc              
   C   s   | j jd}t|gs*tdditjdS zRtjj	|d}|sRtdditj
dW S t|dd}d	d
 |jD }t|tjdW S  ty } z$tdt|dtjdW  Y d }~S d }~0 0 d S )Nr/   errorz+Missing required query parameters: bench_idr   )r/   zNo matching record found.T)manyc                 S   s   g | ]}|d  |d dqS )idbench_nor6   r.   r%   .0itemr%   r%   r&   
<listcomp>K       z@RosterBenchViewSet.get_roster_bench_by_bench.<locals>.<listcomp>zAn unexpected error occurred.)r3   details)requestquery_paramsgetallr   r   HTTP_400_BAD_REQUESTr   objectsfilterHTTP_404_NOT_FOUNDr   dataHTTP_200_OK	ExceptionstrHTTP_500_INTERNAL_SERVER_ERROR)r#   r?   r/   Zroster_benchr$   filtered_dataer%   r%   r&   get_roster_bench_by_bench'   s.    
z,RosterBenchViewSet.get_roster_bench_by_benchN)__name__
__module____qualname__r   rD   rB   order_byquerysetr   default_serializer_classserializer_classr'   r)   r   r   r   	ParameterIN_QUERYTYPE_INTEGERrN   r%   r%   r%   r&   r      s    r   c                   @   sL   e Zd Zej dZeZ	eZ
dd Zdd Zeddgdd	d
d ZdS )RosterSessionViewSetr   c                 C   s   |   dS r   r    r"   r%   r%   r&   r'   Z   s    z#RosterSessionViewSet.perform_createc                 C   s   |   dS r(   r    r"   r%   r%   r&   r)   ^   s    z#RosterSessionViewSet.perform_updateFr*   DDL Listr+   c                 O   s2   t j }| j|ddd}dd |jD }t|S )NT	read_onlyr5   c                 S   s   g | ]}|d  |d dqS r6   titler8   r%   r9   r%   r%   r&   r<   i   r=   z,RosterSessionViewSet.ddl.<locals>.<listcomp>)r   rD   rB   rT   rG   r   r#   r?   argskwargs	data_listdata_list_serializrrL   r%   r%   r&   ddlb   s    
zRosterSessionViewSet.ddlN)rO   rP   rQ   r   rD   rB   rR   rS   r
   rT   rU   r'   r)   r   rd   r%   r%   r%   r&   rY   T   s   rY   c                   @   sL   e Zd Zej dZeZ	eZ
dd Zdd Zeddgdd	d
d ZdS )RosterHeadingViewSetr   c                 C   s   |   dS r   r    r"   r%   r%   r&   r'   q   s    z#RosterHeadingViewSet.perform_createc                 C   s   |   dS r(   r    r"   r%   r%   r&   r)   u   s    z#RosterHeadingViewSet.perform_updateFr*   rZ   r+   c                 O   s2   t j }| j|ddd}dd |jD }t|S )NTr[   c                 S   s   g | ]}|d  |d dqS r]   r%   r9   r%   r%   r&   r<      r=   z,RosterHeadingViewSet.ddl.<locals>.<listcomp>)r   rD   rB   rT   rG   r   r_   r%   r%   r&   rd   y   s    
zRosterHeadingViewSet.ddlN)rO   rP   rQ   r   rD   rB   rR   rS   r   rT   rU   r'   r)   r   rd   r%   r%   r%   r&   re   k   s   re   c                   @   sL   e Zd Zej dZeZ	eZ
dd Zdd Zeddgdd	d
d ZdS )RosterSittingViewSetr   c                 C   s   |   dS r   r    r"   r%   r%   r&   r'      s    z#RosterSittingViewSet.perform_createc                 C   s   |   dS r(   r    r"   r%   r%   r&   r)      s    z#RosterSittingViewSet.perform_updateFr*   rZ   r+   c                 O   s2   t j }| j|ddd}dd |jD }t|S )NTr[   c                 S   s   g | ]}|d  |d dqS r]   r%   r9   r%   r%   r&   r<      r=   z,RosterSittingViewSet.ddl.<locals>.<listcomp>)r   rD   rB   rT   rG   r   r_   r%   r%   r&   rd      s    
zRosterSittingViewSet.ddlN)rO   rP   rQ   r   rD   rB   rR   rS   r   rT   rU   r'   r)   r   rd   r%   r%   r%   r&   rf      s   rf   c                   @   sL   e Zd Zej dZeZ	eZ
dd Zdd Zeddgdd	d
d ZdS )AdvocateLokAdalatgViewSetr   c                 C   s   |   dS r   r    r"   r%   r%   r&   r'      s    z(AdvocateLokAdalatgViewSet.perform_createc                 C   s   |   dS r(   r    r"   r%   r%   r&   r)      s    z(AdvocateLokAdalatgViewSet.perform_updateFr*   rZ   r+   c                 O   sL   t  }tjjd||d }t|ddd}t|j dd |jD }t|S )NY)Zroster_advocate__displayZroster_advocate__from_date__lteZroster_advocate__to_date__gteTr[   c                 S   s   g | ]}|d  |d dqS )r6   r.   r8   r%   r9   r%   r%   r&   r<      r=   z1AdvocateLokAdalatgViewSet.ddl.<locals>.<listcomp>)	r   r   rD   rE   distinctr   printrG   r   )r#   r?   r`   ra   current_timeZ	advocatesrc   rL   r%   r%   r&   rd      s    

zAdvocateLokAdalatgViewSet.ddlN)rO   rP   rQ   r   rD   rB   rR   rS   r   rT   rU   r'   r)   r   rd   r%   r%   r%   r&   rg      s   rg   c                   @   sL   e Zd Zej ZeZee	ee	dZ
eZdd Zeddgdddd	 Zd
S )RosterViewSet)updateretrievezget item by id createlistc              
   O   s   t d|j | j|jd}|jdd z6t  | | W d    n1 sP0    Y  W n: ty } z"tdt	|it
jdW  Y d }~S d }~0 0 | |j}t|jt
j|dS )Nzrequest.data)rG   T)raise_exceptionr,   r4   )r   headers)rj   rG   get_serializeris_validr   atomicr'   rI   r   rJ   r   rC   get_success_headersHTTP_201_CREATED)r#   r?   r`   ra   r$   rM   rq   r%   r%   r&   create   s    
,,zRosterViewSet.createFrA   rZ   r+   c                 C   s   t ddiS )Nmessagez0Optional dropdown list data can be handled here.r   )r#   r?   r%   r%   r&   rd      s    zRosterViewSet.ddlN)rO   rP   rQ   r   rD   rB   rS   r	   rU   r   serializer_classesrT   rw   r   rd   r%   r%   r%   r&   rl      s   
rl   N).django.db.modelsr   Zcis.models.rosterr   r   Zcis.serializers.rosterr   r   r   r   r	   r
   r   rest_frameworkr   r   drf_yasgr   Zdrf_yasg.utilsr   r   r   rest_framework.decoratorsr   rest_framework.responser   hrms.models.userr   django.utils.timezoner   hrms.serializers.userr   	django.dbr   "masters.models.admin_master_tablesr   r   r   r   ModelViewSetr   rY   re   rf   rg   rl   r%   r%   r%   r&   <module>   s(   $<%