def fill(self, page): """ Public slot to fill login forms with saved data. @param page reference to the web page (QWebPage) """ if page is None or page.mainFrame() is None: return if not self.__loaded: self.__load() url = page.mainFrame().url() url = self.__stripUrl(url) key = self.__createKey(url, "") if key not in self.__loginForms or \ key not in self.__logins: return form = self.__loginForms[key] if form.url != url: return if form.name == "": formName = QString("0") else: try: formName = QString("%d" % int(form.name)) except ValueError: formName = QString('"%1"').arg(form.name) for element in form.elements: name = element[0] value = element[1] disabled = page.mainFrame().evaluateJavaScript( 'document.forms[%s].elements["%s"].disabled' % (formName, name)).toBool() if disabled: continue readOnly = page.mainFrame().evaluateJavaScript( 'document.forms[%s].elements["%s"].readOnly' % (formName, name)).toBool() if readOnly: continue type_ = page.mainFrame().evaluateJavaScript( 'document.forms[%s].elements["%s"].type' % (formName, name)).toString() if type_ == "" or \ type_ in ["hidden", "reset", "submit"]: continue if type_ == "password": value = Utilities.pwDecode(self.__logins[key][1]) setType = type_ == "checkbox" and "checked" or "value" value = value.replace("\\", "\\\\") value = value.replace('"', '\\"') javascript = 'document.forms[%s].elements["%s"].%s="%s";' % \ (formName, name, setType, value) page.mainFrame().evaluateJavaScript(javascript)
def siteInfo(self, site): """ Public method to get a reference to the named site. @param site web site name (string or QString) @return tuple containing the user name (string) and password (string) """ if not self.__loaded: self.__load() site = unicode(site) if site not in self.__logins: return None return self.__logins[site][0], Utilities.pwDecode(self.__logins[site][1])
def getLogin(self, url, realm): """ Public method to get the login credentials. @param url URL to get the credentials for (QUrl) @param realm realm to get the credentials for (string or QString) @return tuple containing the user name (string) and password (string) """ if not self.__loaded: self.__load() key = self.__createKey(url, realm) try: return self.__logins[key][0], Utilities.pwDecode(self.__logins[key][1]) except KeyError: return "", ""