Ë
    ’÷@iÊ
  ã                   óV   — d Z ddlmZ ddlmZ ddlmZ  G d„ dej                  «      Zy)z1
Database models for cronjob execution tracking.
é    )Úmodels)Útimezone)Ú	timedeltac                   ó  — e Zd ZdZ ej
                  ddd¬«      Z ej
                  ddd¬«      Z ej                  dd¬«      Z	 ej                  dd¬	«      Z
 ej                  d
d¬«      Z ej                  d
¬«      Z ej                  d¬«      Z ej
                  dd¬«      Z ej"                  dd¬«      Z ej&                  d¬«      Z ej&                  ddd¬«      Z G d„ d«      Zd„ Zed„ «       Zdd„Zdd„Zd„ Zy)ÚCronExecutionz!Tracks cronjob execution history.é2   TzUnique task code)Ú
max_lengthÚdb_indexÚ	help_textéd   zHuman-readable task name)Úauto_now_addr
   )ÚnullÚblankF)Údefaultr
   )r   )r   )r	   r   z$Date for which the task was executed)r
   r   r   zProcess ID for timeout handling)r   r   r   c                   ó¾   — e Zd ZdZ ej
                  ddg¬«       ej
                  g d¢¬«       ej
                  dg¬«       ej
                  dg¬«      gZdgZd	Zd
Z	y)úCronExecution.MetaÚcron_executionÚ	task_codeÚexecution_date)Úfields)r   Úsuccessr   Ú	completedÚstartedz-startedzCron ExecutionzCron ExecutionsN)
Ú__name__Ú
__module__Ú__qualname__Údb_tabler   ÚIndexÚindexesÚorderingÚverbose_nameÚverbose_name_plural© ó    úO/home/cursorai/projects/django-cronjob-utils/src/django_cronjob_utils/models.pyÚMetar      se   „ Ø#ˆàˆF�L‰L Ð.>Ð ?Ô@ØˆF�L‰LÒ JÔKØˆF�L‰L  Ô.ØˆF�L‰L  Ô,ð	
ˆð �<ˆØ'ˆØ/Ñr$   r&   c                 ó”   — | j                   rdn| j                  rdnd}|› d| j                  › d| j                  › d| j                  › �S )Nu   âœ“u   âœ—u   â†’Ú z (z) - )r   r   Ú	task_namer   r   )ÚselfÚstatuss     r%   Ú__str__zCronExecution.__str__%   sE   € ØŸ,š,‘°T·^²^©EÈˆØ�˜˜4Ÿ>™>Ð*¨"¨T¯^©^Ð,<¸DÀ×ATÑATÐ@UÐVÐVr$   c                 óø   — | j                   r3| j                  r'| j                   | j                  z
  j                  «       S | j                  s/t	        j
                  «       | j                  z
  j                  «       S y)z(Calculate execution duration in seconds.N)Úendedr   Útotal_secondsr   r   Únow©r*   s    r%   ÚdurationzCronExecution.duration)   sU   € ð �:Š:˜$Ÿ,š,Ø—J‘J §¡Ñ-×<Ñ<Ó>Ð>Ø�~Š~Ü—L‘L“N T§\¡\Ñ1×@Ñ@ÓBÐBØr$   c                 ó–   — d| _         || _        t        j                  «       | _        || _        || _        | j                  g d¢¬«       y)zMark execution as completed.T)r   r   r.   ÚmessageÚ
error_code©Úupdate_fieldsN)r   r   r   r0   r.   r4   r5   Úsave)r*   r   r4   r5   s       r%   Úmark_completedzCronExecution.mark_completed2   s:   € àˆŒØˆŒÜ—\‘\“^ˆŒ
àˆŒØ$ˆŒØ�	‰	Ò Zˆ	Õ[r$   c                 ó,   — | j                  d||¬«       y)zMark execution as failed.F)r   r4   r5   N)r9   )r*   r4   r5   s      r%   Úmark_failedzCronExecution.mark_failed<   s   € à×Ñ E°7ÀzÐÕRr$   c                 óT   — | xj                   dz  c_         | j                  dg¬«       y)zIncrement retry count.é   Úretry_countr6   N)r>   r8   r1   s    r%   Úincrement_retryzCronExecution.increment_retry@   s#   € à×Ò˜AÑÕØ�	‰	  ˆ	Õ0r$   N)TÚ r@   )r@   r@   )r   r   r   Ú__doc__r   Ú	CharFieldr   r)   ÚDateTimeFieldr   r.   ÚBooleanFieldr   r   Ú	TextFieldr4   r5   Ú	DateFieldr   ÚIntegerFieldr>   Úpidr&   r,   Úpropertyr2   r9   r;   r?   r#   r$   r%   r   r   
   s  „ Ù+à �× Ñ ¨B¸ÐI[Ô\€IØ �× Ñ ¨C¸$ÐJdÔe€IØ"ˆf×"Ñ"°¸tÔD€GØ ˆF× Ñ  d°$Ô7€EØ#�×#Ñ#¨E¸DÔA€IØ!ˆf×!Ñ!¨%Ô0€GØˆf×Ñ TÔ*€GØ!�×!Ñ!¨R°tÔ<€JØ%�V×%Ñ%¨tÐ?eÔf€NØ%�&×%Ñ%¨aÔ0€KØ
ˆ&×
Ñ
 4¨tÐ?`Ô
a€C÷
0ñ 
0òWð ñó ðó\óSó1r$   r   N)	rA   Ú	django.dbr   Údjango.utilsr   Údatetimer   ÚModelr   r#   r$   r%   Ú<module>rN      s%   ðñõ Ý !Ý ô91�F—L‘Lõ 91r$   