
     h                     \    d dl m Z mZmZmZ d dl d dlmZ  G d dej                        Zy)    )datetime	timedeltatimetimezone)*)cmf_calendar_dayc                   0    e Zd ZdZdedefdZdedefdZy)CmfCalendarDayTminutes_shiftreturnc                 ~   |dk  ry t        t        t        | j                  j                   xs d                  }|| j                  kD  ry t        |      }| j
                  D ]  }|\  }}t        j                  | j                  j                  t        j                  |            }t        j                  | j                  j                  t        j                  |            }||cxk(  rdk(  r$n n!t        | j                  j                        }	n||z
  }	|	|k  r||	z  }||z   j                  |      c S  y )Nr   seconds)minutesz00:00tzinfo)r   r   intparentinterval_total_minutesinterval_jsonr   combinedatevaluer   fromisoformatreplace)
selfr   tzminutes_shift_deltaintervalstartend
start_timeend_timeinterval_deltas
             #./common/models/cmf_calendar_day.pyget_shifted_work_timez$CmfCalendarDay.get_shifted_work_time
   s   1iDKK,@,@,EA(FGH4666'>** 	MH!JE3!))$))//4;M;Me;TUJ''		9K9KC9PQH&w&!*43N3N3T3T!U!)J!6 33#~5#"%88AAALL	M    target_timec                    | j                   j                  |j                         k7  ry t        t        t	        | j
                  j                  xs d                  }t               }| j                  D ]  }t        j                  | j                   j                  t        j                  |d               j                  |      }t        j                  | j                   j                  t        j                  |d               j                  |      }||kD  s||k  r||z
  }n||z
  }||z  } t	        |j                         dz        S )Nr   r   r      <   )r   r   r   r   r   r   r   r   r   r   r   r   total_seconds)r   r(   r   shiftr   r"   r#   interval_shifts           r%   get_work_time_shiftz"CmfCalendarDay.get_work_time_shift$   s   99??k..00iDKK,@,@,EA(FGH** 
	(H!))$))//4;M;MhWXk;Z[cckmcnJ''		9K9KHUVK9XYaaikalHZ')%0:%=N%-
%:N'
	( 5&&(B.//r'   N)__name__
__module____qualname__	api_allowr   r   r&   r/    r'   r%   r
   r
      s0    IM3 M8 M40x 0C 0r'   r
   N)r   r   r   r   cmf.includecommon.fieldsr   r
   r4   r'   r%   <module>r7      s$    8 8  *10%44 10r'   