a
    6ah )                     @   s>  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mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ G d
d deZG dd deZG dd deZG dd deZG dd de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 )    )serializers)casedetails)ActActSectionDetailsActSubsectionDetailsCheckerCategory)Advocate_for_lokadalatRosterRosterBenchRosterJudgeRosterMatterRosterSession)JRPUser)timezone)transaction)RosterHeadingsRosterSitting)BaseUserSerializerc                   @   s"   e Zd ZG dd dZdd ZdS )RosterBenchSerializerc                   @   s   e Zd ZeZg dZdS )zRosterBenchSerializer.Meta
created_by
updated_by
created_at
updated_atN)__name__
__module____qualname__r
   modelexclude r   r   @E:\Server_2_sachin\app\JRP\backend_erp\cis\serializers\roster.pyMeta   s   r!   c                 C   sX   | j d}|r|jjr|jnd }| jj}t|drB|rB|j|d< |jj	f i |}|S Nrequestr   
contextgetuseris_authenticatedr!   r   hasattridobjectscreateselfvalidated_datar#   current_usermodel_classinstancer   r   r    r,      s    
zRosterBenchSerializer.createNr   r   r   r!   r,   r   r   r   r    r      s   r   c                   @   s"   e Zd ZG dd dZdd ZdS )RosterSessionSerializerc                   @   s   e Zd ZeZg dZdS )zRosterSessionSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r    r!   $   s   r!   c                 C   sX   | j d}|r|jjr|jnd }| jj}t|drB|rB|j|d< |jj	f i |}|S r"   r$   r-   r   r   r    r,   (   s    
zRosterSessionSerializer.createNr3   r   r   r   r    r4   !   s   r4   c                   @   s"   e Zd ZG dd dZdd ZdS )RosterHeadingSerializerc                   @   s   e Zd ZeZg dZdS )zRosterHeadingSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r    r!   6   s   r!   c                 C   sX   | j d}|r|jjr|jnd }| jj}t|drB|rB|j|d< |jj	f i |}|S r"   r$   r-   r   r   r    r,   :   s    
zRosterHeadingSerializer.createNr3   r   r   r   r    r5   3   s   r5   c                   @   s"   e Zd ZG dd dZdd ZdS )RosterSittingSerializerc                   @   s   e Zd ZeZg dZdS )zRosterSittingSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r    r!   H   s   r!   c                 C   sX   | j d}|r|jjr|jnd }| jj}t|drB|rB|j|d< |jj	f i |}|S r"   r$   r-   r   r   r    r,   L   s    
zRosterSittingSerializer.createNr3   r   r   r   r    r6   E   s   r6   c                   @   s*   e Zd ZG dd dZdd Zdd ZdS )AdvocateLokAdalatSerializerc                   @   s   e Zd ZeZg dZdS )z AdvocateLokAdalatSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r    r!   [   s   r!   c                 C   s   | d}| d}| d}tjj|||d }|rBtd|sTtddi|sbtd||krxtddi|t k rtdd	i|S )
Nadvocate	from_dateto_date)r8   Zfrom_date__ltZto_date__gtz=Date range overlaps with an existing entry for this advocate.zAdvocate must be selected.zfrom_date' is required.z+'from_date' must be earlier than 'to_date'.z"'from_date' cannot be in the past.)	r&   r   r+   filterexistsr   ValidationErrorr   now)r.   datar8   r9   r:   existingr   r   r    validate^   s&    





