
    oAi~                     V    d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
  G d de      Zy)	z,
Management command for running cron tasks.
    )date)BaseCommandCommandError)TaskRegistry)TaskNotFoundErrorConcurrentExecutionErrorc                   .     e Zd ZdZ fdZd Zd Z xZS )CommandzRun a registered cron taskc                     	 t        |   |i |S # t        $ r$}|j                  |j                  ndcY d}~S d}~ww xY w)z8Override to catch SystemExit and convert to return code.Nr   )superexecute
SystemExitcode)selfargsoptionse	__class__s       j/home/cursorai/projects/django-cronjob-utils/src/django_cronjob_utils/management/commands/run_cron_task.pyr   zCommand.execute   sA    	77?D4G44 	7VV/166Q6	7s    	?:??c                     |j                  dt        d       |j                  dt        d       |j                  ddd	       |j                  d
dd	       y )N	task_namez!Task name (e.g., calc-commission))typehelpr   zExecution date (YYYY-MM-DD)z--force
store_truez#Force execution even if already ran)actionr   z--rerunzRerun even if successful)add_argumentstr)r   parsers     r   add_argumentszCommand.add_arguments   sx    4 	 	

 	. 	 	

 	6 	 	

 	+ 	 	
    c                    |d   }	 t        j                  |d         }	 t	        j
                  |      } |||d   |d         }|j                         }|j                  rO| j                  j                  | j                  j                  d| d	|j                                t        d
      |j                  rO| j                  j                  | j                  j                  d| d|j                                 t        d
      | j                  j                  | j                  j#                  d| d|j                    d|j$                   d             t        d      # t        $ r t        d|d    d      w xY w# t&        $ rM}| j                  j                  | j                  j#                  t)        |                   t        d      d }~wt*        $ rM}| j                  j                  | j                  j                  t)        |                   t        d      d }~wt        $ r  t,        $ r}| j                  j                  | j                  j#                  d| dt)        |                    d
d l}	|	j1                         }
|
r| j                  j                  |
       t        d      d }~ww xY w)Nr   r   zInvalid date format: z. Use YYYY-MM-DD format.forcererun)execution_dater"   r#   zTask 'z' was skipped: r   z' completed successfully: z
' failed: z (Error code: )      zUnexpected error running task 'z': )r   fromisoformat
ValueErrorr   r   get_taskrunskippedstdoutwritestyleWARNINGreasonr   successSUCCESSmessageERROR
error_coder   r   r   	Exception	traceback
format_exc)r   r   r   r   r$   
task_classtaskresultr   r8   traceback_strs              r   handlezCommand.handle,   s   K(		b!//@N<	 %..y9J -g&g&D XXZF~~!!JJ&& ?6==/J
 !m#~~!!JJ&& +EfnnEUV
 !m#!!JJ$$ :fnn5E F((.(9(9':!= !m#O  	b!6wv6GG_`aa	bR ! 	 KK

  Q( Q-' 	 KK

""3q6* Q- 	 
	 KK

  5i[CF8L
 %002M!!-0Q-
	 s>   E) E	F )F	KAGK%AH--KA?KK)__name__
__module____qualname__r   r   r   r>   __classcell__)r   s   @r   r
   r
      s    'D7
,E r    r
   N)__doc__datetimer   django.core.management.baser   r   django_cronjob_utils.registryr   django_cronjob_utils.exceptionsr   r   r
    r    r   <module>rI      s&     A 6 Wf k f r    