Пример #1
0
	def __init__(self):
		self._keyring = Keyring()
Пример #2
0
class AccountList(list):
	def __init__(self):
		self._keyring = Keyring()

	
	def load_from_cfg(self, cfg, enabled_only=False):
		del self[:]
		
		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')
				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')	))
				folder	= 			self._get_account_cfg(cfg, section_name, 'folder')
			
				protocol = 'imap' if imap else 'pop'
				password = self._keyring.get(protocol, user, server)
			
				acc = Account(enabled, name, user, password, server, port, ssl, imap, idle, folder)
				self.append(acc)

			i = i + 1
			section_name = "Account" + str(i)
			

	def save_to_cfg(self, cfg):		
		# remove existing accounts from cfg
		i = 1
		section_name = "Account" + str(i)
		while cfg.has_section(section_name):
			cfg.remove_section(section_name)
			i = i + 1
			section_name = "Account" + str(i)
		
		# add accounts
		i = 1
		for acc in self:
			section_name = "Account" + str(i)
			
			cfg.add_section(section_name)
			
			cfg.set(section_name, 'enabled', int(acc.enabled))
			cfg.set(section_name, 'name', acc.name)
			cfg.set(section_name, 'user', acc.user)
			cfg.set(section_name, 'server', acc.server)
			cfg.set(section_name, 'port', acc.port)
			cfg.set(section_name, 'ssl', int(acc.ssl))
			cfg.set(section_name, 'imap', int(acc.imap))
			cfg.set(section_name, 'idle', int(acc.idle))
			cfg.set(section_name, 'folder', acc.folder)
			
			protocol = 'imap' if acc.imap else 'pop'
			self._keyring.set(protocol, acc.user, acc.server, acc.password)

			i = i + 1
		
		# delete obsolete entries from Keyring
		self._keyring.remove(self)
	
	
	def import_from_keyring(self):
		# append imported accounts to existing accounts
		self.extend(self._keyring.import_accounts())
	
	
	def _get_account_cfg(self, cfg, section_name, option_name):
		if cfg.has_option(section_name, option_name):
			return cfg.get(section_name, option_name)
		else:
			return account_defaults[option_name]