Mini Shell

Direktori : /usr/lib/python3.6/site-packages/cupshelpers/__pycache__/
Upload File :
Current File : //usr/lib/python3.6/site-packages/cupshelpers/__pycache__/openprinting.cpython-36.pyc

3

I(+W�J�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddl
mZdgZdd�ZGd	d
�d
ej�ZGdd�d�Zdd
�ZdS)�N)�XML�)�Device)�_debugprint�OpenPrintingcCsF|j�}|jdd�}|jd�}x"|dkr@|jdd�}|jd�}q W|S)N�
� z  r���)�strip�replace�find)�text�result�i�r�~/builddir/build/BUILDROOT/system-config-printer-1.5.11-13.el8.i386/usr/lib/python3.6/site-packages/cupshelpers/openprinting.py�_normalize_spaces

rc@s&eZdZddd�Zdd�Zdd�ZdS)	�_QueryThreadNcCsDtjj|�||_||_||_||_d|_|jd�t	d|�dS)N�Tz+%s)
�	threading�Thread�__init__�parent�
parameters�callback�	user_datar�	setDaemonr)�selfrrrrrrrr(s
z_QueryThread.__init__cCstd|�dS)Nz-%s)r)rrrr�__del__3sz_QueryThread.__del__c
Cs�d}ddd�}dtjj|j�|jjd|jjdf}d|jj||f|_d}d|_d	}y t	j
|jd
d�}|j|_d}Wn"tj
�|_|dkr�d}YnXtd|�|jdk	r�|j||j|j�dS)
Nz
/query.cgiz!application/x-www-form-urlencodedz
text/plain)zContent-typeZAcceptz%s&uilanguage=%s&locale=%srzhttps://%s%s?%srrT)�verifyz%s: query complete)�urllib�parseZ	urlencoderr�language�base_url�urlr�requests�get�content�sys�exc_inforrr)rZ
query_command�headers�paramsr�status�reqrrr�run6s,



z_QueryThread.run)N)�__name__�
__module__�__qualname__rrr.rrrrr's
rc@sDeZdZddd�Zdd�Zdd�Zddd	�Zdd
d�Zddd
�ZdS)rNc
Cs||dkr<ddl}y|j|j�}Wn|jk
r:d}YnX||_d|_d|_d|_td|j|j|jf�td|�dS)z�
        @param language: language, as given by the first element of
        locale.setlocale().
        @type language: string
        Nr�Czwww.openprinting.orgrzOpenPrinting: Init %s %s %sz+%s)	�locale�	getlocale�LC_MESSAGES�Errorr"r#�onlyfree�onlymanufacturerr)rr"r3rrrrTs
zOpenPrinting.__init__cCstd|�dS)Nz-%s)r)rrrrrlszOpenPrinting.__del__c	Csy
d|_WnYnXdS)zU
        Cancel an operation.

        @param handle: query/operation handle
        N)r)rZhandlerrr�cancelOperationos
zOpenPrinting.cancelOperationcCst||||�}|j�|S)ad
        Run a web query for a driver.

        @type parameters: dict
        @param parameters: URL parameters
        @type callback: function
        @param callback: callback function, taking (integer, user_data, string)
        parameters with the first parameter being the status code, zero for
        success
        @return: query handle
        )r�start)rrrrZ
the_threadrrr�webQuery{szOpenPrinting.webQuerycCs6dd�}d|dd�}tdt|��|j||||f�S)an
        Search for printers using a search term.

        @type searchterm: string
        @param searchterm: search term
        @type callback: function
        @param callback: callback function, taking (integer, user_data, string)
        parameters with the first parameter being the status code, zero for
        success
        @return: query handle
        cSsp|\}}|dkr ||||�dSd}i}y�t|�}xv|jd�D]h}|jd�}|jd�}	|jd�}
|dk	r>|	dk	r>|
dk	r>|j}|	j}|
j}
|r>|r>|
r>|d|
||<q>WWnd}tj�}YnXtdt|��y||||�Wn�tj�\}}}tj	|dd	�}t
|��r(|dt
|�d�}tj||�}x tj|�D]}t
|j���q@Wt
|dj��YnXdS)
Nr�printer�id�make�modelrrz5searchPrinters/parse_result: OpenPrinting entries: %s)�limit)r�findallrr
r(r)r�repr�	traceback�
extract_tb�len�format_exception_only�	format_tb�printr
)r,�datarrr�printers�rootr<r=r>r?ZidtxtZmaketxtZmodeltxt�type�value�tbZtblastZextxt�linerrr�parse_result�sB



z1OpenPrinting.searchPrinters.<locals>.parse_resultrJ�xml)rLr<�formatz)searchPrinters: Querying OpenPrinting: %s)rrBr;)rZ
searchtermrrrPr+rrr�searchPrinters�s
)zOpenPrinting.searchPrinterscCs�dd�}t|t�r|j}tj�}|dkr<tj�ddkr<d}dddd|dt|j�t|j�|d	d
�
}|rp|j	|�t
dt|��|j||||f�S)ah
        Obtain a list of printer drivers.

        @type model: string or cupshelpers.Device
        @param model: foomatic printer model string or a cupshelpers.Device
        object
        @type callback: function
        @param callback: callback function, taking (integer, user_data, string)
        parameters with the first parameter being the status code, zero for
        success
        @type extra_options: string -> string dictionary
        @param extra_options: Additional search options, see
        http://www.linuxfoundation.org/en/OpenPrinting/Database/Query
        @return: query handle
        cSs�|\}}|dkr||||��y�|jddd�jd�}t|�}i}�xb|jd�D�]R}|jjd�}|dkrjqNi}	x6d.D].}
