PHP WebShell

Текущая директория: /usr/lib/python3/dist-packages/UpdateManager/backend/__pycache__

Просмотр файла: InstallBackendAptdaemon.cpython-310.pyc

o

��{f�L�@sLddlmZddlmZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZddlmZmZmZmZmZmZmZmZmZddlmZddlmZdd	lmZdd
lmZ ddl!Z!ddl"Z"Gdd
�d
e�Z#Gdd�dej$�Z%Gdd�dee�Z&e'dkr�ddl(Z(e(�)�Z*dZ+ddl,m-Z-e-e+e*�Z.e&e.d�Z/e/�0dggg�e�1�dSdS)�)�print_function)�Gtk)�client�errors)�inline_callbacks)�AptCancelButton�AptConfigFileConflictDialog�AptDetailsExpander�AptMediumRequiredDialog�AptProgressBar)	�EXIT_SUCCESS�EXIT_FAILED�STATUS_COMMITTING�STATUS_DOWNLOADING�STATUS_DOWNLOADING_REPO�STATUS_FINISHED�get_error_description_from_enum�get_error_string_from_enum�get_status_string_from_enum)�InstallBackend)�UnitySupport)�
BuilderDialog)�gettextNcs*eZdZdZd�fdd�	Zdd�Z�ZS)	�UpdateManagerExpanderaFAn AptDetailsExpander which can be used with multiple terminals.

       The default AptDetailsExpander will shrink/hide when its transaction
       finishes. But here we want to support "chaining" transactions. So we
       override the status-changed handler to only do that when we are
       running the final transaction.TFcst��||�||_dS�N)�super�__init__�final)�self�transaction�terminalr��	__class__��O/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.pyr-s
zUpdateManagerExpander.__init__cCs�|ttfvr|�d�|j��|jr|j��dSdS|tkrE|j��|jr4|j��|�d�dS|jrC|�	d�|�d�dSdS|jre|t
krg|j��|jrY|j��|�d�|�	d�dSdSdS�NTF)rr�
set_sensitive�download_scrolled�showr �hiderr�set_expandedr)r�trans�statusr#r#r$�_on_status_changed1s,

�


�


�z(UpdateManagerExpander._on_status_changed)TF)�__name__�
__module__�__qualname__�__doc__rr-�
__classcell__r#r#r!r$r%srcs8eZdZdZ�fdd�Zdd�Zdd�Zdd	�Z�ZS)
�AptStackedProgressBaraq A GtkProgressBar which represents the state of many aptdaemon
    transactions.

    aptdaemon provides AptProgressBar for the state of *one* transaction to
    be represented in a progress bar. This widget creates one of those per
    containing transaction, and scales its progress to the given ratio, so
    one progress bar can show the state of many transactions.cs d|_g|_||_t���dS)Nr)�current_max_progress�
progress_bars�unityrr)rr6r!r#r$rPszAptStackedProgressBar.__init__cCs~d|krdksJ�J�t|�}|j�|�|j|_|j|7_|jdkr+d|_|j|_|�d|j�|�d|j�dS)Nr�znotify::fractionznotify::text)	rr5�appendr4�min�max�connect�_update_progress�_update_text)rr+�max_progress�progressr#r#r$�add_transactionWs
z%AptStackedProgressBar.add_transactioncCs@|j|j}||��}|j|}|�|�|j�|d�dS)N�d)r:r9�get_fraction�set_fractionr6�set_progress)r�inner_progress�data�delta�position_in_delta�new_progressr#r#r$r<fs


z&AptStackedProgressBar._update_progresscCs|�|���dSr)�set_text�get_text)rrErFr#r#r$r=msz"AptStackedProgressBar._update_text)	r.r/r0r1rr@r<r=r2r#r#r!r$r3Gsr3c@s�eZdZdZdd�Zdd�Zedd��Zdd	�Zd
d�Z	edd
��Z
dd�Zedd��Zedd��Z
dd�Zdd�Ze		d&dd��Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�ZdS)'�InstallBackendAptdaemonzCMakes use of aptdaemon to refresh the cache and to install updates.cCsht�|||�tj�|jd�}t�|||d�t��|_t	�|_
d|_d|_d|_
d|_d|_d|_dS)Nzgtkbuilder/UpdateProgress.ui�pane_update_progress)rr�os�path�join�datadirrr�	AptClientrr6�_expanded_size�
button_cancel�trans_failed_msg�progressbar�_active_transaction�	_expander)r�window_main�action�ui_pathr#r#r$rts
�
�

