
    Id                     Z    d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlmZ  G d de      Z	y)    N)BytesIO)Element
SubElement)GPParserc                   0    e Zd ZdZdZg Zd Zd Zd Zd Z	y)GPAuditCsvParserzutf-8Nc                 F   g | _         t        j                   t        j                  | j
                        t        |                  }t        |      | _        |D ]D  }i }t        |      D ]  \  }}||| j                  |   <    | j                   j                  |       F y )N)linescsvreadercodecs	getreaderencodingr   nextheader	enumerateappend)selfcontentsr   rowlineixs          7/usr/lib/python3/dist-packages/samba/gp_parse/gp_csv.pyparsezGPAuditCsvParser.parse!   s    
;F,,T]];GH<MNO6l 	$CD!# )1'(T[[^$) JJd#	$    c                 "   t        |d      5 }t        d      }t        |d      }| j                  D ]  }t        |d      }||_         | j
                  D ]  }t        |d      }| j                  D cg c]	  }||   |f c}D ]]  \  }}	t        |d      }||_        |	dk(  r|dk7  rd|j                  d<   |	d	k(  s8|dk7  s>|d
   dk(  s	|d
   dk(  sOd|j                  d<   _  | j                  ||       d d d        y c c}w # 1 sw Y   y xY w)NwbCsvFileRowValuezPolicy Target TRUEuser_idzSetting ValueSubcategoryRegistryGlobalSaclFileGlobalSaclacl)openr   r   r   textr
   attribwrite_pretty_xml)
r   filenamefrootchildevaluer   r   titles
             r   	write_xmlzGPAuditCsvParser.write_xml.   s0   (D! 	+Q9%DtU+E[[ "5'2
 

 5"4/7;{{ C!$q'1 C 
5HAu&ug6E!"EJ /AG28Y/0Q"Wm,0DDm,0@@.4U+
55 !!$*+	+ 	+ !D	+ 	+s0   A%D2D  :D;DD%D DDc                    d}g | _         |j                  d      D ]P  }|rd}g | _        |j                  d      D ]k  }t        |j                  t
              s*|j                  j                  | j                        |_        | j                  j                  |j                         m i }t        |j                  d            D ]  \  }}|j                  |j                  nd|| j                  |   <   t        | j                  |   t
              rN|| j                  |      j                  | j                        || j                  |   <    | j                   j                  |       S y )NTr    Fr!   r"   )
r
   findallr   
isinstancer*   strdecodeoutput_encodingr   r   )r   r/   r   rvr   r   s          r   load_xmlzGPAuditCsvParser.load_xmlJ   s,   
e$ 	(A 7+ /A%affc2!"t/C/C!DKK&&qvv./
 %aii&89 aDAq56VV5G166RDQ(%dkk!nc:/3DKKN/C/J/J4K_K_/`T[[^,a
 

!!$'	(r   c           	      j   ddl m}  ||d| j                        5 }t        j                  |t        j
                        }|j                  | j                         | j                  D ].  }|j                  | j                  D cg c]  }||   	 c}       0 	 d d d        y c c}w # 1 sw Y   y xY w)Nr   )r)   w)r   )quoting)	ior)   r   r   writerQUOTE_MINIMALwriterowr   r
   )r   r-   r)   r.   rB   r   r   s          r   write_binaryzGPAuditCsvParser.write_binary_   s    (C$--8 	@AZZ3+<+<=FOODKK(

 @$++ >Qa >?@		@ 	@
 !?	@ 	@s   A)B)B$	B)$B))B2)
__name__
__module____qualname__r   r   r
   r   r4   r=   rE    r   r   r   r      s&    HFE
$+8(*@r   r   )
r   r   rA   r   xml.etree.ElementTreer   r   samba.gp_parser   r   rI   r   r   <module>rL      s)   (  
 	  5 #J@x J@r   