
    \rrgl8                         d Z ddlZddlZddlZddlm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 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  G d
 d      Zy)zwHOLe ISsue pages    N)Ausfu)Ishus)Doker)Riffer)Trans)Otria)Xpafsc                   P    e 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)Holisc                    || _         || _        t        | j                   |      | _        t	        | j                         | _        t        | j                         | _        t        | j                         | _	        t        | j                         | _        t        | j                   |      | _        t        | j                         | _        d| j                   j                   d   z  | _        d| j                   j                   d   z  | _        | j                   j                   d   | j                   j                   d   d| _        d | _        d | _        d | _        d | _        d| _        d| _        d | _        y )N)
do_verbosez{%s}ernadamf)Nez*/a:amf/a:collection/a:haspart/a:collectionu   on %Y‒%m‒%d at %H:%M:%S)r   r   r   otriar   ausfur	   xpafsr   ishusr   dokerr   rifferr   transnsnEnAnsmappapids	issuedatedoc_fufidat_fufibase_xppretty_formatshoti)selferimpr   s      !/home/ernad/ernad/python/holis.py__init__zHolis.__init__   s   $466j9
466]
466]
466]
466]
TVV
;466]
46699W--46699U++ FFIIe,6699W-/
 C:
    c                 n   | j                   j                  d   dz   }t        j                  |      D ]  }t        j                  j                  |      dd }| j                   j                  d   dz   |z   dz   }| j                  j                  |d|       | j                  sqt        d| d	|         y)
used by bin/holisholisz/????-??-??.xmlNblatt/holis/.htmlzholis: z to )
r   dirsglobospathbasenamer   fufi_to_fufir   print)r#   glob_string
holis_fufir   
blatt_fufis        r%   
blatt_onlyzHolis.blatt_only5   s    ffkk'*->>))K0J((4Sb9IW-	9IEOJJJ##JD
|4
|<= 1r'   c                    || j                   j                  d   }| j                  |       | j                  j	                         }| j                  |      }d}| j                  j                  ||      }d|j                  v r| j                  rt        d       y| j                   j                  d   |j                  d<   | j                  j                  |      }t        j                  || j                         | j                   j                   d   dz   |z   dz   }| j                  rt        d	|        | j"                  j%                  d
||       y)z,used by bin/holis, fired up in release/poishr   z/a:amf/a:collection/e:issuedateaftazholis: after link thereFr,   r-   r.   holis writes r*   T)r   
issuedatescomplete_issuer   sekl_issuedateloadr   oneattribr   r5   r   inject_updatefilerinstall_xmlr   r/   r   doc_to_fufi)r#   r   	sekl_date	issue_eleissuedate_xpissuedate_eledoc	html_fufis           r%   poishzHolis.poish?   s    ))!,I 	I&JJ--/	IIi(	8

y,?])))/0'+vv'8'8';V$jj&&y1#t}}-FFKK(94y@7J	??M)-.

wY7r'   c                    | j                   rt        d|        || _        | j                  |      }d}| j                  j                  |      }d}|D ]t  }||   }| j                  j                  |      }| j                  |||      }	|	t        j                  d       |	dk(  r|}V| j                  |||      }
|
du s|
|}r|	dk(  rd}|%|j                         d   j                  |
       |}| j                  d	| d
z   }| j                  j!                  ||      }|j#                         j#                         }|j%                  |
       |}t'        |	t(        j*                        s3t        d|	 t        j,                         t        j                  d       |	}|j#                         j/                  ||
       d}|}w t0        j2                  j5                  | j6                        r'|s%| j                   rt        d| j6                          y| j                   rt        d| j6                          t9        j:                  | j6                  | j<                         | j                   rt        d| j>                          d}| j<                  d   D ])  }|tA        tC        | j<                  d   |               z  }+ |}| j<                  d   D ])  }|tA        tC        | j<                  d   |               z  }+ t)        jD                  || jF                  dz         }tI        |      |jJ                  d<   tI        |      |jJ                  d<   tI        | j<                  d         |jJ                  d<   || j<                  d   z  }|d|jJ                  d<   t)        jL                  || jN                         | jP                  jS                  |      }t9        jT                  || j>                         | jV                  jX                  d   dz   |z   dz   }| j                   rt        d|        | jZ                  j]                  d||       d| _        y)r)   zissuedate is FN   niTr   /e:repcode[text()='']zholis: bad action filezholis: no changes to r<   zholis installs insicountsshowsr   altotalz.2%cover	top_nsmapr,   r-   r.   r*   )/r   r5   r   r@   r   timely_by_issuedater   get_fufiaction_on_reportsysexitcollect_reportgetchildrenappendr    r   rA   	getparentaddnext
