def run(self): self._fill_account_type_cmb() self._entry_account_name.set_text(self._acc.name) self._entry_account_user.set_text(self._acc.user) self._entry_account_password.set_text(self._acc.password) self._entry_account_server.set_text(self._acc.server) self._entry_account_port.set_text(self._acc.port) self._entry_account_folders.set_text(', '.join(self._acc.folders)) self._chk_account_push.set_active(self._acc.idle) self._chk_account_ssl.set_active(self._acc.ssl) res = self._window.run() if res == 1: acctype = self._cmb_account_type.get_active() if (acctype == IDX_POP3) or (acctype == IDX_IMAP): self._acc.name = self._entry_account_name.get_text() self._acc.user = self._entry_account_user.get_text() self._acc.password = self._entry_account_password.get_text() self._acc.server = self._entry_account_server.get_text() self._acc.port = self._entry_account_port.get_text() self._acc.ssl = self._chk_account_ssl.get_active() if acctype == IDX_POP3: self._acc.imap = False self._acc.folders = [] self._acc.idle = False elif acctype == IDX_IMAP: self._acc.imap = True self._acc.folders = splitstr(self._entry_account_folders.get_text(), ',') self._acc.idle = self._chk_account_push.get_active() else: # known provider (imap only) self._acc.name = self._entry_account_user.get_text() self._acc.user = self._entry_account_user.get_text() self._acc.password = self._entry_account_password.get_text() self._acc.ssl = True self._acc.imap = True self._acc.folders = splitstr(self._entry_account_folders.get_text(), ',') self._acc.idle = not self._has_multiple_folders() if acctype < len(PROVIDER_CONFIGS): p = PROVIDER_CONFIGS[acctype] if not (p[0].lower() in self._acc.name.lower()): self._acc.name += (' (%s)' % p[0]) self._acc.server = p[1] self._acc.port = p[2] else: raise Exception('Unknown account type') self._window.destroy() return res
def load_from_cfg(self, cfg, enabled_only = False): del self._accounts[:] del self._removed[:] i = 1 section_name = "account" + str(i) while cfg.has_section(section_name): enabled = bool(int( self._get_account_cfg(cfg, section_name, 'enabled') )) if (not enabled_only) or (enabled_only and enabled): name = self._get_account_cfg(cfg, section_name, 'name') user = self._get_account_cfg(cfg, section_name, 'user') password = self._get_account_cfg(cfg, section_name, 'password') server = self._get_account_cfg(cfg, section_name, 'server') port = self._get_account_cfg(cfg, section_name, 'port') ssl = bool(int( self._get_account_cfg(cfg, section_name, 'ssl') )) imap = bool(int( self._get_account_cfg(cfg, section_name, 'imap') )) idle = bool(int( self._get_account_cfg(cfg, section_name, 'idle') )) folders = splitstr(self._get_account_cfg(cfg, section_name, 'folder'), ',') if self._credentialstore != None: protocol = 'imap' if imap else 'pop' password = self._credentialstore.get(CREDENTIAL_KEY % (protocol, user, server)) acc = Account(enabled, name, user, password, '', server, port, ssl, imap, idle, folders) self._accounts.append(acc) i = i + 1 section_name = "account" + str(i)
def _str_to_folders(folders_str): if re.match(r'^\[.*\]$', folders_str): folders = json.loads(folders_str) else: folders = splitstr(folders_str, ',') return folders