Skip to content

Commit

Permalink
Merge pull request #136 from fyfe/upgrade-django
Browse files Browse the repository at this point in the history
Upgrade Django (Django-1.10 no longer supported)
  • Loading branch information
tonioo committed Dec 21, 2017
2 parents db77e07 + b802be1 commit c824b4f
Show file tree
Hide file tree
Showing 16 changed files with 181 additions and 58 deletions.
20 changes: 14 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,36 @@
language: python
cache: pip
python:
- "2.7"
- "3.4"
- "3.5"
- "3.6"

env:
- DB="POSTGRESQL"
global:
- PYTHONWARNINGS="default,ignore::PendingDeprecationWarning,ignore::ResourceWarning"
matrix:
- DB="POSTGRESQL"

sudo: false

cache: pip

services:
- postgres

before_install:
- pip install codecov
- if [[ $DB = 'POSTGRESQL' ]]; then pip install -q psycopg2; fi
- if [[ $DB = "POSTGRESQL" ]]; then pip install -q psycopg2; fi
- pip install -e git+https://github.com/modoboa/modoboa#egg=modoboa
- pip install -q factory-boy testfixtures

install:
- pip install -r requirements.txt
- pip install -q -r requirements.txt
- pip install -q -r test-requirements.txt
- python setup.py -q develop

before_script:
- if [[ $DB = 'POSTGRESQL' ]]; then psql -c 'create database modoboa_test;' -U postgres; fi
- if [[ $DB = "POSTGRESQL" ]]; then psql -c "CREATE DATABASE modoboa_test;" -U postgres; fi

script:
- cd test_project
- coverage run --source ../modoboa_webmail manage.py test modoboa_webmail
Expand Down
6 changes: 3 additions & 3 deletions modoboa_webmail/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ class ParametersForm(param_forms.AdminParametersForm):
("ssl", "SSL/TLS")],
initial="none",
help_text=_("Use a secured connection to access SMTP server"),
widget=form_utils.InlineRadioSelect
widget=form_utils.HorizontalRadioSelect()
)

smtp_port = forms.IntegerField(
Expand All @@ -343,7 +343,7 @@ class UserSettings(param_forms.UserParametersForm):
label=_("Default message display mode"),
choices=[("html", "html"), ("plain", "text")],
help_text=_("The default mode used when displaying a message"),
widget=form_utils.InlineRadioSelect()
widget=form_utils.HorizontalRadioSelect()
)

enable_links = form_utils.YesNoField(
Expand Down Expand Up @@ -402,7 +402,7 @@ class UserSettings(param_forms.UserParametersForm):
label=_("Default editor"),
choices=[("html", "html"), ("plain", "text")],
help_text=_("The default editor to use when composing a message"),
widget=form_utils.InlineRadioSelect()
widget=form_utils.HorizontalRadioSelect()
)

signature = forms.CharField(
Expand Down
2 changes: 1 addition & 1 deletion modoboa_webmail/handlers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Webmail handlers."""

from django.core.urlresolvers import reverse
from django.urls import reverse
from django.dispatch import receiver
from django.utils.translation import ugettext as _

Expand Down
2 changes: 1 addition & 1 deletion modoboa_webmail/lib/fetch_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def __init__(self, definitions):
self.definitions = definitions
parts = []
for name, part in definitions:
parts.append("(?P<%s>%s)" % (name, part))
parts.append(r"(?P<%s>%s)" % (name, part))
self.regexpString = "|".join(parts)
self.regexp = re.compile(self.regexpString, re.MULTILINE)
self.wsregexp = re.compile(r"\s+", re.M)
Expand Down
2 changes: 1 addition & 1 deletion modoboa_webmail/lib/imapemail.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from django.conf import settings
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.utils.html import escape
from django.utils.translation import ugettext as _

Expand Down
19 changes: 12 additions & 7 deletions modoboa_webmail/lib/imaputils.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,14 @@ def __store_part(self, definition, pnum, multisubtype):
"""
pnum = "1" if pnum is None else pnum
params = dict(pnum=pnum, params=definition[2], cid=definition[3],
description=definition[4], encoding=definition[5],
size=definition[6])
params = {
"pnum": pnum,
"params": definition[2],
"cid": definition[3],
"description": definition[4],
"encoding": definition[5],
"size": definition[6]
}
mtype = definition[0].lower()
subtype = definition[1].lower()
ftype = "%s/%s" % (definition[0].lower(), subtype)
Expand Down Expand Up @@ -321,7 +326,7 @@ def or_criterion(old, c):
criterions, '(%s "%s")' % (key, pattern))
if six.PY3:
criterions = bytearray(criterions, "utf-8")
elif isinstance(criterions, unicode):
elif isinstance(criterions, six.text_type):
criterions = criterions.encode("utf-8")
self.criterions = [criterions]

