From 0481b62e786c6b615a4ad3ed9ddd648a18e7805c Mon Sep 17 00:00:00 2001 From: Papoteur Date: Wed, 7 Mar 2018 18:22:51 +0100 Subject: Use pydbus also for udisk2 Use gettext.install Suppress usage of user on command line Adjust writing the logfile Enable call as module with a run function Cleaning --- lib/isodumper.py | 80 +++++++++++++++++++++----------------------------------- 1 file changed, 30 insertions(+), 50 deletions(-) (limited to 'lib') diff --git a/lib/isodumper.py b/lib/isodumper.py index 8a1525c..c84baf5 100755 --- a/lib/isodumper.py +++ b/lib/isodumper.py @@ -44,15 +44,13 @@ import time # set the locale to de/utf-8 #locale.setlocale(locale.LC_ALL, "") #log = yui.YUILog.instance() -#log.setLogFileName("debug.log") +#log.setLogFileName("isodumper.log") #log.enableDebugLogging( True ) import os, re import io import gettext -from gettext import gettext as _ from subprocess import call, Popen, PIPE -import dbus from pydbus import SystemBus from gi.repository import GLib @@ -67,19 +65,14 @@ class UDisks2(object): DRIVE = 'org.freedesktop.UDisks2.Drive' def __init__(self): - self.bus = dbus.SystemBus() + self.bus = SystemBus() try: - self.bus.get_object('org.freedesktop.UDisks2', - '/org/freedesktop/UDisks2') - except dbus.exceptions.DBusException as e: - if getattr(e, '_dbus_error_name', None) == 'org.freedesktop.DBus.Error.ServiceUnknown': - raise NoUDisks2() - raise + self.iface = self.bus.get('org.freedesktop.UDisks2') + except : + raise NoUDisks2() def find_devices(self): - proxy = self.bus.get_object("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2") - iface = dbus.Interface(proxy, "org.freedesktop.UDisks2") - _udisks2_obj_manager = dbus.Interface(iface, "org.freedesktop.DBus.ObjectManager") + _udisks2_obj_manager = self.iface["org.freedesktop.DBus.ObjectManager"] objects=_udisks2_obj_manager.GetManagedObjects() re_drive = re.compile('(?P.*?/drives/(?P.*))') re_block = re.compile('(?P.*?/block_devices/(?P.*))') @@ -164,7 +157,7 @@ class IsoDumper(object): def backup_sel(self): if self.backup_bname.get_current_folder_uri() == None : - self.backup_bname.set_current_folder_uri('file:///home/'+self.user) + self.backup_bname.set_current_folder_uri('file://'+os.path.expanduser('~')) self.backup_bname.set_current_name(self.device_name+".img") self.choose.run() @@ -288,10 +281,8 @@ class IsoDumper(object): return self.ima.setDisabled() self.writebt.setDisabled() - # TODO Appel via DBus self.progress.setLabel(_('Writing {source} to {target}').format(source=source.split('/')[-1],target=target.split('/')[-1])) self.logger(_('Executing copy from ')+source+_(' to ')+target) - print(_('Writing {source} to {target}').format(source=source.split('/')[-1],target=target.split('/')[-1])) bus = SystemBus() iface = bus.get("org.mageia.Magiback","Isodumper") success, message = iface.do_unmount(target) @@ -305,7 +296,7 @@ class IsoDumper(object): time.sleep(1) success, message = iface.end() if success: - self.logger(_('Image {source} successfully written to {target}').format( source=source.split('/')[-1], target=target) + self.logger(_('Image {source} successfully written to {target}').format( source=source.split('/')[-1], target=target)) self.logger(_('Bytes written: ')+str(b)) self.check_write(target, b) self.success() @@ -403,18 +394,9 @@ class IsoDumper(object): #exit(0) def write_logfile(self): - import pwd - pw = pwd.getpwnam(self.user) - uid = pw.pw_uid - gid=pw.pw_gid - if (self.user != 'root') and (self.user !=''): - logpath='/home/'+self.user+'/.isodumper' - os.setgid(gid) - os.setuid(uid) - if not(os.path.isdir(logpath)): + logpath = os.path.join(os.path.expanduser('~'),'/.isodumper') + if not(os.path.isdir(logpath)): os.mkdir(logpath) - else: - logpath='/root' logfile=open(logpath+'/isodumper.log',"w", encoding="utf-8") logfile.write(self.logview.logText()) logfile.close() @@ -459,19 +441,16 @@ NTFS or ext. You can specify a volume name and the format in a new dialog box.