diff --git a/pym/cl_client.py b/pym/cl_client.py index f7d167a..d225924 100644 --- a/pym/cl_client.py +++ b/pym/cl_client.py @@ -163,7 +163,7 @@ org.kde.kdialog.ProgressDialog' close_fds=True, env=env, shell=True) pipe.stdin.close() - # wait for terminate kdialog, which say dbus dialog id + # wait for terminate kdialog, which say dbus dialog id if pipe.poll() is None: # ожидание в 5 сек for t in range(500): @@ -171,12 +171,12 @@ org.kde.kdialog.ProgressDialog' if pipe.poll() != None: break - # waiting is ok + # waiting is ok if pipe.poll() == 0: self.kdialog = pipe.stdout.readline().strip() while not "org.kde.kdialog" in self.kdialog: s = pipe.stdout.readline() - # if bad result of kdialog then shutdown dialog + # if bad result of kdialog then shutdown dialog if s == "": pipe.stdout.close() pipe.stderr.close() @@ -186,7 +186,7 @@ org.kde.kdialog.ProgressDialog' self.setTitle(self.title) pipe.stdout.close() pipe.stderr.close() - # waiting is failed + # waiting is failed else: pipe.stdout.close() pipe.stderr.close() @@ -1629,6 +1629,15 @@ or ld_bind_dn or ld_bind_pw") return False return True + def removeNoiseFiles(self, userHome): + """Удаление файлов, создающих помехи работе dm""" + noiseFiles = ['.dmrc'] + for nsFile in noiseFiles: + rmFile = os.path.join(userHome, nsFile) + if os.path.exists(rmFile): + os.remove(rmFile) + return True + def removePrivateFiles(self, userHome): """Удаление приватных файлов""" privateFiles = ['.kde4/share/apps/kwallet/kdewallet.kwl', @@ -1803,6 +1812,8 @@ or ld_bind_dn or ld_bind_pw") if exitStr != "process": needSync = True except: + # Удаляем файлы, мешающие работе dm + self.removeNoiseFiles(homeDir) # Удаляем приватные файлы self.removePrivateFiles(homeDir) # Очищаем ключ в ядре @@ -1812,6 +1823,8 @@ or ld_bind_dn or ld_bind_pw") return False if needSync and not self.syncUser(userName,homeDir,"logout",uid,gid): + # Удаляем файлы, мешающие работе dm + self.removeNoiseFiles(homeDir) # Удаляем приватные файлы self.removePrivateFiles(homeDir) # Очищаем ключ в ядре @@ -1819,6 +1832,8 @@ or ld_bind_dn or ld_bind_pw") # Отмонтируем пользовательские ресурсы в случае ошибки self.errorAndUnmountUserRes = True return False + # Удаляем файлы, мешающие работе dm + self.removeNoiseFiles(homeDir) # Удаляем приватные файлы self.removePrivateFiles(homeDir) # Очищаем ключ в ядре