From 532b19e80a75aac172c14a9e1c2d15f08f2b23f3 Mon Sep 17 00:00:00 2001 From: tonio Date: Tue, 8 Jun 2010 15:17:57 +0200 Subject: [PATCH] #57: bugfix ? --- extensions/webmail/imap_listing.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/extensions/webmail/imap_listing.py b/extensions/webmail/imap_listing.py index 7d36fb9ed..df18e3b63 100644 --- a/extensions/webmail/imap_listing.py +++ b/extensions/webmail/imap_listing.py @@ -117,8 +117,24 @@ class IMAPheader(object): res += part[0].strip(" ") return decode(res) +class ConnectionsManager(type): + def __init__(cls, name, bases, dict): + super(ConnectionsManager, cls).__init__(name, bases, dict) + cls.instances = {} + + def __call__(cls, *args, **kwargs): + if kwargs.has_key("user"): + key = kwargs["user"] + if not cls.instances.has_key(key): + cls.instances[key] = None + if cls.instances[kwargs["user"]] is None: + cls.instances[kwargs["user"]] = \ + super(ConnectionsManager, cls).__call__(*args, **kwargs) + return cls.instances[kwargs["user"]] + return None + class IMAPconnector(object): - __metaclass__ = Singleton + __metaclass__ = ConnectionsManager def __init__(self, request=None, user=None, password=None): self.criterions = []