z$AdvocateLokAdalatSerializer.validatec                 C   sX   | j d}|r|jjr|jnd }| jj}t|drB|rB|j|d< |jj	f i |}|S r"   r$   r-   r   r   r    r,      s    
z"AdvocateLokAdalatSerializer.createN)r   r   r   r!   rA   r,   r   r   r   r    r7   X   s   !r7   c                   @   s   e Zd ZG dd dZdS )RosterJudgeSerializerc                   @   s   e Zd ZeZg dZdS )zRosterJudgeSerializer.Meta)judge
judge_typepositionN)r   r   r   r   r   fieldsr   r   r   r    r!      s   r!   Nr   r   r   r!   r   r   r   r    rB      s   rB   c                   @   s   e Zd ZG dd dZdS )RosterMatterSerializerc                   @   s   e Zd ZeZg dZdS )zRosterMatterSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r    r!      s   r!   NrG   r   r   r   r    rH      s   rH   c                   @   s2   e Zd ZedddZedddZG dd dZdS )RosterListSerializerT)many	read_onlyc                   @   s   e Zd ZeZg dZdS )zRosterListSerializer.Metar*   branchbenchbenchno
matter_idsroster_sessionr9   r:   displaycourtnom_f	from_timetotal_casessession
bench_failr   r   judgesmattersNr   r   r   r	   r   rF   r   r   r   r    r!      s   r!   N)r   r   r   rB   rY   rH   rZ   r!   r   r   r   r    rI      s   rI   c                   @   s>   e Zd ZeddZedddZG dd dZej	dd Z
d	S )
RosterSaveSerializerTrJ   F)rJ   requiredc                   @   s   e Zd ZeZg dZdS )zRosterSaveSerializer.MetarL   Nr[   r   r   r   r    r!      s   r!   c                    s   | dg }| dg }t V tjjf i | tj fdd|D  tj fdd|D  W d    n1 s|0    Y   S )NrY   rZ   c                    s   g | ]}t f d  i|qS rosterr   .0rC   r_   r   r    
<listcomp>   s   z/RosterSaveSerializer.create.<locals>.<listcomp>c                    s   g | ]}t f d  i|qS r_   r   rc   matterr_   r   r    rd      s   )	popr   atomicr	   r+   r,   r   bulk_creater   )r.   r/   judges_datamatters_datar   r_   r    r,      s    
&zRosterSaveSerializer.createN)r   r   r   rB   rY   rH   rZ   r!   r   ri   r,   r   r   r   r    r\      s
   
	r\   c                   @   sL   e Zd ZeddZejddZG dd dZe	j
dd Ze	j
dd	 Zd
S )RosterSerializerTr]   )
write_onlyc                   @   s   e Zd ZeZg dZdS )zRosterSerializer.MetarL   Nr[   r   r   r   r    r!      s   r!   c                    s  | dg }| dg }td| t  tjjf i | tj fdd|D  |D ]}td|	d t
jj|	d|	d	|	d
djddd }tjj |	d|	d|	d|	d||	d|	d	|	d
d	 q\W d    n1 s0    Y   S )NrY   rZ   rl   c                    s   g | ]}t f d  i|qS r_   ra   rb   r_   r   r    rd      s   z+RosterSerializer.create.<locals>.<listcomp>zmatter.get(caseNature)
caseNaturesubcodesubcode1subcode2)rp   rq   rr   r*   T)flatcaseType
subheadingbeforeNotBeforeFlag)	r`   caseNature_idcaseType_idsubheading_idrv   CheckerCategory_idrp   rq   rr   )rh   printr   ri   r	   r+   r,   r   rj   r&   r   r;   values_listfirstr   )r.   r/   rk   rl   rg   rz   r   r_   r    r,      s:    


(zRosterSerializer.createc                    s   | dg }| dg }| D ]\}}t || q     j   tj	 fdd|D   j
   tj	 fdd|D   S )NrY   rZ   c                    s   g | ]}t f d  i|qS r_   ra   rb   r2   r   r    rd     s   z+RosterSerializer.update.<locals>.<listcomp>c                    s   g | ]}t f d  i|qS r_   re   rf   r~   r   r    rd     s   )rh   itemssetattrsaverY   alldeleter   r+   rj   rZ   r   )r.   r2   r/   rk   rl   attrvaluer   r~   r    update   s    zRosterSerializer.updateN)r   r   r   rB   rY   r   	JSONFieldrZ   r!   r   ri   r,   r   r   r   r   r    rm      s   
	
(rm   N)%rest_frameworkr   Z
cis.modelsr   "masters.models.admin_master_tablesr   r   r   r   cis.models.rosterr   r	   r
   r   r   r   hrms.models.userr   django.utilsr   	django.dbr   r   r   masters.serializers.baseuserr   r   r4   r5   r6   r7   ModelSerializerrB   rH   rI   r\   rm   r   r   r   r    <module>   s$    5 