U
    ad                     @   sR   d dl Z d dlmZ d dlmZmZ d dlmZmZ e 	e
ZG dd deZdS )    N)BaseCommand)get_job
print_jobs)setup_loggersignalcommandc                       s8   e Zd ZdZdZ fddZdd Zedd Z  Z	S )	CommandzRun a single maintenance job.testc                    sB   t  | |jddd |jddd |jddddd	d
d d S )Napp_name?)nargsjob_namez--listz-l
store_true	list_jobsFz$List all jobs with their description)actiondestdefaulthelp)superadd_argumentsadd_argument)selfparser	__class__ P/tmp/pip-unpacked-wheel-portabvm/django_extensions/management/commands/runjob.pyr      s        zCommand.add_argumentsc                 C   s   |d }|dkrt d|| zt||}W n@ tk
rl   |rPt d|| nt d| t d Y d S X z|   W n" tk
r   t d|| Y nX d S )N	verbosity   zExecuting job: %s (app: %s)z'Error: Job %s for applabel %s not foundzError: Job %s not foundz,Use -l option to view all the available jobsz"ERROR OCCURED IN JOB: %s (APP: %s))loggerinfor   KeyErrorerrorexecute	Exception	exception)r   r	   r   optionsr   Zjobr   r   r   runjob   s    
zCommand.runjobc                 O   sV   |d }|d }|r |s |}d }t t| j |d rDtdddd n| ||| d S )Nr	   r   r   FT)Zonly_scheduledZ	show_whenZshow_appname)r   r   stdoutr   r&   )r   argsr%   r	   r   r   r   r   handle+   s    zCommand.handle)
__name__
__module____qualname__r   Zmissing_args_messager   r&   r   r)   __classcell__r   r   r   r   r      s   	r   )loggingZdjango.core.management.baser   Z!django_extensions.management.jobsr   r   Z"django_extensions.management.utilsr   r   	getLoggerr*   r   r   r   r   r   r   <module>   s
   
