
    ug{6                     X    d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ  G d d      Z	y)    NFolder)Ishusc                       e Zd ZdZddZd ZddZddZd Zd Z	d	 Z
d
 Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)Reportzbasic functions for a reportc                     || _         || _        | j                          || _        | j                   j                  j
                  | _        t        |      | _        t        |      | _	        d | _
        y N)erepcodeset_dirs
do_verboseabovonsmapr   folderr   ishuslast_issuedate)selferimpr   r   s       "/home/ernad/ernad/python/report.py__init__zReport.__init__   sV    $VV\\''
Um5\
"    c                 X   | j                   j                  d   dz   | j                  z   | _        i | _        i | _        | j                   j
                  j                  D ]@  }| j                  dz   |z   | j                  |<   | j                  dz   |z   | j                  |<   B | j                   j
                  j                  d   }| j                   j
                  j                  D ]M  }| j                   j
                  j                  d|z      }| j                  dz   |z   dz   |z   | j                  |<   O | j                   j
                  j                  d   }| j                  dz   |z   | j                  d<   | j                   j                  d   dz   | j                  z   | j                  d<   y )	Nreports/vardir_learnlearest_vardir_statestateblattz	/reports/)r
   dirsr   fudistager   	constantslearests)r   given_stage	learn_dirlearesttargetvar_dirs         r   r   zReport.set_dirs   sR   FFKK	*S04<<?		
66<<--K&*ii#o&CDJJ{#%)YY_{%BDIIk" . FFLL**>:	vv||,,GVV\\++J,@AF!%S9!<s!BV!KDIIg - &&,,((8!YY_w6		'!VV[[1K?$,,N		'r   c           	      j   | j                   }|j                  d| }| j                  }|j                  j	                  | j
                  |         }|j                  j                  | j
                  |         }t        |      dk(  rg S i }	|D ]  }
|
|vr||
   }|j                  j                  |      }|
|vr%t        d| d|
 d| t        j                         Q||
   }|j                  j                  |      }||z
  }|dk  r%t        | d|
 d| t        j                         d }||	|
<    |	S )Nr   zno earlier for  z in filez, z: negative delay )r
   
issuedatesr   dlastsr"   firstslenftistprintsysstderr)r   earlierlaterspanr
   recent_issuedatesr   later_datesearlier_datesdelays	issuedate
later_fufi
later_tistearlier_fufiearlier_tistdelays                   r   r>   zReport.delays4   s9   FFLL40,,ccii

5 12

4::g#67{q I$I 11$Y/J*-J-wa	{$wiH::'(3L3388L1L-Eqy	I;.?wG::' %F9! %" r   Nc                    | j                   |   }|dz   }||dz   |z   }t        j                  j                  |      syt	        j                  |      }t        |      dk(  ryt        |t        j                  j                        }|S )zalso fills the model timez/*Nr   r   )key)r    ospathisdirglobr2   maxgetmtime)r   whatkindwhat_dirglob_stringlist_of_fufis	last_fufis          r   lastzReport.lastP   sy    99T?o"S.4/Kww}}X&		+.}"277+;+;<	r   c                     | j                   | j                   S | j                  j                  | j                  d         }t	        |      }t        |      dk(  ry |d   }|| _         |S )Nsentr   )r   r   r1   r    listr2   )r   issuedate_fufisr.   r   s       r   get_last_issuedatezReport.get_last_issuedate^   sg    *&&&++,,TYYv->?/*
z?a#B,r   c                     | j                   }| j                  d      }|j                  j                  |      }| j                  d      }|j                  j                  |      }||k7  ryy)NselectedrU   TF)r
   rS   r3   r?   )r   r
   last_selectedlast_selected_issuedate	last_sentlast_sent_issuedates         r   has_it_labourzReport.has_it_labouri   s\    FF		*-"###--">IIf%	ccmmI6"&99r   c                     | j                   }y r	   )r
   )r   r
   s     r   lafisezReport.lafises   s    FFr   c                     d| j                   j                  vryt        | j                   j                  j	                  | j
                  d               }|t        | j                   j                  d         k  ryy)NadospiFrU   Tr
   confr2   r/   r0   r    int)r   count_issues_sents     r   is_it_adolescentzReport.is_it_adolescentv   sZ    466;;&tyy/@ ABs466;;x#899r   c                     d| j                   j                  vryt        | j                   j                  j	                  | j
                  d               }t        | j                   j                  d         }|||z  z
  S )z!how much adolescent is the reportrd   r   rU   re   )r   rh   rd   s      r   
