
    /h                         d Z ddlZddlZddlZddlmZmZmZ ddlmZm	Z	 dZ
e	sddlm
Z
  G d de          Z G d d	e          Z G d
 de          ZedfedfedfedfedfedfedfgZ G d de          ZdS )zF
The crontabs manager will list all available crontabs on the system.
    N)stataccessX_OK)CronTabWINOS)getpwuidc                   ,    e Zd ZdZddZd Zd Zd ZdS )	UserSpoolzAGenerates all user crontabs, yields both owned and abandoned tabsNc                     |                      |          D ]/}|                     ||          }|r|                     |           0| s)t          d          }|r|                     |           d S d S d S )NTuser)listdirgenerateappendr   )selfloctabsusernametabs        L/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/crontabs.py__init__zUserSpool.__init__"   s    S)) 	! 	!H--X..C !C    	!t$$$C !C     	! 	!! !    c                 P    	 t          j        |          S # t          $ r g cY S w xY wN)osr   OSErrorr   r   s     r   r   zUserSpool.listdir,   s9    	:c??" 	 	 	III	s    %%c                     t           st          d          	 t          t          |          j                  j        S # t
          $ r Y dS w xY w)zReturns user file at pathz.This functionality is not available on WindowsN)r   r   r   st_uidpw_nameKeyError)r   paths     r   	get_ownerzUserSpool.get_owner2   s[     	LJKKK	DJJ-..66 	 	 	FF	s   %> 
AAc                     t           j                            ||          }||                     |          k    rt	          |          S t	          |          S )N)tabfiler   )r   r"   joinr#   r   )r   r   r   r"   s       r   r   zUserSpool.generate;   sP    w||C**t~~d++++4((((H%%%%r   r   )__name__
__module____qualname____doc__r   r   r#   r    r   r   r
   r
       s[        KK! ! ! !    & & & & &r   r
   c                       e Zd ZdZddZdS )	SystemTabzGenerates all system tabsNc                    t           j                            |          rjt          j        |          D ]S}|d         dk    rt           j                            ||          }|                     t          d|                     Td S t           j                            |          r&|                     t          d|                     d S d S )Nr   .F)r   r%   )r   r"   isdirr   r&   r   r   isfile)r   r   r   itemr"   s        r   r   zSystemTab.__init__E   s    7== 	:
3 ? ?7c>>w||C..G===>>>>	? ?
 W^^C   	:KKUC88899999	: 	:r   r   )r'   r(   r)   r*   r   r+   r   r   r-   r-   C   s.        ##: : : : : :r   r-   c                        e Zd ZdZddZd ZdS )
AnaCronTabz0Attempts to digest anacron entries (if possible)Nc                    |rt           j                            |          r|                     t	          d                     t          |j                            |                    }|rTt          j        |          D ]}| 	                    |||d                     |d         
                                 d S d S d S d S )NFr   r   )r   r"   r0   r   r   listallfind_commandr   adddelete)r   r   r   jobsr2   s        r   r   zAnaCronTab.__init__R   s     	!BGMM#&& 	!KKU+++,,,--c2233D !JsOO 1 1DHHS$Q0000Q     	! 	! 	! 	!! !r   c                 d   t           j                            ||          }|dv s!|d         dk    st          |t                    sd S | d                             ||j                  }|                    d|                    d          d         z             |	                    |           |S )N)0anacronr   r/   )commandr   z
Anacron %s)
r   r"   r&   r   r   newr   set_commentsplitsetall)r   r   r2   anajobr"   jobs         r   r9   zAnaCronTab.add[   s    w||C&&<47c>>d9K9K>F1gkk$V[k99syy~~b'99:::

6
r   r   )r'   r(   r)   r*   r   r9   r+   r   r   r4   r4   P   s=        ::! ! ! !    r   r4   z/var/spool/cron/crontabs/z/etc/crontabz/etc/cron.d/z/etc/cron.hourlyz/etc/cron.dailyz/etc/cron.weeklyz/etc/cron.monthlyc                   L     e Zd ZdZdZdZ fdZd Zd Ze	d             Z
 xZS )CronTabsz/Singleton dictionary of all detectable crontabsNc                 r    | j         s) t          t          |           j        | g|R i || _         | j         S r   )_selfsuperrG   __new__)clsargskw	__class__s      r   rK   zCronTabs.__new__{   sD    y 	G4h,,4SF4FFF2FFCIyr   c                 6    | st           D ]} | j        |  d S d S r   )KNOWN_LOCATIONSr9   r   s     r   r   zCronTabs.__init__   s<     	&  #	 	 r   c                 T     ||d| iD ]}|                      |           d | _        d S )Nr   )r   _all)r   rL   rM   r   s       r   r9   zCronTabs.add   sE    3(4(( 	 	CKKDII	 	r   c                     | j         Nt          d          | _         | D ]6}|D ]1}|j        |j        pd|_        | j                             |           27| j         S )z1Return a CronTab object with all jobs (read-only)NFr   unknown)rS   r   r   r   )r   r   rE   s      r   r7   zCronTabs.all   sz     9U+++DI * * * *Cx'#&8#8yI$$S))))* yr   )r'   r(   r)   r*   rS   rI   rK   r   r9   propertyr7   __classcell__)rO   s   @r   rG   rG   v   s        99DE    
  
  
 	 	 X	 	 	 	 	r   rG   )r*   r   sys	itertoolsr   r   r   crontabr   r   r   pwdr6   r
   r-   r4   rQ   rG   r+   r   r   <module>r\      s}  "  
			 



     ! ! ! ! ! ! ! ! ! ! " " " " " " " "  &  &  &  &  &  &  &  &F
: 
: 
: 
: 
: 
: 
: 
:       0 )*nn!" !!""#     t     r   