PEP8 fixes

This commit is contained in:
Antoine Nguyen
2015-01-15 11:23:22 +01:00
parent d47749400b
commit 5f3979acff
5 changed files with 101 additions and 55 deletions
+46 -16
View File
@@ -1,10 +1,13 @@
"""Custom forms."""
from django import forms
from django.http import QueryDict
from django.utils.translation import ugettext as _, ugettext_lazy
from django.forms.widgets import RadioFieldRenderer, RadioSelect, RadioInput
from django.utils.safestring import mark_safe
from django.utils.html import conditional_escape
from django.http import QueryDict
from django.utils.encoding import force_unicode
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.extensions.admin.templatetags.admin_tags import gender
@@ -20,6 +23,7 @@ class FiltersSetForm(forms.Form):
class CustomRadioInput(RadioInput):
def __unicode__(self):
return self.render()
@@ -39,13 +43,16 @@ class CustomRadioInput(RadioInput):
class CustomRadioFieldRenderer(RadioFieldRenderer):
def __iter__(self):
for i, choice in enumerate(self.choices):
yield CustomRadioInput(self.name, self.value, self.attrs.copy(), choice, i)
yield CustomRadioInput(
self.name, self.value, self.attrs.copy(), choice, i)
def __getitem__(self, idx):
choice = self.choices[idx]
return CustomRadioInput(self.name, self.value, self.attrs.copy(), choice, idx)
return CustomRadioInput(
self.name, self.value, self.attrs.copy(), choice, idx)
def render(self):
return mark_safe(u'\n'.join([force_unicode(w) for w in self]))
@@ -56,6 +63,7 @@ class CustomRadioSelect(RadioSelect):
class FilterForm(forms.Form):
def __init__(self, conditions, actions, request, *args, **kwargs):
super(FilterForm, self).__init__(*args, **kwargs)
@@ -80,10 +88,18 @@ class FilterForm(forms.Form):
]
self.cond_templates = [
{"name": "Subject", "label": _("Subject"), "operators": self.header_operators},
{"name": "From", "label": _("Sender"), "operators": self.header_operators},
{"name": "To", "label": _("Recipient"), "operators": self.header_operators},
{"name": "Cc", "label": _("Cc"), "operators": self.header_operators},
{"name": "Subject",
"label": _("Subject"),
"operators": self.header_operators},
{"name": "From",
"label": _("Sender"),
"operators": self.header_operators},
{"name": "To",
"label": _("Recipient"),
"operators": self.header_operators},
{"name": "Cc",
"label": _("Cc"),
"operators": self.header_operators},
{"name": "size", "label": _("Size"),
"operators": [("over", _("is greater than"), "number"),
("under", _("is less than"), "number")]},
@@ -160,10 +176,14 @@ class FilterForm(forms.Form):
arg = args[cnt]
aname = "action_arg_%d_%d" % (self.actions_cnt, cnt)
if arg["type"] == "string":
self.fields[aname] = forms.CharField(max_length=255, initial=value)
self.fields[aname] = forms.CharField(
max_length=255,
initial=value)
elif arg["type"] == "list":
choices = getattr(self, arg["vloader"])(request)
self.fields[aname] = forms.ChoiceField(initial=value, choices=choices)
self.fields[aname] = forms.ChoiceField(
initial=value,
choices=choices)
self.actions_cnt += 1
def _build_redirect_field(self, request, value):
@@ -177,7 +197,10 @@ class FilterForm(forms.Form):
for fd in folders:
value = fd["path"] if "path" in fd else fd["name"]
if parentmb:
ret += [(value, fd["name"].replace("%s%s" % (parentmb, imapc.hdelimiter), ""))]
ret += [
(value, fd["name"].replace(
"%s%s" % (parentmb, imapc.hdelimiter), ""))
]
else:
ret += [(value, fd["name"])]
if "sub" in fd:
@@ -206,7 +229,10 @@ class FilterForm(forms.Form):
argcpt = 0
while True:
try:
naction += (self.cleaned_data["action_arg_%d_%d" % (cpt, argcpt)],)
naction += (
self.cleaned_data[
"action_arg_%d_%d" %
(cpt, argcpt)],)
except KeyError:
break
argcpt += 1
@@ -228,8 +254,12 @@ def build_filter_form_from_qdict(request):
if cpt == int(request.POST["conds"]):
break
if "cond_target_%d" % i in request.POST:
qdict["cond_target_%d" % cpt] = request.POST["cond_target_%d" % i]
qdict["cond_operator_%d" % cpt] = request.POST["cond_operator_%d" % i]
qdict["cond_target_%d" % cpt] = (
request.POST["cond_target_%d" % i]
)
qdict["cond_operator_%d" % cpt] = (
request.POST["cond_operator_%d" % i]
)
qdict["cond_value_%d" % cpt] = request.POST["cond_value_%d" % i]
condtarget = request.POST["cond_target_%d" % i]
condop = request.POST["cond_operator_%d" % i]
+17 -9
View File
@@ -1,12 +1,16 @@
# coding: utf-8
from django.utils.translation import ugettext as _
"""Internal tools."""
from sievelib.factory import FiltersSet
from sievelib.managesieve import Client, Error
from sievelib.parser import Parser
from sievelib.factory import FiltersSet
from django.utils.translation import ugettext as _
from modoboa.lib import parameters
from modoboa.lib.exceptions import ModoboaException
from modoboa.lib.connections import ConnectionsManager, ConnectionError
from modoboa.lib.exceptions import ModoboaException
class SieveClientError(ModoboaException):
@@ -19,7 +23,7 @@ class SieveClient(object):
def __init__(self, user=None, password=None):
try:
ret, msg = self.login(user, password)
except Error, e:
except Error as e:
raise ConnectionError(str(e))
if not ret:
raise ConnectionError(msg)
@@ -38,7 +42,10 @@ class SieveClient(object):
except Error:
ret = False
if not ret:
return False, _("Connection to MANAGESIEVE server failed, check your configuration")
return False, _(
"Connection to MANAGESIEVE server failed, check your "
"configuration"
)
return True, None
def logout(self):
@@ -51,13 +58,13 @@ class SieveClient(object):
if self.msc is not None:
try:
self.msc.capability()
except Error, e:
except Error as e:
pass
else:
return
try:
ret, msg = self.login(user, password)
except (Error, ssl.SSLError), e:
except (Error, ssl.SSLError) as e:
raise ConnectionError(e)
if not ret:
raise ConnectionError(msg)
@@ -80,10 +87,11 @@ class SieveClient(object):
return fs
def pushscript(self, name, content, active=False):
if type(content) is unicode:
if isinstance(content, unicode):
content = content.encode("utf-8")
if not self.msc.havespace(name, len(content)):
error = "%s (%s)" % (_("Not enough space on server"), self.msc.errmsg)
error = "%s (%s)" % (
_("Not enough space on server"), self.msc.errmsg)
raise SieveClientError(error)
if not self.msc.putscript(name, content):
raise SieveClientError(self.msc.errmsg)
@@ -34,7 +34,7 @@ def fset_menu(mode, setname):
"img": "fa fa-plus",
"label": _("New filter"),
"url": reverse("sievefilters:filter_add",
args=[setname]),
args=[setname]),
"modal": True,
"autowidth": True,
"modalcb": "filterform_cb"}
@@ -45,7 +45,7 @@ def fset_menu(mode, setname):
"img": "fa fa-download-alt",
"label": _("Save filters set"),
"url": reverse("sievefilters:fs_save",
args=[setname])},
args=[setname])},
]
entries += [
@@ -53,7 +53,7 @@ def fset_menu(mode, setname):
"img": "fa fa-check",
"label": _("Activate filters set"),
"url": reverse("sievefilters:fs_activate",
args=[setname])},
args=[setname])},
{"name": "removefs",
"img": "fa fa-trash",
"label": _("Remove filters set"),
+1 -2
View File
@@ -2,7 +2,7 @@ if __name__ == "__main__":
clt = ManageSieveClient("mail.koalabs.org", 2000)
if clt.connect("tonio@ngyn.org", "aka/12;c", starttls=True):
print clt.get_sasl_mechanisms()
print clt.get_sieve_capabilities()
print clt.get_sieve_capabilities()
print clt.havespace("test", 45)
if not clt.putscript("myscript", """require ["fileinto", "envelope"];
@@ -40,4 +40,3 @@ InvalidSieveCommand
else:
print clt.errmsg
clt.logout()
+34 -25
View File
@@ -1,25 +1,31 @@
# coding: utf-8
from sievelib.managesieve import Error
from sievelib.commands import BadArgument, BadValue
"""Custom views."""
from rfc6266 import build_header
from django.shortcuts import render
from django.http import HttpResponse
from django.template.loader import render_to_string
from sievelib.commands import BadArgument, BadValue
from sievelib.managesieve import Error
from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from modoboa.lib import parameters
from modoboa.lib.web_utils import _render_error, \
ajax_response, render_to_json_response
from modoboa.lib.connections import ConnectionError
from modoboa.lib.exceptions import BadRequest
from modoboa.extensions.admin.lib import needs_mailbox
from .lib import SieveClient, SieveClientError
from django.http import HttpResponse
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _
from .forms import (
FilterForm, build_filter_form_from_qdict, build_filter_form_from_filter,
FiltersSetForm
)
from .lib import SieveClient, SieveClientError
from .templatetags.sfilters_tags import fset_menu
from modoboa.extensions.admin.lib import needs_mailbox
from modoboa.lib import parameters
from modoboa.lib.connections import ConnectionError
from modoboa.lib.exceptions import BadRequest
from modoboa.lib.web_utils import (
_render_error, ajax_response, render_to_json_response
)
@login_required
@@ -30,12 +36,12 @@ def index(request, tplname="sievefilters/index.html"):
try:
sc = SieveClient(user=request.user.username,
password=request.session["password"])
except ConnectionError, e:
except ConnectionError as e:
return _render_error(request, user_context={"error": e})
try:
active_script, scripts = sc.listscripts()
except Error, e:
except Error as e:
return _render_error(request, user_context={"error": e})
if active_script is None:
@@ -73,7 +79,7 @@ def getfs(request, name):
error = None
try:
content = sc.getscript(name, format=editormode)
except SieveClientError, e:
except SieveClientError as e:
error = str(e)
else:
if content is None:
@@ -104,7 +110,8 @@ def build_filter_ctx(ctx, form):
return ctx
def submitfilter(request, setname, okmsg, tplname, tplctx, update=False, sc=None):
def submitfilter(
request, setname, okmsg, tplname, tplctx, update=False, sc=None):
form = build_filter_form_from_qdict(request)
if form.is_valid():
if sc is None:
@@ -169,11 +176,13 @@ def editfilter(request, setname, fname, tplname="sievefilters/filter.html"):
sc = SieveClient(user=request.user.username,
password=request.session["password"])
if request.method == "POST":
return submitfilter(request, setname, _("Filter modified"), tplname, ctx,
update=True, sc=sc)
return submitfilter(
request, setname, _("Filter modified"), tplname, ctx,
update=True, sc=sc
)
fset = sc.getscript(setname, format="fset")
if type(fname) is unicode:
if isinstance(fname, unicode):
fname = fname.encode("utf-8")
f = fset.getfilter(fname)
form = build_filter_form_from_filter(request, fname, f)
@@ -199,13 +208,13 @@ def removefilter(request, setname, fname):
@login_required
@needs_mailbox()
def savefs(request, name):
if not "scriptcontent" in request.POST:
if "scriptcontent" not in request.POST:
return
sc = SieveClient(user=request.user.username,
password=request.session["password"])
try:
sc.pushscript(name, request.POST["scriptcontent"])
except SieveClientError, e:
except SieveClientError as e:
error = str(e)
return ajax_response(request, "ko", respmsg=error)
return ajax_response(request, respmsg=_("Filters set saved"))
@@ -258,7 +267,7 @@ def activate_filters_set(request, name):
password=request.session["password"])
try:
sc.activatescript(name)
except SieveClientError, e:
except SieveClientError as e:
return ajax_response(request, "ko", respmsg=str(e))
return ajax_response(request, respmsg=_("Filters set activated"))
@@ -270,7 +279,7 @@ def download_filters_set(request, name):
password=request.session["password"])
try:
script = sc.getscript(name)
except SieveClientError, e:
except SieveClientError as e:
return ajax_response(request, "ko", respmsg=str(e))
resp = HttpResponse(script)
@@ -285,7 +294,7 @@ def download_filters_set(request, name):
def toggle_filter_state(request, setname, fname):
sc = SieveClient(user=request.user.username,
password=request.session["password"])
if type(fname) is unicode:
if isinstance(fname, unicode):
fname = fname.encode("utf-8")
fset = sc.getscript(setname, format="fset")
if fset.is_filter_disabled(fname):