|j|
�}|dk	rt|jdk	rtt|j�|	|
<qtW|jd�}|dk	r�|jdk	r�|j|	d<d|	ks�|	ddk�rB|jd
�}|dk	�rB|j}|dk	�rBy"t	j|dd�}
|
j
jd�|	d<Wntd|�YnXx d/D]}|j|�dk	|	|<�qHW|	d|	d<g}|jd�}|dk	�r�xf|jd�D]X}i}|jdk	�r�t|j�|d<nd|d<|jjd�|d<|jjd�|d<|j|��q�W|�r||	d<d|	ksNd|	k�rqN|jd�}|dk	�rji}x,d0D]$}
|j|
�}|dk	�r2|j||
<�q2W|�rj||	|j
<i}|jd"�}|dk	�r6x�|j�D]�}i}x�|jd#�D]�}i}x,d1D]$}
|j|
�}|dk	�r�|j||
<�q�W|jd)�}|dk	�rx&|j�D]}|j|jd)i�|j
<�q�W|||jd*<�q�W|||j
<�q�W|�rD||	d"<g}|jd+�}|dk	�r|x|j�D]}|j|j��qfW|�r�||	d+<|	||<td,t|��qNW|d||�Wn|d-|tj��YnXdS)2NrzUTF-8r)�errors�driverr=�namer$�supplier�license�shortdescriptionZlicensetextZlicenselinkT)rzutf-8zCannot retrieve %s�nonfreesoftware�recommended�patents�thirdpartysupplied�manufacturersuppliedZfreesoftware�supportcontacts�supportcontact��level�
functionalityr
�lineart�graphics�photo�speed�packages�package�realversion�version�release�pkgsys�fingerprint�repositories�file�ppdsz2listDrivers/parse_result: OpenPrinting entries: %sr)rVr$rWrXrY)rZr[r\r]r^)r
rdrerfrg)rjrkrlr$rmrn)�decode�encoderrAZattribr&rr
rr%r'r�append�tagZgetchildren�
setdefaultrBr(r))r,rIrrrrK�driversrUr=�dictZ	attribute�elementZlicense_urlr-Zbooleanr_Z	containerZscr`rcrhZarchZrpmsriZrpmrormrqZeachrrrrP�s�+




















z.OpenPrinting.listDrivers.<locals>.parse_resultZx86_64r�32bitZi386rw�1rQ)
rLZmoreinfoZ
showprinteridZonlynewestdriverpackagesZ
architecturesZnoobsoletesr7r8r<rRz&listDrivers: Querying OpenPrinting: %s)
�
isinstancerr=�platform�machine�architecture�strr7r8�updaterrBr;)rr?rrZ
extra_optionsrPrr+rrr�listDrivers�s*#

zOpenPrinting.listDrivers)N)N)N)NN)	r/r0r1rrr9r;rSr�rrrrrSs


<csPddlm�ddlm�ddl��j�G���fdd�d�}|�}�j�dS)Nr)�Gdk)�GtkcsJeZdZ�fdd�Z�fdd�Z�fdd�Z��fdd�Z�fd	d
�ZdS)z_simple_gui.<locals>.QueryAppcs�t�|_�jdddd�|_|jj�j�jjdddd�|jjd�|jj	j
d	��jjd
d�}|jj	j
|ddd�|jd��j�|_|j
|jd
d
d��j�}�j�|_|j|j�|j
|ddd�|jjd|j�|jj�dS)
NzOpenPrinting query applicationT)�titleZ
transient_forZmodalZSearch�
ZList���Fr�response)r�openprintingZDialog�mainZadd_buttonsZSTOCK_CLOSE�ResponseType�CLOSEZset_border_width�vboxZset_spacingZVBox�newZ
pack_startZEntry�entryZScrolledWindowZTextView�tv�addZconnectr�Zshow_all)rr��sw)r�rrr�s&


z&_simple_gui.<locals>.QueryApp.__init__cs`|�jjks|�jjkr �j�|dkr>|jj|jj�|j�|dkr\|jj	|jj�|j
�dS)Nr�r�)r�r�ZDELETE_EVENTZ	main_quitr�rSr�Zget_text�search_printers_callbackr��list_drivers_callback)rZdialogr�)r�rrr��sz&_simple_gui.<locals>.QueryApp.responsecsV|dkr|d�d}x|j�D]}||d7}qW�j�|jj�j|��j�dS)Nrrrar)�values�
threads_enterr��
get_buffer�set_text�
threads_leave)rr,rrJr
r<)r�rrr��sz6_simple_gui.<locals>.QueryApp.search_printers_callbackcs>|dkr|d��j|�}�j�|jj�j|��j�dS)Nrr)�pformatr�r�r�r�r�)rr,rrwr
)r��pprintrrr��s
z3_simple_gui.<locals>.QueryApp.list_drivers_callbackcs<�j�|jj�jt|��tdd�jt|���j�dS)Nz
result.xml�w)r�r�r�r�r��open�writer�)rr,rr)r�rr�query_callback�sz,_simple_gui.<locals>.QueryApp.query_callbackN)r/r0r1rr�r�r�r�r)r�r�r�rr�QueryApp�s
	r�)Z
gi.repositoryr�r�r�Zthreads_initr�)r��qr)r�r�r�r�_simple_gui�s>r�)r%Zurllib.requestr Zurllib.parseZurllib.errorr}r�tempfilerC�osr(Zxml.etree.ElementTreerrarr�__all__rrrrr�rrrr�<module>s@	,C