Nothing...

This commit is contained in:
tonio
2010-04-25 22:15:59 +02:00
parent b91b78847b
commit 1fc8f45a09
6 changed files with 34 additions and 12 deletions
+28 -9
View File
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
import re
import time
import imaplib
import ssl
#import ssl
from datetime import datetime, timedelta
from email.header import decode_header
import email.utils
@@ -141,11 +142,13 @@ class IMAPconnector(object):
self.m = imaplib.IMAP4_SSL(self.address, self.port)
else:
self.m = imaplib.IMAP4(self.address, self.port)
except (imaplib.IMAP4.error, ssl.SSLError), error:
# except (imaplib.IMAP4.error, ssl.SSLError), error:
except Exception, error:
return False, _("Connection to IMAP server failed, check your configuration")
try:
self.m.login(user, passwd)
except (imaplib.IMAP4.error, ssl.SSLError), error:
# except (imaplib.IMAP4.error, ssl.SSLError), error:
except Exception, error:
return False, _("Authentication failed, check your configuration")
return True, None
@@ -180,20 +183,33 @@ class IMAPconnector(object):
self.messages = data[0].split()
return len(self.messages)
def _parse_folder_name(self, dict, parts):
if not len(parts):
return
dict[parts[0]] = {}
self._parse_folder_name(dict[parts[0]], parts[1:])
def listfolders(self, topfolder='INBOX', md_folders=[]):
list_response_pattern = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)')
(status, data) = self.m.list()
result = []
result = {}
for mb in data:
attrs, truc, name = mb.split()
flags, delimiter, name = list_response_pattern.match(mb).groups()
name = name.strip('"').decode("imap4-utf-7")
if re.search("\%s" % delimiter, name):
parts = name.split(".")
dict = {}
self._parse_folder_name(dict, parts[1:])
result[parts[0]] = dict
continue
present = False
for mdf in md_folders:
if mdf["name"] == name:
present = True
break
if not present:
result += [name]
return sorted(result)
result[name] = None
return result
def msgseen(self, imapid):
folder, id = imapid.split("/")
@@ -271,8 +287,11 @@ class ImapListing(EmailListing):
{"name" : 'Sent'},
{"name" : 'Trash', "icon" : "trash.png"}]
folders = self.mbc.listfolders(md_folders=md_folders)
for fd in folders:
md_folders += [{"name" : fd}]
for fd in sorted(folders.keys()):
descr = {"name" : fd}
if folders[fd] != None:
descr["icon"] = "subfolders.png"
md_folders += [descr]
return md_folders
def parse_search_parameters(self, criterion, pattern):
+3 -2
View File
@@ -103,7 +103,7 @@ def index(request):
lst = ImapListing(request.user.username, request.session["password"],
baseurl="INBOX", navparams=navp, folder="INBOX",
empty=True)
except Exception as exp:
except Exception, exp:
return _render_error(request, {"error" : exp})
return lst.render(request)
@@ -217,7 +217,8 @@ def send_mail(request, withctx=False):
s = smtplib.SMTP(parameters.get("webmail", "SMTP_SERVER"))
if parameters.get("webmail", "SMTP_SECURED") == "yes":
s.starttls()
except (smtplib.SMTPException, ssl.SSLError), error:
#except (smtplib.SMTPException, ssl.SSLError), error:
except Exception, e:
print error
# Prévoir la remontée de cette erreur au niveau du client!!
+2 -1
View File
@@ -301,6 +301,7 @@ tr.selected {
},
});
});
if ($("toggleselect")) {
$("toggleselect").addEvent("click", function(evt) {
var checked = evt.target.get("checked");
if (checked) {
@@ -313,7 +314,7 @@ tr.selected {
selectedRows.empty();
}
});
}
$$("tr").addEvent("dblclick", viewmail);
$$("th[class*=sortable]").addEvent("click", function(evt) {
Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

+1
View File
@@ -23,6 +23,7 @@
{% block css %}{% endblock %}
</style>
<script src="/static/js/mif.tree.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEvent("domready", function() {
navparams = new Hash({