
    iO                         d dl 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 d dlmZ  ed	          Zd
dgZdedefdZdedefdZd Z eej                  Zd Zd ZdS )    N)datetime)Path)ZoneInfo)BackgroundScheduler)CronTrigger)settings)
get_logger	schedulersuccessfailed	subfolderreturnc                 b    | dk    rt           j        S | dk    rt           j        S t           j        S )Nr   r   )r   "HANDWRITING_RETENTION_DAYS_SUCCESS!HANDWRITING_RETENTION_DAYS_FAILED)r   s    4/code/app/scheduler/cleanup_preserved_handwriting.pyget_retention_daysr      s3    I::H9966    folder_pathretention_daysc           	         t          j        t          t          j                                                            }d}d}d}|                                 D ]}|                                s	 t          j        |j	        d                                          }n# t          $ r |dz  }Y Vw xY w||z
  j        }||k    rt          j        |d           |dz  }|dz  }||z   }	t                              d| ||	|||           d S )Nr   z%Y-%m-%d   T)ignore_errorszTCleanup summary | folder=%s retention_days=%s total=%s deleted=%s kept=%s invalid=%s)r   nowr   r   APP_TIMEZONEdateiterdiris_dirstrptimename
ValueErrordaysshutilrmtreeloggerinfo)
r   r   todaydeleted_count
kept_countinvalid_countentryfolder_dateage_daystotal_counts
             r   delete_old_directoriesr/      s?   L("78899>>@@EMJM$$&&  ||~~ 		"+EJ
CCHHJJKK 	 	 	QMH	 K'-n$$M%t4444QMM!OJJ*,K
KK, 	    s   0,BB/.B/c                  J   t           j        st                              d           dS t	          t           j                  } |                                 st                              d|             dS t                              dt          d          t          d                     t          D ]V}| |z  }|                                st                              d|            9t          |t          |                     Wt                              d           dS )	z%
    Main scheduled cleanup job.
    z:HANDWRITING_PRESERVE_DIR not configured. Skipping cleanup.NzPreserve directory not found: z5Cleanup started | Retention days success=%s failed=%sr   r   zSubfolder missing: zCleanup finished successfully.)
r   HANDWRITING_PRESERVE_DIRr%   warningr   existsr&   r   HANDWRITING_CLEANUP_SUBFOLDERSr/   )	base_pathr   r   s      r   cleanup_handwriting_directoriesr6   C   s    , STTTX677I C	CCDDD
KK?9%%8$$   4 K K	)+!!## 	NN>>>???{,>y,I,IJJJJ
KK011111r   )timezonec            	         t           j        st                              d           dS t          j        rt                              d           dS t                              t          t          ddt           j	                  ddd	dd
           t          
                                 t                              d           dS )zH
    Register and start scheduled jobs only if RUN_CRON is enabled.
    z/RUN_CRON is disabled. Scheduler will not start.Nz*Scheduler already running. Skipping start.   r   )hourminuter7   handwriting_cleanup_jobTr   i  )idreplace_existingmax_instancescoalescemisfire_grace_timezAPScheduler started.)r   RUN_CRONr%   r&   r
   runningadd_jobr6   r   r   start r   r   start_schedulerrG   i   s    
  EFFF @AAA'1x/DEEE$     OO
KK'(((((r   c                      t           j        r7t                               d           t                              d           d S d S )NF)waitz APScheduler stopped immediately.)r
   rC   shutdownr%   r&   rF   r   r   shutdown_schedulerrK      sG     8&&&6777778 8r   )r#   r   pathlibr   zoneinfor   !apscheduler.schedulers.backgroundr   apscheduler.triggers.cronr   app.settingsr   app.utils.loggerr	   r%   r4   strintr   r/   r6   r   r
   rG   rK   rF   r   r   <module>rT      s@                      A A A A A A 1 1 1 1 1 1 ! ! ! ! ! ! ' ' ' ' ' '	K	 	  " 7# 7# 7 7 7 7$ $c $ $ $ $N2 2 2F  )>???	) ) )68 8 8 8 8r   