3
Z                 @   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 j| |d |jtj |  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|jddrJ|d }ndS tjj|\}}|d+krjdS d}tj|tjsdS d}tj|tjsdS tj	j
 }d|d< | jj }	y6t|	|dgd|tjtjtjd| _| jj \}
}}W n
   dS i }d }x|
D ]}|d k	r|jdd,kr4|jdd-ksT|jdd.kr|jdd/kr|j|i }|j|g }|j| |||< |||< d }qd0d1d2d3d5g}g }d}|}x|t|k r2|| \}}|j|sP t|}|d6kr t|}|j||d   n|| }|j|||  ||d  }|d7 }qW |t|k rFq|jd rf|d  d!krfq|d |d |d |d"}|d  }|d }qW i }g }|jds|jtjd# xh|j D ]\\}}xP|j D ]D\} }!x8|!D ]0}"d$|"d% |"d& f }#|j|# |"d' ||#< qW qW qW g }$x~|D ]v}#yDt|	||#gd|tjtjtjd| _| jj \}%}&}d(d) |%D }'W n   g }'Y nX |j|#|#}(|$j|(|'f q.W |$| j d*< dS )7NZcups_queue_listedZis_cups_classFcups_printer_dictz
device-uriZcups_device_listedZcups_device_urihphpfaxusbhalz/sbin/lsusbz/usr/bin/getfaclCLC_ALLz-vT)parentargsZ	close_fdsenvstdinstdoutstderrZbInterfaceClassr   z	7 PrinterZbInterfaceSubClassz	1 PrinterBus     Device : ID    : r      Z03f0)busdevnamefullz/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)r   r   r   r   r*   r*   r*   )r   r   )r   r   )r   r   )r   r   r*   )r    r*   r*   )answersr
   geturllibparseZ	splittypeosaccessX_OKenvironcopyZ
get_windowr   
subprocessZDEVNULLPIPEopZrunfindappendr&   
startswithextendglobitems))r	   r+   r   Z
device_uri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 j  d S )N)r6   Zcancel)r	   r   r   r   cancel_operation   s    z$CheckUSBPermissions.cancel_operationN)__name__
__module____qualname__r   rJ   rK   rL   r   r   r   r   r      s
    r   )r;   r/   r4   Ztimedopsr   Zurllib.parser-   baseZgi.repositoryr   r   r   r   r   r   r   <module>   s   