--- a/src/eric7/WebBrowser/Passwords/PasswordReader.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/WebBrowser/Passwords/PasswordReader.py Wed Jul 13 14:55:47 2022 +0200 @@ -7,25 +7,24 @@ Module implementing a class to read login data files. """ -from PyQt6.QtCore import ( - QXmlStreamReader, QIODevice, QFile, QCoreApplication, QUrl -) +from PyQt6.QtCore import QXmlStreamReader, QIODevice, QFile, QCoreApplication, QUrl class PasswordReader(QXmlStreamReader): """ Class implementing a reader object for login data files. """ + def __init__(self): """ Constructor """ super().__init__() - + def read(self, fileNameOrDevice): """ Public method to read a login data file. - + @param fileNameOrDevice name of the file to read (string) or reference to the device to read (QIODevice) @return tuple containing the logins, forms and never URLs @@ -33,7 +32,7 @@ self.__logins = {} self.__loginForms = {} self.__never = [] - + if isinstance(fileNameOrDevice, QIODevice): self.setDevice(fileNameOrDevice) else: @@ -42,35 +41,35 @@ return self.__logins, self.__loginForms, self.__never f.open(QIODevice.OpenModeFlag.ReadOnly) self.setDevice(f) - + while not self.atEnd(): self.readNext() if self.isStartElement(): version = self.attributes().value("version") - if ( - self.name() == "Password" and - (not version or version == "2.0") - ): + if self.name() == "Password" and (not version or version == "2.0"): self.__readPasswords() else: - self.raiseError(QCoreApplication.translate( - "PasswordReader", - "The file is not a Passwords version 2.0 file.")) - + self.raiseError( + QCoreApplication.translate( + "PasswordReader", + "The file is not a Passwords version 2.0 file.", + ) + ) + return self.__logins, self.__loginForms, self.__never - + def __readPasswords(self): """ Private method to read and parse the login data file. """ if not self.isStartElement() and self.name() != "Password": return - + while not self.atEnd(): self.readNext() if self.isEndElement(): break - + if self.isStartElement(): if self.name() == "Logins": self.__readLogins() @@ -80,14 +79,14 @@ self.__readNevers() else: self.__skipUnknownElement() - + def __readLogins(self): """ Private method to read the login information. """ if not self.isStartElement() and self.name() != "Logins": return - + while not self.atEnd(): self.readNext() if self.isEndElement(): @@ -95,7 +94,7 @@ continue else: break - + if self.isStartElement(): if self.name() == "Login": attributes = self.attributes() @@ -105,30 +104,31 @@ self.__logins[key] = (user, password) else: self.__skipUnknownElement() - + def __readForms(self): """ Private method to read the forms information. """ if not self.isStartElement() and self.name() != "Forms": return - + while not self.atEnd(): self.readNext() if self.isStartElement(): if self.name() == "Form": from .LoginForm import LoginForm + attributes = self.attributes() key = attributes.value("key") form = LoginForm() form.url = QUrl(attributes.value("url")) form.name = attributes.value("name") - + elif self.name() == "PostData": form.postData = self.readElementText() else: self.__skipUnknownElement() - + if self.isEndElement(): if self.name() == "Form": self.__loginForms[key] = form @@ -137,14 +137,14 @@ continue else: break - + def __readNevers(self): """ Private method to read the never URLs. """ if not self.isStartElement() and self.name() != "Nevers": return - + while not self.atEnd(): self.readNext() if self.isEndElement(): @@ -152,24 +152,24 @@ continue else: break - + if self.isStartElement(): if self.name() == "Never": self.__never.append(self.attributes().value("url")) else: self.__skipUnknownElement() - + def __skipUnknownElement(self): """ Private method to skip over all unknown elements. """ if not self.isStartElement(): return - + while not self.atEnd(): self.readNext() if self.isEndElement(): break - + if self.isStartElement(): self.__skipUnknownElement()