Expand Down Expand Up @@ -429,10 +434,10 @@ def _listmboxes_simple(self, topmailbox='INBOX', mailboxes=None, **kwargs):
descr = mailboxes[idx]
break
if not mdm_found:
descr = dict(name=name)
descr = {"name": name}
newmboxes += [descr]

if re.search("\%s" % delimiter, name):
if re.search(r"\%s" % delimiter, name):
parts = name.split(delimiter)
if "path" not in descr:
descr["path"] = parts[0]
Expand Down Expand Up @@ -479,7 +484,7 @@ def _listmboxes(self, topmailbox, mailboxes, until_mailbox=None):
descr = mailboxes[idx]
break
if not mdm_found:
descr = dict(name=name)
descr = {"name": name}
newmboxes += [descr]

if '\\Marked' in flags or '\\UnMarked' not in flags:
Expand Down
2 changes: 1 addition & 1 deletion modoboa_webmail/lib/sendmail.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def send_mail(request, form, posturl=None):
"posturl": posturl},
request
)
return False, dict(status="ko", listing=listing, editor=editormode)
return False, {"status": "ko", "listing": listing, "editor": editormode}

msg = form.to_msg(request)
conf = dict(param_tools.get_global_parameters("modoboa_webmail"))
Expand Down
3 changes: 2 additions & 1 deletion modoboa_webmail/modo_extension.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# coding: utf-8
"""Declare and register the webmail extension."""

from django.core.urlresolvers import reverse_lazy
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy

from modoboa.core.extensions import ModoExtension, exts_pool
Expand All @@ -24,4 +24,5 @@ def load(self):
param_tools.registry.add("global", forms.ParametersForm, "Webmail")
param_tools.registry.add("user", forms.UserSettings, "Webmail")


exts_pool.register_extension(Webmail)
10 changes: 6 additions & 4 deletions modoboa_webmail/templatetags/webmail_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from django import template
from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
Expand Down Expand Up @@ -251,9 +251,11 @@ def mboxes_menu():
"url": reverse("modoboa_webmail:folder_compress")}
]

return render_to_string('common/menu.html', dict(
entries=entries, css="dropdown-menu"
))
context = {
"entries": entries,
"css": "dropdown-menu",
}
return render_to_string('common/menu.html', context)


@register.filter
Expand Down
4 changes: 2 additions & 2 deletions modoboa_webmail/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from six import BytesIO

from django.core import mail
from django.core.urlresolvers import reverse
from django.urls import reverse

from modoboa.admin import factories as admin_factories
from modoboa.core import models as core_models
Expand Down Expand Up @@ -98,7 +98,7 @@ class WebmailTestCase(ModoTestCase):
"""Check webmail backend."""

@classmethod
def setUpTestData(cls):
def setUpTestData(cls): # noqa
"""Create some users."""
super(WebmailTestCase, cls).setUpTestData()
admin_factories.populate_database()
Expand Down
6 changes: 3 additions & 3 deletions modoboa_webmail/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from rfc6266 import build_header

from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.http import HttpResponse
from django.shortcuts import render
from django.template.loader import render_to_string
Expand Down Expand Up @@ -584,7 +584,7 @@ def check_unseen_messages(request):
if not mboxes:
raise BadRequest(_("Invalid request"))
mboxes = mboxes.split(",")
counters = dict()
counters = {}
imapc = get_imapconnector(request)
for mb in mboxes:
counters[mb] = imapc.unseen_messages(mb)
Expand Down Expand Up @@ -623,7 +623,7 @@ def index(request):
else:
if request.is_ajax():
raise BadRequest(_("Invalid request"))
response = dict(selection="webmail")
response = {"selection": "webmail"}

curmbox = WebmailNavigationParameters(request).get("mbox", "INBOX")
if not request.is_ajax():
Expand Down
2 changes: 2 additions & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
factory-boy>=2.4
testfixtures==4.7.0
21 changes: 18 additions & 3 deletions test_project/manage.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
#!/usr/bin/env python

from __future__ import unicode_literals

import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test_project.settings")

from django.core.management import execute_from_command_line

try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django # noqa
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)

0 comments on commit c824b4f

Please sign in to comment.