isinstanceet_Elementstderrreplacer1   r2   isfiler   rD   dumpr   r   lenlist
SubElementr   strrB   cleanup_namespacesr   r   rC   rE   r   r/   r   rF   )r#   r   rH   has_it_changedrepcode_sent_fufisprev_repcoderepcode	sent_fufi
ausfu_fufiactionrepis_coll_elexprepcode_elesibling_eleold_hapa_eletotal_showstotal_papids
counts_eler\   rK   rL   s                        r%   r>   zHolis.complete_issueY   s   ??M)-."IIi(	!ZZ;;IF)G*73I,,Y7J**9gzJF~}  '!00GYON&.*@&}!%'))+A.55nE#*L*=l^2(NNB"&**..B"?K"-"7"7"9"C"C"EK''7#*L fbkk2*6(3::'!L""$,,\>J!N"LO *P 77>>$--(-dmm_=>??M$--12

4==$++.??ODMM?34{{4(G3tDKK$5g$>?@@K )"{{4(GCT[[%6w%? @AAL )]]9dgg.@A
%(%5
'"&),&7
(#%(T):%;
'"t{{400(-c{
'"
i4::>jj&&y1#t}}-FFKK(94y@7J	??M)-.

wY7r'   c                    | j                   dz   |z   dz   }| j                  j                  ||      }t        |      dkD  r#t	        d| d| dt
        j                         yt        |      d	k(  ry
|d	   }t        j                  |      }|j                         }|j                  d   }	||	k(  ry|j                         S )z5n: do nothnig, 'i', insert, or element to be replacedrR   rS   rO   z
holis for z is garbled, z++rT   Nr   rQ   hashrP   )r    r   allerp   r5   rb   rl   hashermakerg   rB   )
r#   rH   rx   rz   there_xpthere_reports	there_elehaschcoll_elehash_of_recos
             r%   ra   zHolis.action_on_report   s     <<"77'ADH

	8<}!Jzl-yCzz#}"!!$	J'&&(v. L !!##r'   c                 b   | j                   }| j                  j                  |      }t        j                  j                  |      sy t        j                  |      }t        j                  j                  |      st        dt        j                         y t        j                  |      }|t        dt        j                         yt        j                  j                  |      s| j                  j                  |       t        j                  j                  |      sydD ]  }i | j                  |   |<    | j                  j                  |      }t!        j"                  t!        j$                  |j&                  d   d            }	||	j(                  d<   t+        t-        j.                  || j                              |	j(                  d	<   | j1                  |      |	j(                  d
<   t        j2                  |      }
|
t        d|        yt!        j"                  t!        j$                  |j&                  d   d            }t-        j4                  |      |j(                  d<   | j6                  j9                  |
d      }|j;                  |       ||j(                  d<   | j=                  ||       ||j(                  d<   |j;                  |	       t!        j"                  t!        j$                  |j&                  d   d            }t+        t?        tA        | j                  d   |                     |j(                  d<   t+        t?        tA        | j                  d   |                     |j(                  d<   |j;                  |       | j6                  jC                  |d      }|D ]!  }|jE                         jG                  |       # d}| j6                  jC                  ||      }|D ]!  }|jE                         jG                  |       # |j;                  |       |S )Nzholis does not see {ausfu_fufi}z'holis does not see shoti on {sent_fufi}rT   FrV   rW   r   timer"   lateshowzholis can't parse r   haspartfromz//a:amf/a:collectionr   countrV   allrW   seenz//a:haspart[a:text]z$//a:haspart/a:collection/e:issuedate)$r   r   r`   r1   r2   rn   r   r   r5   rb   rl   rD   r"   by_fufir   r   rj   ElementQNamer   rB   rs   shotiserdiffdate	parse_laxr   r   zero_or_onerf   collect_papidsrp   rq   r   rg   remove)r#   rH   rx   ry   r   rz   r   r"   parttime_ele	ausfu_doc	repis_eler   	count_ele	hapa_eleshapa_eler}   issuedate_elesrJ   s                      r%   rd   zHolis.collect_report   s+   FFZZ((3
ww~~j)J'ww~~j)3SZZ@I&=;zz#ww~~j)JJy)ww~~j) !D)+DKKg& ! !!),::bhhqttG}f=>#( "%hmmE4::&F"G"&))E"2OOJ/	&zl34JJrxxUY?@	#+==#7	 ::)))5KL""'GX."'! JJrxxWw?@	"%c$t{{4/@/I*J&K"L	#&s4D0A'0J+K'L#M	 	"JJOOH.CD	!H ''1 " 426+M##%,,]; ," r'   c                 2   | j                   j                  |d      }|D ]A  }| j                  d   D ]-  }|| j                  d   |   v sd| j                  d   |   |<    A C i | j                  d   |<   d}|D ]  }|dz  }|| j                  d   |   |<    y)Nz//a:haspart/a:text/@refrV   rO   rW   r   T)r   r   r   )r#   rx   r   r   papidearlier_repcodecount_papidss          r%   r   zHolis.collect_papids  s    +DEE#';;t#4DKK-o>>89DKK%g.u5 $5 
 &(D'"EAL0<DKKg&u-  r'   c                     | j                   j                  d   }|dz   |z   dz   }t        j                  |      }t	        t        |            }~t        j                          |S )Ndexis/.json.gz)r   r/   rD   r@   rp   rq   gccollect)r#   r   
