Helpviewer/Passwords/PasswordManager.py

changeset 414
8c91e942d2da
parent 110
c9a969db1469
child 492
01f3384d535a
equal deleted inserted replaced
413:3d82e6eb3516 414:8c91e942d2da
62 Public method to save the form data to a file. 62 Public method to save the form data to a file.
63 63
64 @param f file or file like object open for writing 64 @param f file or file like object open for writing
65 @return flag indicating success (booelan) 65 @return flag indicating success (booelan)
66 """ 66 """
67 f.write("%s\n" % self.url.toString()) 67 f.write("{0}\n".format(self.url.toString()))
68 f.write("%s\n" % self.name) 68 f.write("{0}\n".format(self.name))
69 f.write("%s\n" % self.hasAPassword) 69 f.write("{0}\n".format(self.hasAPassword))
70 for element in self.elements: 70 for element in self.elements:
71 f.write("%s = %s\n" % (element[0], element[1])) 71 f.write("{0} = {1}\n".format(element[0], element[1]))
72 72
73 class PasswordManager(QObject): 73 class PasswordManager(QObject):
74 """ 74 """
75 Class implementing the password manager. 75 Class implementing the password manager.
76 76
151 @param url URL to get the credentials for (QUrl) 151 @param url URL to get the credentials for (QUrl)
152 @param realm realm to get the credentials for (string) 152 @param realm realm to get the credentials for (string)
153 @return key string (string) 153 @return key string (string)
154 """ 154 """
155 if realm: 155 if realm:
156 key = "%s://%s (%s)" % (url.scheme(), url.authority(), realm) 156 key = "{0}://{1} ({2})".format(url.scheme(), url.authority(), realm)
157 else: 157 else:
158 key = "%s://%s" % (url.scheme(), url.authority()) 158 key = "{0}://{1}".format(url.scheme(), url.authority())
159 return key 159 return key
160 160
161 def save(self): 161 def save(self):
162 """ 162 """
163 Public slot to save the login entries to disk. 163 Public slot to save the login entries to disk.
167 167
168 loginFile = os.path.join(Utilities.getConfigDir(), "browser", "logins") 168 loginFile = os.path.join(Utilities.getConfigDir(), "browser", "logins")
169 try: 169 try:
170 f = open(loginFile, "w", encoding = "utf-8") 170 f = open(loginFile, "w", encoding = "utf-8")
171 for key, login in list(self.__logins.items()): 171 for key, login in list(self.__logins.items()):
172 f.write("%s\n" % key) 172 f.write("{0}\n".format(key))
173 f.write("%s\n" % login[0]) 173 f.write("{0}\n".format(login[0]))
174 f.write("%s\n" % login[1]) 174 f.write("{0}\n".format(login[1]))
175 f.write("%s\n" % self.SEPARATOR) 175 f.write("{0}\n".format(self.SEPARATOR))
176 if self.__loginForms: 176 if self.__loginForms:
177 f.write("%s\n" % self.FORMS) 177 f.write("{0}\n".format(self.FORMS))
178 for key, form in list(self.__loginForms.items()): 178 for key, form in list(self.__loginForms.items()):
179 f.write("%s\n" % key) 179 f.write("{0}\n".format(key))
180 form.save(f) 180 form.save(f)
181 f.write("%s\n" % self.SEPARATOR) 181 f.write("{0}\n".format(self.SEPARATOR))
182 if self.__never: 182 if self.__never:
183 f.write("%s\n" % self.NEVER) 183 f.write("{0}\n".format(self.NEVER))
184 for key in self.__never: 184 for key in self.__never:
185 f.write("%s\n") % key 185 f.write("{0}\n".format(key))
186 f.close() 186 f.close()
187 except IOError as err: 187 except IOError as err:
188 QMessageBox.critical(None, 188 QMessageBox.critical(None,
189 self.trUtf8("Saving login data"), 189 self.trUtf8("Saving login data"),
190 self.trUtf8("""<p>Login data could not be saved to <b>{0}</b></p>""" 190 self.trUtf8("""<p>Login data could not be saved to <b>{0}</b></p>"""
529 529
530 if form.name == "": 530 if form.name == "":
531 formName = "0" 531 formName = "0"
532 else: 532 else:
533 try: 533 try:
534 formName = "%d" % int(form.name) 534 formName = "{0:d}".format(int(form.name))
535 except ValueError: 535 except ValueError:
536 formName = '"%s"' % form.name 536 formName = '"{0}"'.format(form.name)
537 for element in form.elements: 537 for element in form.elements:
538 name = element[0] 538 name = element[0]
539 value = element[1] 539 value = element[1]
540 540
541 disabled = page.mainFrame().evaluateJavaScript( 541 disabled = page.mainFrame().evaluateJavaScript(
542 'document.forms[%s].elements["%s"].disabled' % (formName, name)) 542 'document.forms[{0}].elements["{1}"].disabled'.format(formName, name))
543 if disabled: 543 if disabled:
544 continue 544 continue
545 545
546 readOnly = page.mainFrame().evaluateJavaScript( 546 readOnly = page.mainFrame().evaluateJavaScript(
547 'document.forms[%s].elements["%s"].readOnly' % (formName, name)) 547 'document.forms[{0}].elements["{1}"].readOnly'.format(formName, name))
548 if readOnly: 548 if readOnly:
549 continue 549 continue
550 550
551 type_ = page.mainFrame().evaluateJavaScript( 551 type_ = page.mainFrame().evaluateJavaScript(
552 'document.forms[%s].elements["%s"].type' % (formName, name)) 552 'document.forms[{0}].elements["{1}"].type'.format(formName, name))
553 if type_ == "" or \ 553 if type_ == "" or \
554 type_ in ["hidden", "reset", "submit"]: 554 type_ in ["hidden", "reset", "submit"]:
555 continue 555 continue
556 if type_ == "password": 556 if type_ == "password":
557 value = Utilities.pwDecode(self.__logins[key][1]) 557 value = Utilities.pwDecode(self.__logins[key][1])
558 setType = type_ == "checkbox" and "checked" or "value" 558 setType = type_ == "checkbox" and "checked" or "value"
559 value = value.replace("\\", "\\\\") 559 value = value.replace("\\", "\\\\")
560 value = value.replace('"', '\\"') 560 value = value.replace('"', '\\"')
561 javascript = 'document.forms[%s].elements["%s"].%s="%s";' % \ 561 javascript = 'document.forms[{0}].elements["{1}"].{2}="{3}";'.format(
562 (formName, name, setType, value) 562 formName, name, setType, value)
563 page.mainFrame().evaluateJavaScript(javascript) 563 page.mainFrame().evaluateJavaScript(javascript)

eric ide

mercurial