U
    ad8                     @   s^   d dl Z d dlm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)apps)BaseCommand)get_jobs
print_jobs)setup_loggersignalcommandc                       sV   e Zd ZdZdddddddgZ fd	d
Zdd Zdd Zdd Ze	dd Z
  ZS )Commandz Runs scheduled maintenance jobs.minutelyquarter_hourlyhourlydailyweeklymonthlyyearlyc                    sB   t  | |jdddd| j d |jdddd	d
dd d S )Nwhen?zoptions: %s, )nargshelpz--listz-l
store_true	list_jobsFz$List all jobs with their description)actiondestdefaultr   )superadd_argumentsadd_argumentjoinwhen_options)selfparser	__class__ Q/tmp/pip-unpacked-wheel-portabvm/django_extensions/management/commands/runjobs.pyr      s         zCommand.add_argumentsc                 C   s   t d| jd| jf  d S )Nz%s Please specify: %sr   )printr   r   r   )r   r#   r#   r$   	usage_msg   s    zCommand.usage_msgc              	   C   s   |d }t |dd}t| D ]^\}}|||f }|dkrLtd||| z|   W q  tk
r|   td|| Y q X q d S )N	verbosityT)only_scheduled   zExecuting %s job: %s (app: %s)z"ERROR OCCURED IN JOB: %s (APP: %s))r   sortedkeysloggerinfoexecute	Exception	exception)r   r   optionsr'   jobsapp_nameZjob_nameZjobr#   r#   r$   runjobs    s    zCommand.runjobsc              	   C   sb  ddl m} ddlm} |d }|jD ]2}zt|d dddg W q& tk
rV   Y q&X q&dd t D D ]}|d	krd
	|j
d
dd }td||f  |dkr|jj||d ql|dkr|jj||d ql|dkr|jj||d ql|dkr|jj||d ql|dkr(|jj||d ql|dkrD|jj||d ql|dkrl|jj||d qldS )z Run jobs from the signals r   )signals)settingsr'   z.management c                 s   s   | ]}|j r|j V  qd S )N)Zmodels_module).0appr#   r#   r$   	<genexpr>9   s      z-Command.runjobs_by_signals.<locals>.<genexpr>r)   .NzSending %s job signal for: %sr	   )Zsenderr9   r
   r   r   r   r   r   )Zdjango_extensions.managementr5   Zdjango.confr6   ZINSTALLED_APPS
__import__ImportErrorr   Zget_app_configsr   __name__rsplitr%   Zrun_minutely_jobssendZrun_quarter_hourly_jobsZrun_hourly_jobsZrun_daily_jobsZrun_weekly_jobsZrun_monthly_jobsZrun_yearly_jobs)r   r   r1   r5   r6   r'   r3   r9   r#   r#   r$   runjobs_by_signals,   s4    



zCommand.runjobs_by_signalsc                 O   s^   |d }t t| j |d r.t|dddd n,|| jkrR| || | || n|   d S )Nr   r   T)r(   Z	show_whenZshow_appname)r   r,   stdoutr   r   r4   rB   r&   )r   argsr1   r   r#   r#   r$   handleL   s    
zCommand.handle)r?   
__module____qualname__r   r   r   r&   r4   rB   r   rE   __classcell__r#   r#   r!   r$   r      s    r   )loggingZdjango.appsr   Z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   
