o
    uvXjv  ã                   @   sH   d dl mZ d dlmZ d dlmZmZ d dlmZ G dd„ deƒZ	dS )é    )Úapps)ÚBaseCommand)Úget_jobsÚ
print_jobs)Úsignalcommandc                       sL   e Zd ZdZg d¢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                    sF   t 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   )Úsuperr   Úadd_argumentsÚadd_argumentÚjoinÚwhen_options)ÚselfÚparser©Ú	__class__© új/var/www/html/myproject/venv/lib/python3.10/site-packages/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 ]B\}}|||f }|dkr'td|||f ƒ z|ƒ  ¡  W q tyR   dd l}td| ¡ ||f ƒ tdƒ | ¡  td	ƒ Y qw d S )
NÚ	verbosityT)Úonly_scheduledé   zExecuting %s job: %s (app: %s)r   z%ERROR OCCURED IN %s JOB: %s (APP: %s)zSTART TRACEBACK:zEND TRACEBACK
)	r   ÚsortedÚkeysr$   ÚexecuteÚ	ExceptionÚ	tracebackÚupperÚ	print_exc)	r   r   Úoptionsr&   ÚjobsÚapp_nameÚjob_nameÚjobr-   r"   r"   r#   Úrunjobs   s    ûúzCommand.runjobsc              	   C   sX  ddl m} ddlm} |d }|jD ]}zt|d dddgƒ W q ty*   Y qw dd„ t ¡ D ƒD ]u}|d	krOd
 	|j
 d
¡dd… ¡}td||f ƒ |dkr\|jj||d� q4|dkri|jj||d� q4|dkrv|jj||d� q4|dkrƒ|jj||d� q4|dkr�|jj||d� q4|dkr�|jj||d� q4|dkr©|jj||d� q4dS )z Run jobs from the signals r   )Úsignals)Úsettingsr&   z.managementÚ c                 s   s   � | ]	}|j r|j V  qd S )N)Úmodels_module)Ú.0Úappr"   r"   r#   Ú	<genexpr>9   s   € z-Command.runjobs_by_signals.<locals>.<genexpr>r(   Ú.NéÿÿÿÿzSending %s job signal for: %sr   )Úsenderr;   r	   r
   r   r   r   r   )Údjango_extensions.managementr6   Údjango.confr7   ÚINSTALLED_APPSÚ
__import__ÚImportErrorr   Úget_app_configsr   Ú__name__Úrsplitr$   Úrun_minutely_jobsÚsendÚrun_quarter_hourly_jobsÚrun_hourly_jobsÚrun_daily_jobsÚrun_weekly_jobsÚrun_monthly_jobsÚrun_yearly_jobs)r   r   r0   r6   r7   r&   r2   r;   r"   r"   r#   Úrunjobs_by_signals,   s:   
ÿ€ïzCommand.runjobs_by_signalsc                 O   sV   |d }|d rt |dddd� d S || jv r%|  ||¡ |  ||¡ d S |  ¡  d S )Nr   r   T)r'   Ú	show_whenÚshow_appname)r   r   r5   rP   r%   )r   Úargsr0   r   r"   r"   r#   ÚhandleL   s   
zCommand.handle)rF   Ú
__module__Ú__qualname__r   r   r   r%   r5   rP   r   rT   Ú__classcell__r"   r"   r    r#   r   	   s     r   N)
Údjango.appsr   Údjango.core.management.baser   Ú!django_extensions.management.jobsr   r   Ú"django_extensions.management.utilsr   r   r"   r"   r"   r#   Ú<module>   s
   