U
    9_                     @   sT   d dl Z d dlZd dlZd dlmZ d dlZddlT d dlm	Z	 G dd de
ZdS )    N)TimedSubprocess   )*)Gtkc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CheckUSBPermissionsc                 C   s"   t | |d |t |  d S )NzCheck USB permissions)Question__init__Znew_pager   ZLabel)selftroubleshooter r   D/usr/share/system-config-printer/troubleshoot/CheckUSBPermissions.pyr       s    zCheckUSBPermissions.__init__c           )   
   C   s  i | _ | jj }|d r4|d r"dS |d }|d }n|ddrJ|d }ndS tj|\}}|dkrjdS d	}t|tjsdS d
}t|tjsdS tj	
 }d|d< | j }	z6t|	|dgd|tjtjtjd| _| j \}
}}W n   Y dS X i }d }|
D ]}|d k	r|ddkr4|ddksT|ddkr|ddkr||i }||g }|| |||< |||< d }qdddddg}g }d}|}|t|k r2|| \}}||sҐq2t|}|dkr t|}|||d   n|| }||||  ||d  }|d7 }q|t|k rDq|dsb|d dkrbq|d |d |d |d }|d }|d! }qi }g }|ds|td" | D ]T\}}| D ]@\} }!|!D ]0}"d#|"d$ |"d% f }#||# |"d& ||#< qؐq̐qg }$|D ]v}#zDt|	||#gd|tjtjtjd| _| j \}%}&}d'd( |%D }'W n   g }'Y nX ||#|#}(|$|(|'f q|$| j d)< dS )*NZcups_queue_listedZis_cups_classFcups_printer_dictz
device-uriZcups_device_listedZcups_device_uri)hpZhpfaxZusbZhalz/sbin/lsusbz/usr/bin/getfaclCLC_ALLz-vT)parentargsZ	close_fdsenvstdinstdoutstderrZbInterfaceClassz	7 PrinterZbInterfaceSubClassz	1 Printer)zBus    )z Device r   )z: ID    ):r   ) r   r   r   r      Z03f0r   )busdevnamefullr   z/dev/usb/lp?z/dev/bus/usb/%s/%sr   r   r    c                 S   s   g | ]}t |d kr|qS )r   )len).0xr   r   r   
<listcomp>   s      z/CheckUSBPermissions.display.<locals>.<listcomp>Zgetfacl_output)answersr
   geturllibparseZ	splittypeosaccessX_OKenvironcopyZ
get_windowr   
subprocessZDEVNULLPIPEoprunfindappendr!   
startswithextendglobitems))r	   r%   r   Z
device_uriZschemerestZLSUSBZGETFACLZnew_environr   Zlsusb_stdoutZlsusb_stderrresultZ	dev_by_idZthis_devlineZthis_mfr_idZmfrZthis_mdl_idZmdlZ
separatorsZfieldsipsepZlengthstartendZinfospathsZmfr_idZmdlsZmdl_idZdevsr   pathZpermsZgetfacl_stdoutZgetfacl_stderroutputinfor   r   r   display$   s    










zCheckUSBPermissions.displayc                 C   s   | j S N)r%   r	   r   r   r   collect_answer   s    z"CheckUSBPermissions.collect_answerc                 C   s   | j   d S rE   )r0   ZcancelrF   r   r   r   cancel_operation   s    z$CheckUSBPermissions.cancel_operationN)__name__
__module____qualname__r   rD   rG   rH   r   r   r   r   r      s
    r   )r6   r)   r.   Ztimedopsr   Zurllib.parser'   baseZgi.repositoryr   r   r   r   r   r   r   <module>   s   