From abd31aa908d08a2025aeef0401cd651aefaa2eb0 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Caruana Date: Thu, 7 Feb 2013 18:54:50 +0100 Subject: [PATCH] imports optimization --- modoboa/extensions/webmail/__init__.py | 19 +++---- modoboa/extensions/webmail/forms.py | 3 +- modoboa/extensions/webmail/lib.py | 55 +++++++++---------- modoboa/extensions/webmail/middleware.py | 3 +- .../webmail/templatetags/webextras.py | 22 ++++---- modoboa/extensions/webmail/urls.py | 7 ++- modoboa/extensions/webmail/views.py | 41 +++++++------- 7 files changed, 72 insertions(+), 78 deletions(-) diff --git a/modoboa/extensions/webmail/__init__.py b/modoboa/extensions/webmail/__init__.py index 66141e318..d6efada12 100644 --- a/modoboa/extensions/webmail/__init__.py +++ b/modoboa/extensions/webmail/__init__.py @@ -2,7 +2,6 @@ from django.utils.translation import ugettext as _, ugettext_lazy from django.core.urlresolvers import reverse from modoboa.lib import events, parameters -from modoboa.lib.webutils import static_url from modoboa.extensions import ModoExtension, exts_pool class Webmail(ModoExtension): @@ -11,23 +10,23 @@ class Webmail(ModoExtension): version = "1.0" description = ugettext_lazy("Simple IMAP webmail") needs_media = True - + def load(self): parameters.register_app(uparams_opts=dict(needs_mailbox=True)) - - parameters.register_admin("IMAP_SERVER", type="string", + + parameters.register_admin("IMAP_SERVER", type="string", deflt="127.0.0.1", help=ugettext_lazy("Address of your IMAP server")) - parameters.register_admin("IMAP_SECURED", type="list_yesno", + parameters.register_admin("IMAP_SECURED", type="list_yesno", deflt="no", help=ugettext_lazy("Use a secured connection to access IMAP server")) parameters.register_admin("IMAP_PORT", type="int", deflt="143", help=ugettext_lazy("Listening port of your IMAP server")) - parameters.register_admin("SMTP_SERVER", type="string", + parameters.register_admin("SMTP_SERVER", type="string", deflt="127.0.0.1", help=ugettext_lazy("Address of your SMTP server")) - parameters.register_admin("SMTP_SECURED_MODE", type="list", - values=[("none", ugettext_lazy("None")), + parameters.register_admin("SMTP_SECURED_MODE", type="list", + values=[("none", ugettext_lazy("None")), ("starttls", "STARTTLS"), ("ssl", "SSL/TLS")], deflt="none", @@ -39,7 +38,7 @@ class Webmail(ModoExtension): help=ugettext_lazy("Server needs authentication")) parameters.register_admin("MAX_ATTACHMENT_SIZE", type="int", deflt=2048, help=ugettext_lazy("Maximum attachment size in bytes (or KB, MB, GB if specified)")) - + parameters.register_user("MESSAGES_PER_PAGE", type="int", deflt=40, label=ugettext_lazy("Number of displayed emails per page"), help=ugettext_lazy("Sets the maximum number of messages displayed in a page")) @@ -101,7 +100,7 @@ def userlogout(request): password=request.session["password"]) except Exception, e: return - + # The following statement may fail under Python 2.6... try: m.logout() diff --git a/modoboa/extensions/webmail/forms.py b/modoboa/extensions/webmail/forms.py index ad9acb8f1..9a6507d31 100644 --- a/modoboa/extensions/webmail/forms.py +++ b/modoboa/extensions/webmail/forms.py @@ -1,3 +1,4 @@ +# coding: utf-8 from django import forms from django.utils.translation import ugettext_lazy as _ @@ -9,7 +10,7 @@ class ComposeMailForm(forms.Form): subject = forms.CharField(label=_("Subject"), max_length=255, required=False) origmsgid = forms.CharField(label="", widget=forms.HiddenInput(), required=False) - + class FolderForm(forms.Form): oldname = forms.CharField(label="", widget=forms.HiddenInput(), required=False) name = forms.CharField() diff --git a/modoboa/extensions/webmail/lib.py b/modoboa/extensions/webmail/lib.py index 43e53fc82..f26ed8cf5 100644 --- a/modoboa/extensions/webmail/lib.py +++ b/modoboa/extensions/webmail/lib.py @@ -1,31 +1,30 @@ # coding: utf-8 - -import sys, os -import re import time from datetime import datetime, timedelta import email import lxml import chardet -from django.core.files.uploadhandler import FileUploadHandler, StopUpload, SkipFile -from django.http import HttpResponse + +from django.core.files.uploadhandler import FileUploadHandler, SkipFile from django.utils.translation import ugettext as _, ugettext_lazy from django.conf import settings -from modoboa.lib import u2u_decode, tables, imap_utf7, parameters -from modoboa.lib.webutils import static_url, size2integer -from modoboa.lib.connections import ConnectionsManager -from modoboa.lib.email_listing import MBconnector, EmailListing -from modoboa.lib.emailutils import * +import os +import re +from modoboa.lib import u2u_decode, tables, parameters +from modoboa.lib.webutils import size2integer +from modoboa.lib.email_listing import EmailListing +from modoboa.lib.emailutils import * from imaputils import * from exceptions import * + class WMtable(tables.Table): tableid = "emails" styles = "table-condensed" idkey = "imapid" select = tables.ImgColumn( - "select", cssclass="draggable left", width="2%", + "select", cssclass="draggable left", width="2%", defvalue="%spics/grippy.png" % settings.STATIC_URL, header="" ) @@ -112,7 +111,7 @@ class ImapListing(EmailListing): deflocation = "INBOX/" defcallback = "wm_updatelisting" reset_wm_url = False - + def __init__(self, user, password, **kwargs): self.user = user self.mbc = IMAPconnector(user=user.username, password=password) @@ -165,7 +164,7 @@ class ImapEmail(Email): ('Subject', True), ] - def __init__(self, mbox, mailid, request, dformat="DISPLAYMODE", addrfull=False, + def __init__(self, mbox, mailid, request, dformat="DISPLAYMODE", addrfull=False, links=0): mformat = parameters.get_user(request.user, "DISPLAYMODE") self.dformat = parameters.get_user(request.user, dformat) @@ -179,7 +178,7 @@ class ImapEmail(Email): self.mailid = mailid headers = msg['BODY[HEADER.FIELDS (%s)]' % self.headers_as_text] fallback_fmt = "html" if self.dformat == "plain" else "plain" - + self.bs = BodyStructure(msg['BODYSTRUCTURE']) data = None @@ -206,7 +205,7 @@ class ImapEmail(Email): getattr(self, "viewmail_%s" % mformat)(bodyc, links=links) else: self.body = None - + self._find_attachments() msg = email.message_from_string(headers) @@ -257,7 +256,7 @@ class ImapEmail(Email): att.has_key("disposition") and len(att["disposition"]) > 1: params = att["disposition"][1] key = "filename" - + if key and params: for pos, value in enumerate(params): if value == key: @@ -311,7 +310,7 @@ class Modifier(ImapEmail): def _modify_html(self): pass - + class ReplyModifier(Modifier): headernames = ImapEmail.headernames + \ [("Reply-To", True), @@ -358,13 +357,13 @@ class ReplyModifier(Modifier): body += "\n" body += ">%s" % l self.body = body - + class ForwardModifier(Modifier): def __init__(self, mbox, mailid, request, form, **kwargs): super(ForwardModifier, self).__init__( mbox, mailid, request, dformat="EDITOR", **kwargs ) - + self._header() form.fields["from_"].initial = request.user.username form.fields["subject"].initial = "Fwd: %s" % self.Subject @@ -488,7 +487,7 @@ def find_images_in_body(body): % (ct, os.path.basename(fname))) p["Content-Disposition"] = "inline" parts.append(p) - + return lxml.html.tostring(html), parts def set_compose_session(request): @@ -557,7 +556,7 @@ def html2plaintext(content): if p is None: continue plaintext += p + "\n" - + return plaintext def get_current_url(request): @@ -603,7 +602,7 @@ def send_mail(request, posturl=None): """ from email.mime.multipart import MIMEMultipart from forms import ComposeMailForm - from modoboa.lib.webutils import getctx, ajax_simple_response, _render_to_string + from modoboa.lib.webutils import _render_to_string from modoboa.auth.lib import get_password form = ComposeMailForm(request.POST) @@ -623,13 +622,13 @@ def send_mail(request, posturl=None): submsg.attach(MIMEText(textbody.encode(charset), _subtype="plain", _charset=charset)) body, images = find_images_in_body(body) - submsg.attach(MIMEText(body.encode(charset), _subtype=editormode, + submsg.attach(MIMEText(body.encode(charset), _subtype=editormode, _charset=charset)) msg.attach(submsg) for img in images: msg.attach(img) else: - text = MIMEText(body.encode(charset), + text = MIMEText(body.encode(charset), _subtype=editormode, _charset=charset) if len(request.session["compose_mail"]["attachments"]): msg = MIMEMultipart() @@ -686,7 +685,7 @@ def send_mail(request, posturl=None): del request.session["compose_mail"] return True, dict(url=get_current_url(request)) - listing = _render_to_string(request, "webmail/compose.html", + listing = _render_to_string(request, "webmail/compose.html", {"form" : form, "noerrors" : True, "body" : request.POST["id_body"].strip(), "posturl" : posturl}) @@ -698,19 +697,19 @@ class AttachmentUploadHandler(FileUploadHandler): Simple upload handler to limit the size of the attachments users can upload. """ - + def __init__(self, request=None): super(AttachmentUploadHandler, self).__init__(request) self.total_upload = 0 self.toobig = False self.maxsize = size2integer(parameters.get_admin("MAX_ATTACHMENT_SIZE")) - + def receive_data_chunk(self, raw_data, start): self.total_upload += len(raw_data) if self.total_upload >= self.maxsize: self.toobig = True raise SkipFile() return raw_data - + def file_complete(self, file_size): return None diff --git a/modoboa/extensions/webmail/middleware.py b/modoboa/extensions/webmail/middleware.py index 37884dcab..2aeca7675 100644 --- a/modoboa/extensions/webmail/middleware.py +++ b/modoboa/extensions/webmail/middleware.py @@ -1,5 +1,4 @@ # coding: utf-8 - from modoboa.lib.webutils import ajax_response, _render_error from modoboa.extensions.webmail.exceptions import * @@ -10,6 +9,6 @@ class WebmailErrorMiddleware(object): json = request.GET.get("json", False) if request.method == "GET" \ else request.POST.get("json", False) if json: - return ajax_response(request, status="ko", + return ajax_response(request, status="ko", respmsg=str(exception), norefresh=True) return _render_error(request, user_context=dict(error=str(exception))) diff --git a/modoboa/extensions/webmail/templatetags/webextras.py b/modoboa/extensions/webmail/templatetags/webextras.py index e3a704745..2c9be5edf 100644 --- a/modoboa/extensions/webmail/templatetags/webextras.py +++ b/modoboa/extensions/webmail/templatetags/webextras.py @@ -5,15 +5,13 @@ from django.utils.translation import ugettext as _ from django.core.urlresolvers import reverse from django.conf import settings from modoboa.extensions import webmail -from modoboa.extensions.webmail.lib import IMAPheader from modoboa.extensions.webmail.imaputils import separate_mailbox from modoboa.lib import parameters -from modoboa.lib.webutils import static_url register = template.Library() @register.simple_tag -def viewmail_menu(selection, folder, user, mail_id=None): +def viewmail_menu(selection, folder, user, mail_id=None): entries = [ {"name" : "reply", "url" : "action=reply&mbox=%s&mailid=%s" % (folder, mail_id), @@ -34,21 +32,21 @@ def viewmail_menu(selection, folder, user, mail_id=None): {"name" : "display_options", "label" : _("Display options"), "menu" : [ - {"name" : "activate_links", + {"name" : "activate_links", "label" : _("Activate links")}, - {"name" : "disable_links", + {"name" : "disable_links", "label" : _("Disable links")} ] } ] - menu = render_to_string('common/buttons_list.html', - {"selection" : selection, "entries" : entries, + menu = render_to_string('common/buttons_list.html', + {"selection" : selection, "entries" : entries, "user" : user, "extraclasses" : "pull-left"}) entries = [{"name" : "close", "title" : _("Close this message"), "img" : "icon-remove"}] - menu += render_to_string('common/buttons_list.html', + menu += render_to_string('common/buttons_list.html', {"entries" : entries, "extraclasses" : "pull-right"}) return menu @@ -65,8 +63,8 @@ def compose_menu(selection, backurl, user): "img" : "icon-envelope", "label" : _("Send")}, ] - return render_to_string('common/buttons_list.html', - {"selection" : selection, "entries" : entries, + return render_to_string('common/buttons_list.html', + {"selection" : selection, "entries" : entries, "user" : user}) @register.simple_tag @@ -136,7 +134,7 @@ def print_mailboxes(tree, selected=None, withunseen=False, selectonly=False): ul_state = "hidden" div_state = "collapsed" result += "
" % div_state - + cssclass = "block" extra_attrs = "" if withunseen and mbox.has_key("unseen"): @@ -148,7 +146,7 @@ def print_mailboxes(tree, selected=None, withunseen=False, selectonly=False): %s -""" % (mbox.has_key("path") and mbox["path"] or mbox["name"], cssclass, +""" % (mbox.has_key("path") and mbox["path"] or mbox["name"], cssclass, 'selectfolder' if selectonly else 'loadfolder', extra_attrs, iclass, label) if mbox.has_key("sub") and len(mbox["sub"]): result += "