z InstallBackendAptdaemon.__init__cCs:|jr|j��rz|j��WdStyYdSwdSr%)rT�
get_sensitive�clicked�	Exception)rr#r#r$�close�s��zInstallBackendAptdaemon.closec
cs��z|jjdd�V}|�||jtd�d�VWdStjy.|j|jddddd�YdSty@|j|jddddd��w)zRefresh the package listT��deferuChecking for updates…FN��
authorized�success�error_string�
error_desc)	r�update_cache�_show_transaction�
ACTION_UPDATE�_r�NotAuthorizedError�_action_doner^)rr+r#r#r$�update�s$�
����zInstallBackendAptdaemon.updatecCsPt|jj�}t|jj�}|jrd}|d|j}nd}|j|dd|||d�dS)NT�
F�rcrdrerf�trans_failed)r�error�coderrUrl)rr+rZrerfrpr#r#r$�_show_transaction_error�s
�z/InstallBackendAptdaemon._show_transaction_errorcCs$|tkr|�||�dS|��dSr)r
rs�_apt_update_oem)rr+r,rZr#r#r$�_update_next_package�sz,InstallBackendAptdaemon._update_next_packagec
csN�|jsJ�|j��}d|�d�}z0tj�|�r?|jj|d�V}|jr'|j}n|j}|j	||j
td�d|d|jd�VWdSWdSt
jyW|j|j
ddddd	�YdSt
jyo}zt|�|_WYd}~dSd}~wtjy�}z|��d
kr~�|j|j
ddddd	�WYd}~dSd}~wty�|j|j
ddddd	��w)Nz/etc/apt/sources.list.d/z.list)�sources_list�Installing updates…T皙�����?��on_finished_handler�progress_bar_maxFrb�"org.freedesktop.DBus.Error.NoReply)�_oem_packages_to_update�poprNrO�existsrrgru�_on_finishedrh�ACTION_PRE_INSTALLrj�_len_oem_updatesrrkrl�TransactionFailed�strrU�dbus�
DBusException�
get_dbus_namer^)r�elem�sources_list_filer+�finished_handler�er#r#r$rt�sV�

���������z'InstallBackendAptdaemon._apt_update_oemcCsJ|tkr|�||�dS|j\}}}}}}t|�|_t|�|_|��dSr)r
rs�packages�setr}�lenr�rt)rr+r,rZ�installrjr#r#r$�_update_oem�s