adopercentzReport.adopercent~   sb    466;;&tyy/@ ABTVV[[*+)F222r   c                 |   | j                         }|rt        d|        |dkD  ryd| j                  j                  vry| j	                         ry| j                  j
                  }t        |      dk  ry|d   }t        | j                  j                  | j                  d               }|d	   }||k\  ry|dk(  ryy)
Nzbremse r   FbremspiT      sourcerV   )bremse_levelr5   r
   rf   is_it_emptyr.   r2   rW   r   r1   r    )r   r   bremser.   second_to_last_issuedate
sourc_list
last_sourcs          r   	is_activezReport.is_active   s    ""$GF8$%A: DFFKK' VV&&
 z?Q#-a= $++,,TYYx-@AB
^
 11Q;r   c                    | j                   }d|j                  vry|j                  j                  | j                  d         }|j                  j                  | j                  d         }|t        |      dk(  ryt        |      dk(  ryd}|j                  j                  | j                  d         }t        |      t        |j                  d         k  r	|dkD  rd}|S |t        |j                  d         kD  rd}|S |S )z0: not, 1: laya, 2: camilarm   r   rp   rU   ro   rn   )r
   rf   r/   datesr    r2   count_gap_issuesrg   )r   r
   source_dafu	sent_dafuearly_bremserz   rq   s          r   rq   zReport.bremse_level   s    FFAFF"ccii		( 34CCIIdii/0	#k"2a"7 y>Q33//		&0AB y>Cy 122  !# ##c!&&"344Lr   c                 L   ddl m} ddlm} ddlm} dd lm} dd l}| j                  } ||      } ||      }	 ||      }
|| j                  }| j                  d   dz   }i }t        j                  j                  |      rG|j                  |      }|4|j!                  d| j"                        D ]  }|||j$                  d	   <    |j'                  |j(                  |   j                  d
         }|j*                  d   }t-        t/        |            }d}|j1                  |j3                  |j*                  d   d      |j*                        }g }t5        |      }t7        |      dk(  ry |d   j9                  dd      |j$                  d<   |d   j9                  dd      |j$                  d<   |D ]$  }||v r?|j;                  ||          |j;                  t=        ||   j$                  d                Gd}| j>                  rtA        d| d       |jC                  ||j3                  |d            }|j9                  dd      }||_"        ||   }|
jG                  |      |j$                  d<   |	jI                  |      }t7        |      }|j;                  |       tK        |      |j$                  d<   ||j$                  d	<   ||j$                  d<   ' tM        jN                  tM        jP                  |            |j$                  d<   |jS                  |       | j>                  rtA        tU        jV                  |             |sy| j>                  rtA        tU        jV                  |             | j>                  rtA        d|        |jY                  ||      S )Nr   r   )Rixer)Rifferr   z/issues.xmlz	//e:issue)
namespacesdaterU   ernadFissues)r   rV   -u   ‒fromuntiltotalTzreport adds issuedate z to the issuestateissuetimeissuedate_prettyroughlyzreport saves )-r   r   rixerr   rifferr   
lxml.etreeetreefilerr
   r   r    rG   rH   isfile	parse_laxxpathr   attribr1   reportnsreversedsortedElementQNamerW   r2   replaceappendrg   r   r5   
SubElementtextformatted_timedocsstrdekanr   makecleanup_namespacesdocingshowinstall_xml)r   r   r   r   r   etr   r
   r   r   r   out_fufi
issue_elesold_doc	issue_eler1   r   r.   needs_a_save
issues_eletotals	issuelistr?   r   fufir   r   s                              r   
issuestatezReport.issuestate   s9   !!FFa?llG99W%5
77>>(#ooh/G"!({:>** "/ "FI;DJy//78"F qxx055f=>TT']fVn-
ZZg A&'dd   ,
$	 y>Q $-bM$9$9#u$E
&!%.q\%9%9#u%E
'""IJ&!!*Y"78c*Y"7">">w"GHIL.yk9KLMj"((2w2GHI(00e<-IN)$D'-'<'<T'BIV$::d#DIEMM% (+E
IW%'0IV$3CI/0) #* (-}}UZZ5G'H
)$
j)??&++j)*??&++j)*??M(,-  X66r   c                    | j                   }t        |      }t        |j                  | j                  d               }t        |j                  | j                  d               }g }|D ]  }||vs|j                  |        |S )NrU   rp   )r
   r   rW   r1   r    r   )r   r
   r   sentssourcwaitsr?   s          r   waitingzReport.waiting  sx    FF V]]499V#456V]]499X#678I%Y'  r   c                     | j                   }| j                  }t        |      }|j                  |j                  |   j
                  d         }|j                  }d }|D ]  }||vr|}
