Useless import statements removed.

This commit is contained in:
Antoine Nguyen
2013-10-09 17:52:09 +02:00
parent 7d06993223
commit ff5b9e2457
52 changed files with 149 additions and 191 deletions
+3 -5
View File
@@ -3,7 +3,6 @@ from django import forms
from django.conf import settings
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib.formutils import YesNoField, SeparatorField, InlineRadioSelect
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.cryptutils import random_key
from modoboa.lib import parameters
@@ -202,7 +201,7 @@ class GeneralParametersForm(parameters.AdminParametersForm):
required_fields = ["ldap_search_base", "ldap_search_filter"]
else:
required_fields = ["ldap_user_dn_template"]
for f in required_fields:
if not f in cleaned_data or cleaned_data[f] == u'':
self._errors[f] = self.error_class([_("This field is required")])
@@ -214,7 +213,6 @@ class GeneralParametersForm(parameters.AdminParametersForm):
Doing so, we can use the django_auth_ldap module.
"""
from django.conf import settings
try:
import ldap
from django_auth_ldap.config import LDAPSearch
@@ -268,9 +266,9 @@ class UserSettings(parameters.UserParametersForm):
lang = forms.ChoiceField(
initial=translate_language_code(settings.LANGUAGE_CODE),
label=ugettext_lazy("Prefered language"),
choices=[("cs", "čeština"), ("de", "deutsch"),
choices=[("cs", "čeština"), ("de", "deutsch"),
("en", "english"), ("es", "español"),
("fr", "français"), ("it", "italiano"),
("pt", "português"), ("sv", "svenska"),],
("pt", "português"), ("sv", "svenska")],
help_text=ugettext_lazy("Prefered language to display pages")
)
-3
View File
@@ -1,6 +1,3 @@
import os
import sys
import re
from django.conf import settings
from django.conf.urls import include
+3 -4
View File
@@ -6,7 +6,6 @@ import base64
from random import Random
import reversion
from django.db import models
from django.db.models import Q
from django.dispatch import receiver
from django.utils import timezone
from django.utils.translation import ugettext as _, ugettext_lazy
@@ -16,7 +15,6 @@ from django.contrib.contenttypes import generic
from django.contrib.auth.models import (
UserManager, Group, AbstractBaseUser, PermissionsMixin
)
from django.contrib.contenttypes.models import ContentType
from modoboa.lib import events, md5crypt, parameters
from modoboa.lib.exceptions import PermDeniedException
from modoboa.lib.sysutils import exec_cmd
@@ -172,7 +170,8 @@ class User(AbstractBaseUser, PermissionsMixin):
@property
def tags(self):
return [{"name": "account", "label": _("account"), "type": "idt"},
{"name": self.group, "label": self.group, "type": "grp", "color": "info"}]
{"name": self.group, "label": self.group,
"type": "grp", "color": "info"}]
@property
def fullname(self):
@@ -313,7 +312,7 @@ class User(AbstractBaseUser, PermissionsMixin):
"account", loginname, password, first name, last name, enabled, group, address[, domain, ...]
:param user:
:param user: a ``core.User`` instance
:param row: a list containing the expected information
:param crypt_password:
"""
+5 -3
View File
@@ -1,4 +1,4 @@
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.translation import ugettext_lazy
from modoboa.lib import tables
@@ -6,7 +6,9 @@ class ExtensionsTable(tables.Table):
idkey = "id"
selection = tables.SelectionColumn("selection", width="4%", header=False)
label = tables.Column("label", label=ugettext_lazy("Name"), width="15%")
version = tables.Column("version", label=ugettext_lazy("Version"), width="6%")
version = tables.Column(
"version", label=ugettext_lazy("Version"), width="6%"
)
descr = tables.Column("description", label=ugettext_lazy("Description"))
cols_order = ["selection", "label", "version", "descr"]
+1 -1
View File
@@ -1,4 +1,4 @@
from django.conf.urls import patterns, url
from django.conf.urls import patterns
urlpatterns = patterns(
+1 -1
View File
@@ -1,6 +1,6 @@
from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.decorators import login_required
from modoboa.lib import events, parameters
from modoboa.lib.webutils import (
ajax_simple_response, _render_to_string
-1
View File
@@ -1,5 +1,4 @@
# coding: utf-8
from django.conf import settings
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from django.template.loader import render_to_string
+1 -1
View File
@@ -1,6 +1,6 @@
from django import forms
from django.utils.translation import ugettext_lazy
from modoboa.lib.formutils import YesNoField, SeparatorField, InlineRadioSelect
from modoboa.lib.formutils import YesNoField, SeparatorField
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib import parameters
-1
View File
@@ -1,5 +1,4 @@
import factory
from django.contrib.auth.models import Group
from . import models
+2 -5
View File
@@ -1,6 +1,5 @@
# coding: utf-8
from django import forms
from django.contrib.auth.models import Group
from django.utils.translation import ugettext as _, ugettext_lazy
from django.http import QueryDict
from modoboa.lib import events, parameters
@@ -10,9 +9,7 @@ from modoboa.lib.permissions import get_account_roles
from modoboa.lib.formutils import (
DomainNameField, YesNoField, DynamicForm, TabForms
)
from modoboa.lib.exceptions import PermDeniedException
from modoboa.core.models import User
from modoboa.extensions.admin.templatetags.admin_tags import gender
from modoboa.extensions.admin.exceptions import AdminError, BadDestination
from modoboa.extensions.admin.models import (
Domain, DomainAlias, Mailbox, Alias, Quota
@@ -547,7 +544,7 @@ class AccountFormMail(forms.Form, DynamicForm):
if not user.can_access(domain):
raise PermDeniedException
try:
mb = Mailbox.objects.get(address=locpart, domain=domain)
Mailbox.objects.get(address=locpart, domain=domain)
except Mailbox.DoesNotExist:
pass
else:
@@ -725,7 +722,7 @@ class ForwardForm(forms.Form):
if not local_part or not domname or not len(domname):
raise BadDestination("Invalid mailbox syntax for %s" % d)
try:
mb = Domain.objects.get(name=domname)
Domain.objects.get(name=domname)
except Domain.DoesNotExist:
self.dests += [d]
else:
+1 -1
View File
@@ -4,7 +4,7 @@ from django.db.models.manager import Manager
from django.utils.translation import ugettext as _, ugettext_lazy
from django.contrib.contenttypes import generic
from modoboa.lib import events, parameters
from modoboa.core.models import ObjectAccess
from modoboa.core.models import User, ObjectAccess
from modoboa.extensions.admin.exceptions import AdminError
from .base import DatesAware
@@ -1,10 +1,9 @@
import re
from django import template
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _, ugettext_lazy
from django.core.urlresolvers import reverse
from modoboa.lib import events
from modoboa.lib.webutils import static_url, render_actions
from modoboa.lib.webutils import render_actions
from modoboa.lib.templatetags.lib_tags import render_link
register = template.Library()
+4 -3
View File
@@ -12,10 +12,11 @@ TODO:
from django.core.urlresolvers import reverse
from django.core.files.base import ContentFile
from modoboa.core.models import User
from modoboa.core.factories import UserFactory, GroupFactory
from modoboa.core.factories import UserFactory
from modoboa.lib.tests import ModoTestCase
from modoboa.extensions.admin.lib import *
from modoboa.extensions.admin.models import *
from modoboa.extensions.admin.models import (
Domain, Mailbox, Alias, DomainAlias
)
from . import factories
+1 -1
View File
@@ -3,7 +3,7 @@ from django.utils.translation import ugettext as _, ungettext
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
login_required, permission_required
)
from modoboa.lib import events
from modoboa.lib.webutils import ajax_response, ajax_simple_response
+5 -3
View File
@@ -1,4 +1,4 @@
from django.http import HttpResponse, HttpResponseRedirect
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext as _, ungettext
from django.core.urlresolvers import reverse
from django.db import transaction
@@ -10,7 +10,7 @@ from django.contrib.auth.decorators import (
)
from modoboa.lib import parameters, events
from modoboa.lib.webutils import (
ajax_simple_response, ajax_response, _render_to_string
ajax_simple_response, _render_to_string
)
from modoboa.lib.formutils import CreationWizard
from modoboa.lib.exceptions import PermDeniedException
@@ -59,7 +59,9 @@ def _domains(request):
def domains(request, tplname="admin/domains.html"):
if not request.user.has_perm("admin.view_domains"):
if request.user.has_perm("admin.view_mailboxes"):
return HttpResponseRedirect(reverse(identities))
return HttpResponseRedirect(
reverse('modoboa.extensions.admin.views.identity.identities')
)
return HttpResponseRedirect(reverse("modoboa.core.views.user.index"))
return render(request, tplname, {"selection": "domains"})
+1 -2
View File
@@ -4,8 +4,7 @@ from rfc6266 import build_header
from django.http import HttpResponse
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.db import transaction
from django.utils.translation import ugettext as _, ungettext
from django.utils.translation import ugettext as _
from django.contrib.auth.decorators import (
login_required, permission_required, user_passes_test
)
+4 -2
View File
@@ -8,11 +8,13 @@ from django.contrib.auth.decorators import (
from django.views.decorators.csrf import ensure_csrf_cookie
from modoboa.lib import parameters, events
from modoboa.lib.exceptions import PermDeniedException
from modoboa.lib.webutils import ajax_simple_response, _render_to_string
from modoboa.lib.webutils import (
ajax_simple_response, _render_to_string, ajax_response
)
from modoboa.lib.formutils import CreationWizard
from modoboa.lib.templatetags.lib_tags import pagination_bar
from modoboa.core.models import User
from modoboa.extensions.admin.models import Mailbox
from modoboa.extensions.admin.models import Mailbox, Domain
from modoboa.extensions.admin.lib import (
get_sort_order, get_listing_page, get_identities
)
+1 -1
View File
@@ -1,5 +1,5 @@
import csv
from django.utils.translation import ugettext as _, ungettext
from django.utils.translation import ugettext as _
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.db import transaction, IntegrityError
+1 -1
View File
@@ -55,7 +55,7 @@ def forward(request, tplname='admin/forward.html'):
if al is not None:
form.fields["dest"].initial = al.extmboxes
try:
selfmb = al.mboxes.get(pk=mb.id)
al.mboxes.get(pk=mb.id)
except Mailbox.DoesNotExist:
pass
else:
+1 -1
View File
@@ -33,7 +33,7 @@ class Amavis(ModoExtension):
for dom in Domain.objects.all():
try:
u = Users.objects.get(email="@%s" % dom.name)
Users.objects.get(email="@%s" % dom.name)
except Users.DoesNotExist:
p = Policy.objects.create(policy_name=dom.name)
Users.objects.create(email="@%s" % dom.name, fullname=dom.name,
+2 -3
View File
@@ -1,5 +1,4 @@
# coding: utf-8
from django.utils.translation import ugettext_lazy as _
from django import forms
from models import Policy, Users
from modoboa.lib.formutils import InlineRadioSelect
@@ -20,7 +19,7 @@ class DomainPolicyForm(forms.ModelForm):
'spam_kill_level': forms.TextInput(attrs={'class': 'span1'}),
'spam_subject_tag2': forms.TextInput(attrs={'class': 'span2'}),
'bypass_banned_checks': InlineRadioSelect(),
}
}
def __init__(self, *args, **kwargs):
if "instance" in kwargs:
@@ -28,7 +27,7 @@ class DomainPolicyForm(forms.ModelForm):
try:
policy = Users.objects.get(email="@%s" % self.domain.name).policy
kwargs["instance"] = policy
except (Users.DoesNotExist, Policy.DoesNotExist), e:
except (Users.DoesNotExist, Policy.DoesNotExist):
del kwargs["instance"]
super(DomainPolicyForm, self).__init__(*args, **kwargs)
for f in self.fields.keys():
+6 -4
View File
@@ -6,10 +6,8 @@ import string
from functools import wraps
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.db.models import Q
from modoboa.lib import parameters
from modoboa.lib.exceptions import ModoboaException
from .models import Msgrcpt
def selfservice(ssfunc=None):
@@ -30,7 +28,9 @@ def selfservice(ssfunc=None):
return f(request, *args, **kwargs)
if parameters.get_admin("SELF_SERVICE") == "no":
from django.contrib.auth.views import redirect_to_login
return redirect_to_login(reverse("modoboa.extensions.amavis.views.index"))
return redirect_to_login(
reverse("modoboa.extensions.amavis.views.index")
)
return ssfunc(request, *args, **kwargs)
return wrapped_f
return decorator
@@ -50,7 +50,9 @@ class AMrelease(object):
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.sock.connect(path)
except socket.error, err:
raise ModoboaException(_("Connection to amavis failed: %s" % str(err)))
raise ModoboaException(
_("Connection to amavis failed: %s" % str(err))
)
def decode(self, answer):
def repl(match):
@@ -1,8 +1,5 @@
#!/usr/bin/env python
# coding: utf-8
import sys
import os
from optparse import make_option
from django.core.management.base import BaseCommand, CommandError
from django.template.loader import render_to_string
+1 -1
View File
@@ -10,7 +10,7 @@
# Original Amavis version : 2.6.2
from django.db import models
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.translation import ugettext_lazy
class Maddr(models.Model):
+5 -4
View File
@@ -1,15 +1,16 @@
# coding: utf-8
import re
from datetime import datetime
from django.utils.translation import ugettext as _, ugettext_lazy
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy
from django.db.models import Q
from modoboa.lib import tables
from modoboa.lib.webutils import static_url
from modoboa.lib.email_listing import MBconnector, EmailListing
from modoboa.lib.emailutils import *
from modoboa.lib.emailutils import Email
from modoboa.lib.dbutils import db_type
from modoboa.extensions.admin.models import Domain
from models import *
from .models import Quarantine, Msgrcpt
class Qtable(tables.Table):
@@ -1,112 +1,113 @@
from django import template
from django.template.loader import render_to_string
from django.template import Template, Context
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from django.conf import settings
from modoboa.lib.webutils import static_url
from modoboa.extensions import amavis
register = template.Library()
@register.simple_tag
def viewm_menu(user, mail_id, rcpt):
entries = [
{"name" : "release",
"img" : "icon-white icon-ok",
"class" : "btn-success",
"url" : reverse(amavis.views.release, args=[mail_id])
+ ("?rcpt=%s" % rcpt if rcpt else ""),
"label" : _("Release")},
{"name" : "delete",
"class" : "btn-danger",
"img" : "icon-white icon-trash",
"url" : reverse(amavis.views.delete, args=[mail_id]) \
+ ("?rcpt=%s" % rcpt if rcpt else ""),
"label" : _("Delete")},
{"name" : "headers",
"url" : reverse(amavis.views.viewheaders, args=[mail_id]),
"label" : _("View full headers")},
]
{"name": "release",
"img": "icon-white icon-ok",
"class": "btn-success",
"url": reverse('modoboa.extensions.amavis.views.release', args=[mail_id])
+ ("?rcpt=%s" % rcpt if rcpt else ""),
"label": _("Release")},
{"name": "delete",
"class": "btn-danger",
"img": "icon-white icon-trash",
"url": reverse('modoboa.extensions.amavis.views.delete', args=[mail_id])
+ ("?rcpt=%s" % rcpt if rcpt else ""),
"label": _("Delete")},
{"name": "headers",
"url": reverse('modoboa.extensions.amavis.views.viewheaders', args=[mail_id]),
"label": _("View full headers")},
]
menu = render_to_string('common/buttons_list.html',
{"entries" : entries, "extraclasses" : "pull-left"})
entries = [{"name" : "close",
"url" : "javascript:history.go(-1);",
"img" : "icon-remove"}]
menu += render_to_string('common/buttons_list.html',
{"entries" : entries, "extraclasses" : "pull-right"})
menu = render_to_string('common/buttons_list.html',
{"entries": entries, "extraclasses": "pull-left"})
entries = [{"name": "close",
"url": "javascript:history.go(-1);",
"img": "icon-remove"}]
menu += render_to_string(
'common/buttons_list.html',
{"entries": entries, "extraclasses": "pull-right"}
)
return menu
@register.simple_tag
def viewm_menu_simple(user, mail_id, rcpt, secret_id=""):
entries = [
{"name" : "release",
"img" : "icon-white icon-ok",
"class" : "btn-success",
"url" : reverse(amavis.views.release, args=[mail_id]) \
{"name": "release",
"img": "icon-white icon-ok",
"class": "btn-success",
"url": reverse('modoboa.extensions.amavis.views.release', args=[mail_id]) \
+ ("?rcpt=%s" % rcpt \
+ (("&secret_id=%s" % secret_id) if secret_id != "" else "")),
"label" : _("Release")},
{"name" : "delete",
"img" : "icon-white icon-trash",
"class" : "btn-danger",
"url" : reverse(amavis.views.delete, args=[mail_id]) \
"label": _("Release")},
{"name": "delete",
"img": "icon-white icon-trash",
"class": "btn-danger",
"url": reverse('modoboa.extensions.amavis.views.delete', args=[mail_id]) \
+ "?rcpt=%s" % rcpt \
+ ("&secret_id=%s" % secret_id if secret_id != "" else ""),
"label" : _("Delete")},
]
"label": _("Delete")},
]
return render_to_string('common/buttons_list.html',
{"entries": entries})
return render_to_string('common/buttons_list.html',
{"entries" : entries})
@register.simple_tag
def quar_menu(user):
entries = [
{"name" : "release-multi",
"url" : reverse(amavis.views.process),
"img" : "icon-white icon-ok",
"class" : "btn-success",
"label" : _("Release")},
{"name" : "delete-multi",
"img" : "icon-white icon-trash",
"class" : "btn-danger",
"url" : reverse(amavis.views.process),
"label" : _("Delete")},
{"name" : "select",
"url" : "",
"label" : _("Content Class"),
"menu" : [
{"name" : "selectmsgs",
"url" : "",
"label" : _("Nothing")},
{"name" : "selectmsgs",
"url" : "S",
"label" : _("Spam")},
{"name" : "selectmsgs",
"url" : "V",
"label" : _("Virus")},
{"name" : "selectmsgs",
"url" : "H",
"label" : _("Bad header")},
{"name" : "selectmsgs",
"url" : "M",
"label" : _("Bad MIME")}
]
}
]
{"name": "release-multi",
"url": reverse('modoboa.extensions.amavis.views.process'),
"img": "icon-white icon-ok",
"class": "btn-success",
"label": _("Release")},
{"name": "delete-multi",
"img": "icon-white icon-trash",
"class": "btn-danger",
"url": reverse('modoboa.extensions.amavis.views.process'),
"label": _("Delete")},
{"name": "select",
"url": "",
"label": _("Content Class"),
"menu": [
{"name": "selectmsgs",
"url": "",
"label": _("Nothing")},
{"name": "selectmsgs",
"url": "S",
"label": _("Spam")},
{"name": "selectmsgs",
"url": "V",
"label": _("Virus")},
{"name": "selectmsgs",
"url": "H",
"label": _("Bad header")},
{"name": "selectmsgs",
"url": "M",
"label": _("Bad MIME")}
]}
]
if user.group != 'SimpleUsers':
extraopts = [{"name" : "to", "label" : _("To")}]
extraopts = [{"name": "to", "label": _("To")}]
else:
extraopts = []
extracontent = render_to_string('common/email_searchbar.html', {
"STATIC_URL" : settings.STATIC_URL,
"extraopts" : extraopts
})
"STATIC_URL": settings.STATIC_URL,
"extraopts": extraopts
})
return render_to_string('common/buttons_list.html', dict(
entries=entries, extracontent=extracontent
))
entries=entries, extracontent=extracontent
))
+1
View File
@@ -19,6 +19,7 @@ from modoboa.extensions.admin.models import Mailbox, Domain
from templatetags.amavis_tags import quar_menu, viewm_menu
from .lib import selfservice, AMrelease
from .sql_listing import SQLlisting, SQLemail, get_wrapper
from .models import Msgrcpt
def __back_to_listing(request):
-2
View File
@@ -8,12 +8,10 @@ from django.contrib.auth.models import Permission, Group
from django.db import IntegrityError
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _, ugettext_lazy
from django.core.urlresolvers import reverse
from modoboa.lib import events, parameters
from modoboa.core.extensions import ModoExtension, exts_pool
from .forms import ResourcePoolForm
import controls
import views
class Limits(ModoExtension):
-1
View File
@@ -4,7 +4,6 @@
-------------------------------
"""
from django.contrib.auth.models import Group
from django.utils.translation import ugettext as _
from modoboa.lib.exceptions import ModoboaException
-3
View File
@@ -1,10 +1,7 @@
# coding: utf-8
from django.db import models
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib import parameters
from modoboa.core.models import User
from django.conf import settings
limits_tpl = [
@@ -6,8 +6,7 @@ This module provides a way to integrate Modoboa auto-reply
functionality into Postfix.
"""
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.translation import ugettext_lazy
from modoboa.lib import events, parameters
from modoboa.core.extensions import ModoExtension, exts_pool
from .models import Transport, Alias
@@ -24,7 +23,7 @@ class PostfixAutoreply(ModoExtension):
for dom in Domain.objects.all():
try:
trans = Transport.objects.get(domain="autoreply.%s" % dom.name)
Transport.objects.get(domain="autoreply.%s" % dom.name)
except Transport.DoesNotExist:
onCreateDomain(None, dom)
else:
@@ -32,7 +31,7 @@ class PostfixAutoreply(ModoExtension):
for mb in dom.mailbox_set.all():
try:
alias = Alias.objects.get(full_address=mb.full_address)
Alias.objects.get(full_address=mb.full_address)
except Alias.DoesNotExist:
onCreateMailbox(None, mb)
@@ -1,7 +1,6 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from modoboa.extensions.admin.models import Domain, Mailbox
from modoboa.extensions.admin.models import Mailbox
class Transport(models.Model):
@@ -2,7 +2,7 @@ from django import template
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from modoboa.lib.webutils import render_actions, static_url
from modoboa.lib.webutils import render_actions
register = template.Library()
+1 -2
View File
@@ -8,10 +8,9 @@ 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.webutils import _render_to_string, _render_error, \
from modoboa.lib.webutils import _render_error, \
ajax_response, ajax_simple_response
from modoboa.lib.connections import ConnectionError
from modoboa.lib.cryptutils import get_password
from modoboa.extensions.admin.lib import needs_mailbox
from .lib import SieveClient, SieveClientError
from .forms import (
-2
View File
@@ -1,9 +1,7 @@
# coding: utf-8
import sys
import os
import time
import datetime
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib import parameters
@@ -23,7 +23,7 @@ import os
import re
import rrdtool
import string
from django.core.management.base import BaseCommand, CommandError
from django.core.management.base import BaseCommand
from optparse import make_option
from modoboa.lib import parameters
from modoboa.extensions.admin.models import Domain
+6 -6
View File
@@ -1,8 +1,8 @@
from django.conf.urls import patterns, include, url
urlpatterns = patterns('modoboa.extensions.stats.views',
url(r'^$', 'index', name='fullindex'),
url(r'^graphs/$', "graphs"),
)
from django.conf.urls import patterns, url
urlpatterns = patterns(
'modoboa.extensions.stats.views',
url(r'^$', 'index', name='fullindex'),
url(r'^graphs/$', "graphs"),
)
+2 -2
View File
@@ -1,6 +1,6 @@
# coding: utf-8
from django.shortcuts import render
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils.translation import ugettext as _
from django.contrib.auth.decorators import (
login_required, user_passes_test, permission_required
)
@@ -10,7 +10,7 @@ from modoboa.lib.webutils import (
_render_to_string, ajax_simple_response
)
from modoboa.extensions.admin.models import (
Domain, Mailbox
Domain
)
from modoboa.extensions.stats.grapher import periods, str2Time, Grapher
-1
View File
@@ -11,7 +11,6 @@ import time
from functools import wraps
from django.utils.translation import ugettext as _
from modoboa.lib import parameters
from modoboa.lib import imap_utf7
from modoboa.lib.connections import ConnectionsManager
from modoboa.lib.webutils import static_url
from exceptions import ImapError, WebmailError
-1
View File
@@ -1,7 +1,6 @@
# coding: utf-8
import os
import re
import time
from datetime import datetime, timedelta
import email
import lxml
+1 -1
View File
@@ -22,7 +22,7 @@ from .lib import (
decode_payload, AttachmentUploadHandler,
save_attachment, ImapListing, EmailSignature,
clean_attachments, set_compose_session, send_mail,
ImapEmail, ReplyModifier, ForwardModifier
ImapEmail
)
from templatetags import webmail_tags
-8
View File
@@ -1,17 +1,9 @@
# -*- coding: utf-8 -*-
import time
import re
import os
import time
import random
import hashlib
import lxml.html
from lxml import etree
from django.conf import settings
from django.template.loader import render_to_string
from django.template import Template, Context
from django.utils.translation import ugettext as _
from modoboa.lib.emailutils import decode
attached_map = {}
-1
View File
@@ -6,7 +6,6 @@ import smtplib
from email.header import Header, decode_header
from email.mime.text import MIMEText
from email.utils import make_msgid, formatdate, parseaddr
from django.template import Template, Context
from django.template.loader import render_to_string
from django.conf import settings
import u2u_decode
-2
View File
@@ -33,9 +33,7 @@ Extracted from `this blog
one instance to another.
"""
import sys
import ldap
import re
import base64
import hashlib
import string
-2
View File
@@ -8,10 +8,8 @@ will be available and modifiable directly from the web interface.
Only super users will be able to access this part of the web interface.
"""
import inspect
import re
import copy
from django import forms
from exceptions import ModoboaException
-1
View File
@@ -1,5 +1,4 @@
# coding: utf-8
from functools import wraps
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _
from django.db import IntegrityError
-1
View File
@@ -5,7 +5,6 @@ This module extra functions/shortcuts to communicate with the system
(executing commands, etc.)
"""
import subprocess
from modoboa.lib import parameters
def exec_cmd(cmd, sudo_user=None, **kwargs):
-2
View File
@@ -9,11 +9,9 @@ output (using standard tags like <table> and co.).
"""
import inspect
import lxml
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.template import Template, RequestContext, Context
from django.template.loader import render_to_string
from templatetags.lib_tags import render_link
+1 -6
View File
@@ -1,14 +1,9 @@
# coding: utf-8
from datetime import datetime
from django import template
from django.contrib import messages
from django.template import Template, Context
from django.template.loader import render_to_string
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _, ugettext_lazy
from modoboa.lib import events
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.webutils import static_url
from django.utils.translation import ugettext_lazy
from modoboa.lib.formutils import SeparatorField
register = template.Library()
+1 -2
View File
@@ -1,5 +1,4 @@
# coding: utf-8
import unittest
from django.test import TestCase
from django.test.client import Client
from django.utils import simplejson
@@ -9,7 +8,7 @@ from modoboa.lib import parameters
class ModoTestCase(TestCase):
def setUp(self, username="admin", password="password"):
self.clt = Client()
self.assertEqual(self.clt.login(username=username, password=password), True)
-1
View File
@@ -3,7 +3,6 @@
"""
This module contains extra functions/shortcuts used to render HTML.
"""
import os
import sys
import re
from django.http import HttpResponse, HttpResponseRedirect
+1 -1
View File
@@ -1,4 +1,4 @@
from django.conf.urls import patterns, include, url
from django.conf.urls import patterns, include
from django.conf import settings
from modoboa.core.extensions import exts_pool
from modoboa.lib import parameters, events