core: use of the new core.log module:

/!\ this is a massive refactoring and was largely automated, it probably did bring some bugs /!\
This commit is contained in:
Goffi 2014-04-19 19:19:19 +02:00
commit 501bc92528

View file

@ -18,20 +18,17 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from sat.core.i18n import _
from logging import debug, info, error
import warnings
from sat.core.log import getLogger
log = getLogger(__name__)
from twisted.internet import protocol, defer
from twisted.words.protocols.jabber import error as jab_error
from twisted.cred import portal, checkers, credentials
from twisted.cred import error as cred_error
from twisted.mail import imap4
from twisted.python import failure
from email.parser import Parser
import email.message
import os
from cStringIO import StringIO
from twisted.internet import reactor
import pdb
from zope.interface import implements
@ -61,14 +58,14 @@ class IMAP_server(object):
"""
def __init__(self, host):
info(_("Plugin Imap Server initialization"))
log.info(_("Plugin Imap Server initialization"))
self.host = host
#parameters
host.memory.updateParams(self.params)
port = int(self.host.memory.getParamA("IMAP Port", "Mail Server"))
info(_("Launching IMAP server on port %d"), port)
log.info(_("Launching IMAP server on port %d") % port)
self.server_factory = ImapServerFactory(self.host)
reactor.listenTCP(port, self.server_factory)
@ -78,7 +75,7 @@ class Message(object):
implements(imap4.IMessage)
def __init__(self, uid, flags, mess_fp):
debug('Message Init')
log.debug('Message Init')
self.uid = uid
self.flags = flags
self.mess_fp = mess_fp
@ -87,21 +84,21 @@ class Message(object):
def getUID(self):
"""Retrieve the unique identifier associated with this message.
"""
debug('getUID (message)')
log.debug('getUID (message)')
return self.uid
def getFlags(self):
"""Retrieve the flags associated with this message.
@return: The flags, represented as strings.
"""
debug('getFlags')
log.debug('getFlags')
return self.flags
def getInternalDate(self):
"""Retrieve the date internally associated with this message.
@return: An RFC822-formatted date string.
"""
debug('getInternalDate')
log.debug('getInternalDate')
return self.message['Date']
def getHeaders(self, negate, *names):
@ -111,7 +108,7 @@ class Message(object):
should be omitted from the return value, rather than included.
@return: A mapping of header field names to header field values
"""
debug('getHeaders %s - %s' % (negate, names))
log.debug('getHeaders %s - %s' % (negate, names))
final_dict = {}
to_check = [name.lower() for name in names]
for header in self.message.keys():
@ -123,20 +120,20 @@ class Message(object):
def getBodyFile(self):
"""Retrieve a file object containing only the body of this message.
"""
debug('getBodyFile')
log.debug('getBodyFile')
return StringIO(self.message.get_payload())
def getSize(self):
"""Retrieve the total size, in octets, of this message.
"""
debug('getSize')
log.debug('getSize')
self.mess_fp.seek(0, os.SEEK_END)
return self.mess_fp.tell()
def isMultipart(self):
"""Indicate whether this message has subparts.
"""
debug('isMultipart')
log.debug('isMultipart')
return False
def getSubPart(self, part):
@ -144,7 +141,7 @@ class Message(object):
@param part: The number of the part to retrieve, indexed from 0.
@return: The specified sub-part.
"""
debug('getSubPart')
log.debug('getSubPart')
return TypeError
@ -154,14 +151,14 @@ class SatMailbox(object):
def __init__(self, host, name, profile):
self.host = host
self.listeners = set()
debug('Mailbox init (%s)', name)
log.debug('Mailbox init (%s)', name)
if name != "INBOX":
raise imap4.MailboxException("Only INBOX is managed for the moment")
self.mailbox = self.host.plugins["Maildir"].accessMessageBox(name, self.newMessage, profile)
def newMessage(self):
"""Called when a new message is in the mailbox"""
debug("newMessage signal received")
log.debug("newMessage signal received")
nb_messages = self.getMessageCount()
for listener in self.listeners:
listener.newMessages(nb_messages, None)
@ -169,13 +166,13 @@ class SatMailbox(object):
def getUIDValidity(self):
"""Return the unique validity identifier for this mailbox.
"""
debug('getUIDValidity')
log.debug('getUIDValidity')
return 0
def getUIDNext(self):
"""Return the likely UID for the next message added to this mailbox.
"""
debug('getUIDNext')
log.debug('getUIDNext')
return self.mailbox.getNextUid()
def getUID(self, message):
@ -183,41 +180,41 @@ class SatMailbox(object):
@param message: The message sequence number
@return: The UID of the message.
"""
debug('getUID (%i)' % message)
log.debug('getUID (%i)' % message)
#return self.mailbox.getUid(message-1) #XXX: it seems that this method get uid and not message sequence number
return message
def getMessageCount(self):
"""Return the number of messages in this mailbox.
"""
debug('getMessageCount')
log.debug('getMessageCount')
ret = self.mailbox.getMessageCount()
debug("count = %i" % ret)
log.debug("count = %i" % ret)
return ret
def getRecentCount(self):
"""Return the number of messages with the 'Recent' flag.
"""
debug('getRecentCount')
log.debug('getRecentCount')
return len(self.mailbox.getMessageIdsWithFlag('\\Recent'))
def getUnseenCount(self):
"""Return the number of messages with the 'Unseen' flag.
"""
debug('getUnseenCount')
log.debug('getUnseenCount')
return self.getMessageCount() - len(self.mailbox.getMessageIdsWithFlag('\\SEEN'))
def isWriteable(self):
"""Get the read/write status of the mailbox.
@return: A true value if write permission is allowed, a false value otherwise.
"""
debug('isWriteable')
log.debug('isWriteable')
return True
def destroy(self):
"""Called before this mailbox is deleted, permanently.
"""
debug('destroy')
log.debug('destroy')
def requestStatus(self, names):
"""Return status information about this mailbox.
@ -229,7 +226,7 @@ class SatMailbox(object):
information up would be costly, a deferred whose callback will
eventually be passed this dictionary is returned instead.
"""
debug('requestStatus')
log.debug('requestStatus')
return imap4.statusRequestHelper(self, names)
def addListener(self, listener):
@ -239,7 +236,7 @@ class SatMailbox(object):
@param listener: An object to add to the set of those which will
be notified when the contents of this mailbox change.
"""
debug('addListener %s' % listener)
log.debug('addListener %s' % listener)
self.listeners.add(listener)
def removeListener(self, listener):
@ -252,7 +249,7 @@ class SatMailbox(object):
@raise ValueError: Raised when the given object is not a listener for
this mailbox.
"""
debug('removeListener')
log.debug('removeListener')
if listener in self.listeners:
self.listeners.remove(listener)
else:
@ -267,7 +264,7 @@ class SatMailbox(object):
id if the message is added successfully and whose errback is
invoked otherwise.
"""
debug('addMessage')
log.debug('addMessage')
raise imap4.MailboxException("Client message addition not implemented yet")
def expunge(self):
@ -275,7 +272,7 @@ class SatMailbox(object):
@return: The list of message sequence numbers which were deleted,
or a Deferred whose callback will be invoked with such a list.
"""
debug('expunge')
log.debug('expunge')
self.mailbox.removeDeleted()
def fetch(self, messages, uid):
@ -284,13 +281,13 @@ class SatMailbox(object):
about
@param uid: If true, the IDs specified in the query are UIDs;
"""
debug('fetch (%s, %s)' % (messages, uid))
log.debug('fetch (%s, %s)' % (messages, uid))
if uid:
messages.last = self.mailbox.getMaxUid()
messages.getnext = self.mailbox.getNextExistingUid
for mess_uid in messages:
if mess_uid is None:
debug('stopping iteration')
log.debug('stopping iteration')
raise StopIteration
try:
yield (mess_uid, Message(mess_uid, self.mailbox.getFlagsUid(mess_uid), self.mailbox.getMessageUid(mess_uid)))
@ -318,7 +315,7 @@ class SatMailbox(object):
been performed, or a Deferred whose callback will be invoked with
such a dict.
"""
debug('store')
log.debug('store')
flags = [flag.upper() for flag in flags]
@ -361,13 +358,13 @@ class SatMailbox(object):
Flags with the \\ prefix are reserved for use as system flags.
@return: A list of the flags that can be set on messages in this mailbox.
"""
debug('getFlags')
log.debug('getFlags')
return ['\\SEEN', '\\ANSWERED', '\\FLAGGED', '\\DELETED', '\\DRAFT'] # TODO: add '\\RECENT'
def getHierarchicalDelimiter(self):
"""Get the character which delimits namespaces for in this mailbox.
"""
debug('getHierarchicalDelimiter')
log.debug('getHierarchicalDelimiter')
return '.'
@ -375,12 +372,12 @@ class ImapSatAccount(imap4.MemoryAccount):
#implements(imap4.IAccount)
def __init__(self, host, profile):
debug("ImapAccount init")
log.debug("ImapAccount init")
self.host = host
self.profile = profile
imap4.MemoryAccount.__init__(self, profile)
self.addMailbox("Inbox") # We only manage Inbox for the moment
debug('INBOX added')
log.debug('INBOX added')
def _emptyMailbox(self, name, id):
return SatMailbox(self.host, name, self.profile)
@ -393,7 +390,7 @@ class ImapRealm(object):
self.host = host
def requestAvatar(self, avatarID, mind, *interfaces):
debug('requestAvatar')
log.debug('requestAvatar')
profile = avatarID.decode('utf-8')
if imap4.IAccount not in interfaces:
raise NotImplementedError
@ -436,13 +433,13 @@ class ImapServerFactory(protocol.ServerFactory):
self.host = host
def startedConnecting(self, connector):
debug(_("IMAP server connection started"))
log.debug(_("IMAP server connection started"))
def clientConnectionLost(self, connector, reason):
debug(_("IMAP server connection lost (reason: %s)"), reason)
log.debug(_("IMAP server connection lost (reason: %s)"), reason)
def buildProtocol(self, addr):
debug("Building protocol")
log.debug("Building protocol")
prot = protocol.ServerFactory.buildProtocol(self, addr)
prot.portal = portal.Portal(ImapRealm(self.host))
prot.portal.registerChecker(SatProfileCredentialChecker(self.host))