dexis_fudi
dexis_fufir   r   s         r%   	get_totalzHolis.get_total  sU    VV[[)
#%	1J>


:&DK 


r'   c                      d | _         d | _        y N)r   r   )r#   s    r%   clearzHolis.clear  s    r'   c                 \   | j                   }|j                          || _        |j                  d   dz   |z   dz   }|j                  d   dz   |z   dz   }t        j
                  j                  |      rs| j                  rt        d|        t        j                  |      j                         j                         d   }d}| j                  j                  ||      | _        nt!        j"                  t!        j$                  |j&                  d   d	            }|j(                  d
z   |z   |j*                  d<   | j,                  j/                  |      }t1        |j2                        |z
  }t5        |      |j*                  d<   t5        |      |j*                  d<   |j7                  dd      |j*                  d<   | j8                  j                  |j2                  |         }	|	|j*                  d<   |	| _        t5        t;        j<                  |	            |j*                  d<   t!        j>                  || j@                  dz         }
||
_!        |dkD  r|jD                  |dz      |
j*                  d<   |dkD  r|jD                  |dz
     |
j*                  d<   t        j
                  j                  |      sKi | _#        | jI                  |      | jF                  d<   dD ]   }|| jF                  vsi | jF                  |<   " n4| j                  rt        d|        t        jJ                  |      | _#        || _&        || _'        t!        j"                  t!        j$                  |j&                  d   d            }|jQ                  |       t!        jR                  || jT                         |S )Nr*   r   z.xmlr   zholis reads r   z./@shotir   
collection:idposnum-u   ‒prettyr"   tistr   rO   bifor;   rZ   r   r]   )+r   fill_issuesissudater/   r1   r2   rn   r   r5   rD   r   getrootre   r   none_or_oner"   rj   r   r   r   impnarB   r   r   rp   issuesrs   rm   r   r   ekamrr   r   textr=   r   r   r@   r   r   rf   rt   r   )r#   r   r   r   r   rH   r}   r   r   r"   rJ   r   amf_eles                r%   r@   z
Holis.load!  s   FF	!66'?S(94v=66'?S(94zA77>>(#XJ/0199;GGI!LIB//	2>DJ 

288ADDK#FGI%&WWs]Y%>IT"**..+Cahh-#%C&)#hIU#&)#hIU#)2):):3)FIX&KK%%ahhy&9:E(-IW%DJ'*8==+?'@IV$ MM)TWW{5JKM!*MQw/0||C!G/D$$V,Qw/0||C!G/D$$V,ww~~h'DK $y 9DKK$t{{*(*DKK% %
 XJ/0**X.DK  **RXXadd5k59:y!
g<r'   c                 F    t        j                  || j                        }|S r   )r   r   r!   )r#   r"   outs      r%   r   z
Holis.date_  s    mmE4#5#56
r'   N)F)__name__
__module____qualname__r&   r9   rM   r>   ra   rd   r   r   r   r@   r    r'   r%   r   r      s=    6>4Ob$4?B<|r'   r   )__doc__r   r1   rb   
lxml.etreeetreerj   r0   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r'   r%   <module>r      sC     	 	 
            I Ir'   