
    f%j                     L   d dl m Z  d dlmZ d dlmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZ d dlmZ  edd	g
          ZdddddddZdefdZd Zdededz  fdZd0dededededededz  defd Zded!ed"edefd#Ze                    d$          d ee          fd%edz  defd&            Ze                     d$           ee          fdedefd'            Z!e                    d(           ee          fd)edefd*            Z"e#                    d(           ee          fd)ededefd+            Z$e                     d,           ee          fd)edefd-            Z%e                     d.           ee          fd)ededefd/            Z&dS )1    )datetime)Any)	APIRouterDependsHTTPException)Sessionselect)get_session)ActivityEventCreativeChangeMetadataVersion	PostDraft
VideoAssetnow_utc)apply_draft_patchz/post-draftszpost-drafts)prefixtagstitledescriptioncaptionhashtagsschedule)r   r   r   hashtags_json	tags_jsonscheduled_atdc                 .    |                      d          S )Njsonmode
model_dump)r   s    O/home/agent/projects/AutoShorts_Dashboard/backend/app/api/routes/post_drafts.py	serializer$      s    <<V<$$$    c                 "   | dv rd S t          | t                    r| S t          | t                    rN|                     dd          }	 t          j        |          S # t
          $ r}t          dd          |d }~ww xY wt          dd          )NN Zz+00:00i  z!scheduled_at must be ISO datetime)
isinstancer   strreplacefromisoformat
ValueErrorr   )value
normalizedexcs      r#   parse_optional_datetimer2      s    
t%"" % S]]311
	S)*555 	S 	S 	S%HIIsR	S
@
A
AAs   
A 
A>(A99A>r/   returnNc                     | dv rd S t          | t                    rd                    d | D                       S t          | t                    r|                                 S t          |           S )Nr'    c              3   4   K   | ]}t          |          V  d S N)r+   ).0items     r#   	<genexpr>z_text.<locals>.<genexpr>-   s(      44dD		444444r%   )r*   listjoinr   	isoformatr+   )r/   s    r#   _textr>   )   ss    
t% 5xx44e444444%"" !   u::r%   creatorsessionentity_type	entity_id
event_typelabelpayload
created_byc           
      Z    |                      t          |||||pi |                     d S )N)rA   rB   rC   rD   payload_jsonrF   )addr   )r@   rA   rB   rC   rD   rE   rF   s          r#   add_activityrJ   3   sI    KK]       r%   draftdiffc                 2   |                     d          p|                     d          }|                     d          }|                     d          p|                     d          pd}|                                D ]\  }}t                               |          }	|	s"|                     t	          |j        |j        d |	t          |                     d                    t          |                     d                    |p|	                                 d	||d

  
                   |rct          d |D                       sL|                     t	          |j        |j        |                     d          pd|||d                     d S d S d S )Nchange_note
changeNote
hypothesis	edited_byrF   r?   beforeafterz edited on review pagemetadata_version)
video_asset_idpost_draft_idtopic_idchange_typebefore_text
after_textrN   rP   rF   sourcec              3   J   K   | ]}t                               |          V  d S r7   )FIELD_TO_CHANGE_TYPEget)r8   fields     r#   r:   z'add_creative_changes.<locals>.<genexpr>R   s1      QQ5377>>QQQQQQr%   rX   othermanual)rU   rV   rX   rN   rP   rF   r[   )
r^   itemsr]   rI   r   rU   idr>   r   any)
r@   rK   rL   rE   rN   rP   rF   r_   changerX   s
             r#   add_creative_changesrf   >   s   ++m,,IL0I0IK\**J[))SW[[-F-FS)J  v*..u55 	N /(#fjj2233VZZ0011#U+*;*;*=*='U'U'U!!%
 
 
 	 	 	 	  	3QQDQQQQQ 	N /(M22=g#!!
 
 
 	 	 	 	 		 	 	 	r%   r(   providerc                 8   t          t                    }| r#|                    t          j        | k              }dd |                    |                    t          j                                                                                            D             iS )Nrb   c                 ,    g | ]}t          |          S  )r$   )r8   xs     r#   
<listcomp>zlist_drafts.<locals>.<listcomp>c   s    hhhqillhhhr%   )	r	   r   whererg   execorder_by
created_atdescall)rg   r@   qs      r#   list_draftsrt   ^   s}    yA 4GGI&(233hhGLLIDXD]D]D_D_9`9`,a,a,e,e,g,ghhhiir%   c                    t          di | }|                    |           t          |d|j        dddt	          |j                  i           |                                 |                    |           t          |          S )N
post_draftcreatedzDraft createdrg   rj   )	r   rI   rJ   rc   r+   rg   commitrefreshr$   )rE   r@   rK   s      r#   create_draftrz   f   s        EKK,)_z[^_d_m[n[nNopppNNOOEUr%   z/{draft_id}draft_idc                 ,   |                     t          |           }|st          dd          |                    t	          t
                                        t
          j        | k                                  t
          j	        
                                                                                    }|                    t	          t                                        t          j        | k                                  t          j        
                                                                                    }|                    t	          t                                        t          j        dk    t          j        | k                                  t          j        
                                                                                    }t%          |          }d |D             |d<   d |D             |d<   d |D             |d	<   |S )
