Ë
    Øô@iø  ã                   ó¤   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  ej                  e«       G d„ d	ej                  «      «       Zy
)z-
Django admin integration for cronjob utils.
é    )Úadmin)Úformat_html)Úreverse)Útimezone)Ú	timedelta)ÚCronExecutionc                   óÖ   ‡ — e Zd ZdZg d¢Zg d¢Zg d¢Zg d¢Zdddifd	dd
ifdddiffZd„ Z	de	_
        d„ Zde_
        d„ Zde_
        ˆ fd„Zd„ ZddgZd„ Zde_
        d„ Zde_
        ˆ xZS )ÚCronExecutionAdminz(Admin interface for CronExecution model.)Útask_name_codeÚexecution_dateÚstatus_displayÚstartedÚduration_displayÚretry_countÚ
error_code)ÚsuccessÚ	completedÚ	task_coder   r   )Ú	task_namer   Úmessager   )
r   r   r   Úendedr   r   r   r   Úpidr   zTask InformationÚfields)r   r   r   zExecution Status)r   r   r   r   r   r   r   ÚResults©r   r   c                 ó:   — |j                   › d|j                  › d�S )zDisplay task name and code.z (Ú))r   r   ©ÚselfÚobjs     úN/home/cursorai/projects/django-cronjob-utils/src/django_cronjob_utils/admin.pyr   z!CronExecutionAdmin.task_name_codeG   s   € à—-‘-�  3§=¡= /°Ð3Ð3ó    ÚTaskc                 ót   — |j                   st        d«      S |j                  rt        d«      S t        d«      S )z+Display execution status with color coding.u/   <span style="color: orange;">â†’ Running</span>u.   <span style="color: green;">âœ“ Success</span>u+   <span style="color: red;">âœ— Failed</span>)r   r   r   r   s     r!   r   z!CronExecutionAdmin.status_displayL   sD   € à�}Š}ÜØAóð ð �[Š[ÜØ@óð ô Ø=óð r"   ÚStatusc                 ód   — |j                   }|€y|dk  r|d›d�S |dk  r	|dz  d›d�S |dz  d›d�S )zDisplay execution duration.Ú-é<   z.1fÚsi  ÚmÚh)Úduration)r   r    r,   s      r!   r   z#CronExecutionAdmin.duration_display\   sY   € à—<‘<ˆØÐØà�bŠ=Ø˜s�^ 1Ð%Ð%Ø˜Š_Ø ‘m CÐ(¨Ð*Ð*à ‘o cÐ*¨!Ð,Ð,r"   ÚDurationc                 ó>   •— t         ‰| �  |«      j                  «       S )zOptimize queryset.)ÚsuperÚget_querysetÚselect_related)r   ÚrequestÚ	__class__s     €r!   r0   zCronExecutionAdmin.get_querysetj   s   ø€ ä‰wÑ# GÓ,×;Ñ;Ó=Ð=r"   c                  ó   — y)z-Disable manual creation of execution records.F© )r   r2   s     r!   Úhas_add_permissionz%CronExecutionAdmin.has_add_permissionn   s   € àr"   Úmark_as_successÚmark_as_failedc                 óŠ   — d}|D ]'  }|j                   rŒ|j                  dd¬«       |dz  }Œ) | j                  ||› d�«       y)z'Mark selected executions as successful.r   TzManually marked as success)r   r   é   z# execution(s) marked as successful.N)r   Úmark_completedÚmessage_user©r   r2   ÚquerysetÚcountÚ	executions        r!   r7   z"CronExecutionAdmin.mark_as_successt   sU   € àˆÛ!ˆIØ×&Ó&Ø×(Ñ(°Ð?[Ð(Ô\Ø˜‘
‘ð "ð
 	×ÑØØˆgÐ8Ð9õ	
r"   zMark selected as successfulc                 óŠ   — d}|D ]'  }|j                   rŒ|j                  dd¬«       |dz  }Œ) | j                  ||› d�«       y)z#Mark selected executions as failed.r   zManually marked as failedÚMANUALr   r:   z execution(s) marked as failed.N)r   Úmark_failedr<   r=   s        r!   r8   z!CronExecutionAdmin.mark_as_failed‚   sV   € àˆÛ!ˆIØ×&Ó&Ø×%Ñ%Ð.IÐV^Ð%Ô_Ø˜‘
‘ð "ð
 	×ÑØØˆgÐ4Ð5õ	
r"   zMark selected as failed)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úlist_displayÚlist_filterÚsearch_fieldsÚreadonly_fieldsÚ	fieldsetsr   Úshort_descriptionr   r   r0   r6   Úactionsr7   r8   Ú__classcell__)r3   s   @r!   r
   r
      sÒ   ø„ á2ò€Lò€Kò€Mò€Oð 
ØÐBð
ð 	ð 
Øð ð

ð 
	ð 
ØÐ/ð
ð 	ð€Iò(4ð (.€NÔ$òð (0€NÔ$ò-ð *4ÐÔ&ô>òð !Ð"2Ð3€Gò
ð )F€OÔ%ò
ð (A€N×$Ð$r"   r
   N)rG   Údjango.contribr   Údjango.utils.htmlr   Údjango.urlsr   Údjango.utilsr   Údatetimer   Údjango_cronjob_utils.modelsr   ÚregisterÚ
ModelAdminr
   r5   r"   r!   Ú<module>rX      sP   ðñõ !Ý )Ý Ý !Ý Ý 5ð €‡��Óô@A˜×)Ñ)ó @Aó ñ@Ar"   