def restoreState(self, value): if not value: return raw = eval(str(value)) cookieList = [] for cookie in raw: name = QByteArray.fromBase64(cookie[0]) value = QByteArray.fromBase64(cookie[1]) networkCookie = QNetworkCookie(name, value) networkCookie.setPath(str(cookie[2], 'utf-8')) networkCookie.setDomain(str(cookie[3], 'utf-8')) networkCookie.setExpirationDate( QDateTime.fromString(str(cookie[4], 'utf-8'))) if Common.isQtVersion45(): networkCookie.setHttpOnly(eval(cookie[5])) networkCookie.setSecure(eval(cookie[6])) cookieList.append(networkCookie) self.cookieJar.setAllCookies(cookieList) self.uiWeb.page().networkAccessManager().setCookieJar(self.cookieJar)
def saveState(self): cookieList = self.cookieJar.allCookies() raw = [] for cookie in cookieList: # We don't want to store session cookies if cookie.isSessionCookie(): continue # Store cookies in a list as a dict would occupy # more space and we want to minimize network bandwidth if Common.isQtVersion45(): isHttpOnly = str(cookie.isHttpOnly()) else: isHttpOnly = True raw.append([ str(cookie.name().toBase64()), str(cookie.value().toBase64()), str(cookie.path()).encode('utf-8'), str(cookie.domain()).encode('utf-8'), str(cookie.expirationDate().toString()).encode('utf-8'), str(isHttpOnly), str(cookie.isSecure()), ]) return QByteArray(str(raw))
def __init__(self, parent=None): QTabWidget.__init__(self, parent) self.pressedAt = -1 if Common.isQtVersion45(): self.setMovable(True)
def login(self, url, databaseName): # Before connecting to the specified database # try to logout from the previous one. That will allow the # user to cancel the operation if any of the tabs is modified # and it will stop requests timer and subscription. if not self.logout(): return try: loginResponse = Rpc.session.login(url, databaseName) url = QUrl(url) if loginResponse == Rpc.session.LoggedIn: Settings.loadFromServer() if Settings.value('koo.stylesheet_code'): QApplication.instance().setStyleSheet( Settings.value('koo.stylesheet_code')) if Settings.value('koo.use_cache'): Rpc.session.cache = Rpc.Cache.ActionViewCache() else: Rpc.session.cache = None iconVisible = Settings.value('koo.show_system_tray_icon', True) self.systemTrayIcon.setVisible(iconVisible) # Start timer once settings have been loaded because # the request interval can be configured self.startRequestsTimer() self.openMenuTab() self.openHomeTab() if Settings.value('open.model'): model = Settings.value('open.model') id = Settings.value('open.id') or False mode = 'tree,form' if id: try: id = int(id) mode = 'form,tree' except: id = False pass Api.instance.createWindow(None, model, id, view_type='form', mode=mode) if Common.isQtVersion45(): self.tabWidget.setTabsClosable( Settings.value('koo.tabs_closable')) self.updateRequestsStatus() self.updateUserShortcuts() elif loginResponse == Rpc.session.Exception: QMessageBox.warning(self, _('Connection error !'), _('Unable to connect to the server !')) elif loginResponse == Rpc.session.InvalidCredentials: QMessageBox.warning(self, _('Connection error !'), _('Bad username or password !')) except Rpc.RpcException as e: if len(e.args) == 2: (e1, e2) = e.args Common.error(_('Connection Error !'), e.args[0], e.args[1]) else: Common.error(_('Connection Error !'), _('Error logging into database.'), e) Rpc.session.logout()