z#InstallBackendAptdaemon._update_oemc
csH�t|�t|�B|_z4|s|s|j|jdddddd�WdS|r<|jj|dd�V}|j||jtd�d|jdd�VWdSWdSt	j
yT|j|jddddd�YdSt	jyl}zt|�|_
WYd}~dSd}~wtjy�}z|��d	kr{�|j|jddddd�WYd}~dSd}~wty�|j|jddddd��w)
NTror`rwrxryFrbr|)r��all_oem_packagesrlr�r�install_packagesrhrjr�rrkr�r�rUr�r�r�r^)r�pkgs_install_oem�pkgs_upgrade_oemr+r�r#r#r$�
commit_oem�sZ�����
������z"InstallBackendAptdaemon.commit_oemc	
cs�z#g}}}|jj||||||dd�V}|�||jtd�d�VWdStjy:|j|jddddd�YdStjyR}zt	|�|_
WYd}~dSd}~wtjyw}z|�
�dkra�|j|jddddd�WYd}~dSd}~wty�|j|jddddd��w)z)Commit a list of package adds and removesTr`rwFNrbr|)r�commit_packagesrh�ACTION_INSTALLrjrrkrlr�r�rUr�r�r�r^)	r�pkgs_install�pkgs_upgrade�pkgs_remove�	reinstall�purge�	downgrader+r�r#r#r$�commitsB�
�
�������zInstallBackendAptdaemon.commitcCs|�|�dSr)�	set_label)rr+�details�
label_detailsr#r#r$�_on_details_changed3sz+InstallBackendAptdaemon._on_details_changedcCsD|�t|��|tkr|jr|jj��r |�|j�dSdSdSdSr)r�rrrXr �get_visible�_resize_to_show_details)rr+r,r�r#r#r$r-6s
��z*InstallBackendAptdaemon._on_status_changedr7Nccs��|dur|j}|j�|�|js#t|j�|_|j��|j�|j�|j�	||�|j
r4|j
�|�nt|�|_
|j
��|j
�|j
�||jkrQ|j
�tj�|r�|js�t|�|_|j�d�|j�d�|j��|j�d|j�|j�|j�|j��n|j�|�||jk|j_n|jr�|j��|�d|j|j�|�d|j|j�|�d||�|�d|j �|�d|j!�|�"d�V|�#�VdS)	NTznotify::expandedzstatus-details-changedzstatus-changed�finishedzmedium-requiredzconfig-file-conflict�gnome)$r��label_headerr�rVr3r6r(�progressbar_slot�addr@rT�set_transactionr�button_cancel_slotrir�
STOCK_STOPrXr�set_vexpand�set_hexpand�show_allr;�_on_expanded�
expander_slotr�r�_expander_slotr)r�r�r-�_on_medium_required�_on_config_file_conflict�set_debconf_frontend�run)rr+rZ�header�show_detailsr{rzr#r#r$rh>sT�





�

�
�z)InstallBackendAptdaemon._show_transactioncCs||��s|j��|j��f|_|j��dS|jr7|j\}\}}||j��kr.|�|�dS|j�||�dS|�|�dSr)	�get_expandedr r�rY�get_sizerS�end_user_resizabler��begin_user_resizable)r�expander�param�term_visible�stored_width�
stored_heightr#r#r$r�ts��z$InstallBackendAptdaemon._on_expandedc
Cs�|��rF|j��\}}|��j}|��j}|j��r5|j��d}|j�	�d}|||}|||}	n|d}|d}	|j�
||	�dSdS)a�Resize the window to show the expanded details.

        Unfortunately the expander only expands to the preferred size of the
        child widget (e.g showing all 80x24 chars of the Vte terminal) if
        the window is rendered the first time and the terminal is also visible.
        If the expander is expanded afterwards the window won't change its
        size anymore. So we have to do this manually. See LP#840942
        �P�rA��N)r�rYr��get_allocation�width�heightr r��get_char_width�get_char_heightr�)
rr��	win_width�
win_height�	exp_width�
exp_height�terminal_width�terminal_height�	new_width�
new_heightr#r#r$r��s	


�z/InstallBackendAptdaemon._resize_to_show_detailscCsDt|||j�}|��}|��|tjjkr|�|�dS|��dSr)	r
rYr�r)r�ResponseType�OK�provide_medium�cancel)rr�medium�drive�dialog�resr#r#r$r��sz+InstallBackendAptdaemon._on_medium_requiredcCsJt|||j�}|��}|��|tjjkr|�|d�dS|�|d�dS)N�replace�keep)rrYr�r)rr��YES�resolve_config_file_conflict)rr�old�newr�r�r#r#r$r��sz0InstallBackendAptdaemon._on_config_file_conflictc
Cs�d}d}d}|tkr"t|jj�}t|jj�}|jr"d}|d|j}|j�d�|tk}z|j	|d||||d�WdSt
yN|j	|d|||d�YdSw)NFTrn���rorb)r
rrqrrrrUr6rDrrl�	TypeError)rr+r,rZrerfrp�
is_successr#r#r$r��s.���z$InstallBackendAptdaemon._on_finished)r7N)r.r/r0r1rr_rrmrsrurtr�r�r�r�r-rhr�r�r�r�r�r#r#r#r$rLqs4

(
'
�5		rL�__main__z/usr/share/update-manager)�
UpdateManager�2vcard)2�
__future__r�
gi.repositoryr�	aptdaemonrrrar�aptdaemon.gtk3widgetsrrr	r
r�aptdaemon.enumsrr
rrrrrrr�UpdateManager.backendr�UpdateManager.UnitySupportr�UpdateManager.Dialogsrrrjr�rNr�ProgressBarr3rLr.�mock�Mock�options�data_dir�UpdateManager.UpdateManagerr��app�br��mainr#r#r#r$�<module>s6,
"*^

�

Выполнить команду


Для локальной разработки. Не используйте в интернете!