a
    Wa                     @   sl   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 d dl	m
Z
 d dlmZ G dd de
ZdS )	    N)BytesIO)Element
SubElement)PY3)GPParser)	text_typec                   @   s8   e Zd ZdZdZg Zdd Zdd Zdd Zd	d
 Z	dS )GPAuditCsvParserzutf-8Nc                 C   sh   g | _ tt| jt|}t|| _|D ]4}i }t	|D ]\}}||| j| < q>| j 
| q.d S )N)linescsvreadercodecs	getreaderencodingr   nextheader	enumerateappend)selfcontentsr   rowlineix r   7/usr/lib/python3/dist-packages/samba/gp_parse/gp_csv.pyparse#   s    
zGPAuditCsvParser.parsec                    s   t |d}td}t|d}| jD ]}t|d}||_q$| jD ] t|d} fdd| jD D ]d\}}t|d}||_|dkr|dkrd	|jd
< |dkrb|dkrb d dks d dkrbd	|jd< qbq@| || W d    n1 s0    Y  d S )NwbZCsvFileRowValuec                    s   g | ]} | |fqS r   r   .0r   r   r   r   
<listcomp>:       z.GPAuditCsvParser.write_xml.<locals>.<listcomp>zPolicy Target ZTRUEZuser_idzSetting ValueZSubcategoryZRegistryGlobalSaclZFileGlobalSaclZacl)openr   r   r   textr	   ZattribZwrite_pretty_xml)r   filenamefrootchildevaluetitler   r!   r   	write_xml0   s(    








zGPAuditCsvParser.write_xmlc                 C   s   d}g | _ |dD ]}|rbd}g | _|dD ].}t|jtsP|j| j|_| j|j q0qi }t	|dD ]V\}}|jd ur|jnd|| j| < t| j| tst|| j|  | j|| j| < qt| j | qd S )NTr   Fr   r$   )
r	   findallr   
isinstancer&   r   decodeZoutput_encodingr   r   )r   r)   r   rvr   r   r   r   r   load_xmlL   s     "zGPAuditCsvParser.load_xmlc                    s   ddl m} ||d| jdR}tj|tjd}|| j | jD ] | fdd| jD  q@W d    n1 st0    Y  d S )Nr   )r%   w)r   )Zquotingc                    s   g | ]} | qS r   r   r   r!   r   r   r"   h   r#   z1GPAuditCsvParser.write_binary.<locals>.<listcomp>)	ior%   r   r
   writerZQUOTE_MINIMALZwriterowr   r	   )r   r'   r%   r(   r7   r   r!   r   write_binarya   s    
zGPAuditCsvParser.write_binary)
__name__
__module____qualname__r   r   r	   r   r.   r4   r8   r   r   r   r   r      s   r   )r   r
   r6   r   Zxml.etree.ElementTreer   r   Zsamba.compatr   Zsamba.gp_parser   r   r   r   r   r   r   <module>   s   