N  Draft not foundrv   c                 :    g | ]}|                     d           S r   r   r!   )r8   vs     r#   rl   zget_draft.<locals>.<listcomp>y   &    DDDa&11DDDr%   versionsc                 :    g | ]}|                     d           S r   r!   )r8   cs     r#   rl   zget_draft.<locals>.<listcomp>z   s&    BBBQq|||00BBBr%   changesc                 :    g | ]}|                     d           S r   r!   )r8   as     r#   rl   zget_draft.<locals>.<listcomp>{   r   r%   activity)r^   r   r   rn   r	   r   rm   rV   ro   	edited_atrq   rr   r   
changed_atr   rA   rB   rp   r$   )r{   r@   rK   r   r   r   datas          r#   	get_draftr   p   s=   KK	8,,E 4C!2333||F?3399/:W[c:cddmmn}  oH  oM  oM  oO  oO  P  P  Q  Q  U  U  W  WHll6.11778TX`8`aajjky  lE  lJ  lJ  lL  lL  M  M  N  N  R  R  T  TG||F=11778QUa8acpcz  G  dG  H  H  Q  Q  R_  Rj  Ro  Ro  Rq  Rq  r  r  s  s  w  w  y  yHUDDD8DDDDBB'BBBDODD8DDDDKr%   c                     |                     t          |           }|st          dd          t          |||d           |                                 |                    |           t          |          S )Nr}   r~   T)invalidate_uploads)r^   r   r   r   rx   ry   r$   )r{   rE   r@   rK   s       r#   patch_draftr      su    KK	8,,E 4C!2333gug$GGGGNNOOEUr%   z/{draft_id}/approvec                    |                     t          |           }|st          dd          d|_        t	                      |_        t	                      |_        |                    |           t          |d|j	        dddt          |j                  i           t          |d|j        ddd|j	        i           |                                 d	|j        d
S )Nr}   r~   approvedrv   zApproved for private uploadrg   videorV   Tokstatus)r^   r   r   r   r   approved_at
updated_atrI   rJ   rc   r+   rg   rU   rx   )r{   r@   rK   s      r#   approver      s    KK	8,,E 4C!2333EL		EyyEKK,*>[^hjmnsn|j}j}]~'5#7Ebetv{v~d  A  A  ANN%,///r%   z/{draft_id}/schedulec                    |                     t          |           }|st          dd          |j        }t	          |                     d                    |_        d|_        t                      |_        |                    |           |                    t          |j
        |j        dt          |          t          |j                  |                     d          pdd	                     t          |d
|j        dddt          |j                  i           t          |d|j
        dd|j        t          |j                  d           |                                 d|j        dS )Nr}   r~   r   	scheduledr   rN   zSchedule selectedrT   )rU   rV   rX   rY   rZ   rN   r[   rv   	Scheduledr   )rV   r   Tr   )r^   r   r   r   r2   r   r   r   rI   r   rU   rc   r>   rJ   rx   )r{   rE   r@   rK   rR   s        r#   r   r      s   KK	8,,E 4C!2333F0^1L1LMMEELyyEKKKK+h&MM+,,KK..E2E!      ,+{^]bchcu]v]vLwxxx'5#7kejem  @E  FK  FX  @Y  @Y  TZ  TZ  [  [  [NN%,///r%   )Nr?   )'r   typingr   fastapir   r   r   sqlmodelr   r	   app.api.depsr
   app.models.corer   r   r   r   r   r   !app.services.post_draft_mutationsr   routerr]   r$   r2   r+   r>   dictrJ   rf   r^   rt   postrz   r   patchr   r   r   rj   r%   r#   <module>r      s               5 5 5 5 5 5 5 5 5 5 $ $ $ $ $ $ $ $ $ $ $ $ $ $ j j j j j j j j j j j j j j j j ? ? ? ? ? ?	.	?	?	?    % % % % %B B B t     '   QT ]` korvkv   LO    ' ) 4 RV    @ B'+@T@T j j#* jg j j j j R3:7;3G3G  $      M070D0D   g     mAHAUAU  #  w     "##.5gk.B.B 0 0c 0G 0 0 0 $#0 #$$>Egk>R>R 0 0s 0T 0G 0 0 0 %$0 0 0r%   