|c S  y )Nrp   )r
   r   r   r1   r   r    r.   )r   r
   r   r   source_datesr.   last_missingr?   s           r   next_missing_issuedatezReport.next_missing_issuedate  sr    FF,,}}QXXg%6%;%;H%EF\\
#I,(	 $
 r   c                     | j                   }| j                  }t        |      }|j                  |j                  |   j
                  d         }t        |      dkD  ryy)Nrp   r   FT)r
   r   r   r1   r   r    r2   )r   r
   r   r   r   s        r   rr   zReport.is_it_empty+  sR    FF,,}}QXXg%6%;%;H%EF|q r   c                 D    | j                  d      }t        |      dk(  ryy)Nmodelr   FT)
list_musitr2   )r   musit_fufiss     r   has_it_musitzReport.has_it_musit5  s#    oog.{q r   c                    | j                   d   }t        j                  j                  |      st	        dt
        j                         g S |dz   |z   }t        j                  |      }g }|D ]O  }t        j                  j                  |      }t        |      dk  r1|dd d   }|d	k(  s?|j                  |       Q |S )
zkind is 'model' or 'train'moclazreport should have a mocla_dirr,   z/*.   NirV   _)r    rG   rH   rI   r5   r6   r7   rJ   basenamer2   r   )	r   rN   	mocla_dirrP   
kind_fufismusit_kind_fufis	kind_fufibanaends	            r   r   zReport.list_musit<  s    IIg&	ww}}Y'2zz#I%'$.YY{+
#I77##I.D4y2~t*R.Ccz ''	2 $  r   c                     | j                   j                  j                  d   }| j                  d   dz   |z   }t        j
                  j                  |      syy)z,assumes that ocotl is run on a regular basiseval_grund_namer   r   TF)r
   r   r#   r    rG   rH   r   )r   finaeval_grund_fufis      r   is_is_autonomouszReport.is_is_autonomousQ  sI    vv||%%&78))G,s2T9ww~~o.r   c                    t        | j                  j                  j                  | j                  d         j                               }| j                  }d}d}g }|t        |      dz
  k  rj||   }||dz      }| j                  j                  |d      }||k(  r|dz  }E|d| d| dz   z  }|j                  |       |dz  }|t        |      dz
  k  rjt        |      dk(  ryt        | j                  j                  j                  | j                  d	         j                               }	|	d   }
|
|d   k  ry
d| d}|D ]
  }|d|z   z  } t        |t        j                         y )Nrp   r    ro   rV   r+   
TrU   Fzreport: z missesr,   )rW   r
   r/   r0   r    keysr   r2   r   shiftr   r5   r6   r7   )r   sourcesr   count
out_stringmissingscurenfuturcalcdr   r^   msgr?   s                r   audit_issueszReport.audit_issuesY  si   tvvxx~~dii&9:??AB,,
c'lQ&&ENEEAI&EJJ$$UB/E~
AeWAeW-44JOOE"QJE c'lQ&& z?aTVVXX^^DIIf$56;;=>"I	x|#	)!I3?"C "c

#r   c                     t        | j                  j                  j                  | j                  d         j                               }t        |      dk(  ry| j                  j                  |d      }||v ryy)Nrp   r   Tro   F)	rW   r
   r/   r0   r    r   r2   r   r   )r   r?   r   previous_issuedates       r   audit_issuedatezReport.audit_issuedatev  sc    tvvxx~~dii&9:??ABw<1!ZZ--i;(r   )F)   r	   )__name__
__module____qualname____doc__r   r   r>   rS   rY   r`   rb   ri   rk   rw   rq   r   r   r   rr   r   r   r   r   r    r   r   r   r      sm    &
O08	3B>E7N *:r   r   )
r6   rG   rJ   r   r   r   r   r   r   r   r   r   r   <module>r      s&    
 	     
p pr   