MailComponent refactoring

- MailComponent constructor received all parameters red in the configuration file
- MailComponent get a new attribut lang. get_lang* methods have been put in Lang.

darcs-hash:20060206133123-86b55-377d908cb7164dc8a04c53cae6ce0444f9cc347b.gz
This commit is contained in:
David Rousselie
2006-02-06 14:31:23 +01:00
parent a063a69773
commit 8dc5a2aaa5
5 changed files with 87 additions and 51 deletions

View File

@@ -50,31 +50,37 @@ class ComponentFatalError(RuntimeError):
pass
class MailComponent(Component):
def __init__(self, config):
def __init__(self,
jid,
secret,
server,
port,
default_lang,
check_interval,
spool_dir,
storage):
Component.__init__(self, \
JID(config.get_content("config/jabber/service")), \
config.get_content("config/jabber/secret"), \
config.get_content("config/jabber/server"), \
int(config.get_content("config/jabber/port")), \
JID(jid), \
secret, \
server, \
port, \
disco_category = "gateway", \
disco_type = "headline")
self.__logger = logging.getLogger("jabber.Component")
self.__shutdown = 0
self.__default_lang = config.get_content("config/jabber/language")
self.__lang = Lang(default_lang)
signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)
self.__interval = int(config.get_content("config/check_interval"))
self.__config = config
spool_dir = config.get_content("config/spooldir") + "/" + \
config.get_content("config/jabber/service")
self.__interval = check_interval
spool_dir += "/" + jid
try:
self.__storage = globals()[config.get_content("config/storage") \
self.__storage = globals()[storage \
+ "Storage"](2, spool_dir = spool_dir)
except:
print >>sys.stderr, "Cannot find " \
+ config.get_content("config/storage") + "Storage class"
+ storage + "Storage class"
sys.exit(1)
# dump registered accounts (save) every hour
self.__count = 60
@@ -82,17 +88,7 @@ class MailComponent(Component):
def __del__(self):
logging.shutdown()
def get_lang(self, node):
lang = node.getLang()
if lang is None:
self.__logger.debug("Using default lang " + self.__default_lang)
lang = self.__default_lang
return lang
def get_lang_class(self, lang):
return getattr(Lang, lang)
""" Register Form creator """
def get_reg_form(self, lang_class):
reg_form = X()
@@ -484,7 +480,7 @@ class MailComponent(Component):
""" Discovery get nested nodes handler """
def disco_get_items(self, node, iq):
self.__logger.debug("DISCO_GET_ITEMS")
lang_class = self.get_lang_class(self.get_lang(iq.get_node()))
lang_class = self.__lang.get_lang_class_from_node(iq.get_node())
base_from_jid = unicode(iq.get_from().bare())
di = DiscoItems()
if not node:
@@ -510,7 +506,7 @@ class MailComponent(Component):
""" Send back register form to user """
def get_register(self, iq):
self.__logger.debug("GET_REGISTER")
lang_class = self.get_lang_class(self.get_lang(iq.get_node()))
lang_class = self.__lang.get_lang_class_from_node(iq.get_node())
base_from_jid = unicode(iq.get_from().bare())
to = iq.get_to()
iq = iq.make_result_response()
@@ -527,7 +523,7 @@ class MailComponent(Component):
""" Handle user registration response """
def set_register(self, iq):
self.__logger.debug("SET_REGISTER")
lang_class = self.get_lang_class(self.get_lang(iq.get_node()))
lang_class = self.__lang.get_lang_class_from_node(iq.get_node())
to = iq.get_to()
from_jid = iq.get_from()
base_from_jid = unicode(from_jid.bare())
@@ -699,7 +695,7 @@ class MailComponent(Component):
self.__logger.debug("PRESENCE_AVAILABLE")
from_jid = stanza.get_from()
base_from_jid = unicode(from_jid.bare())
lang_class = self.get_lang_class(self.get_lang(stanza.get_node()))
lang_class = self.__lang.get_lang_class_from_node(stanza.get_node())
name = stanza.get_to().node
show = stanza.get_show()
self.__logger.debug("SHOW : " + str(show))
@@ -819,7 +815,7 @@ class MailComponent(Component):
""" Handle new message """
def message(self, message):
self.__logger.debug("MESSAGE: " + message.get_body())
lang_class = self.get_lang_class(self.get_lang(message.get_node()))
lang_class = self.__lang.get_lang_class_from_node(message.get_node())
name = message.get_to().node
base_from_jid = unicode(message.get_from().bare())
if re.compile("\[PASSWORD\]").search(message.get_subject()) is not None \
@@ -905,7 +901,6 @@ class MailComponent(Component):
account = self.__storage[(jid, name)]
if account.first_check and account.live_email_only:
account.first_check = False
print "HERE"
if account.password is None:
self.__ask_password(name, jid, account.default_lang_class, account)
return