Skip to content
This repository has been archived by the owner on Feb 1, 2019. It is now read-only.

Commit

Permalink
Python 3 support
Browse files Browse the repository at this point in the history
  • Loading branch information
Mykhailo Kolesnyk committed Apr 6, 2016
1 parent 98b5772 commit 2981c60
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 58 deletions.
25 changes: 16 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
language: python

python: 3.5
sudo: false

addons:
Expand All @@ -22,11 +22,20 @@ env:
# different Python ENVs if possible.
- TOXENV=flake8

- TOXENV=py35-dj19-cms32
- TOXENV=py34-dj19-cms32
- TOXENV=py27-dj19-cms32

- TOXENV=py35-dj18-cms32
- TOXENV=py35-dj18-cms31
- TOXENV=py34-dj18-cms32
- TOXENV=py34-dj18-cms31
- TOXENV=py27-dj18-cms32
- TOXENV=py27-dj18-cms31

- TOXENV=py34-dj17-cms32
- TOXENV=py34-dj17-cms31
- TOXENV=py34-dj17-cms30
- TOXENV=py27-dj17-cms32
- TOXENV=py27-dj17-cms31
- TOXENV=py27-dj17-cms30
Expand All @@ -37,23 +46,21 @@ env:
- TOXENV=py26-dj16-cms31
- TOXENV=py26-dj16-cms30

- TOXENV=py27-dj19-cms32-fe
- TOXENV=py27-dj18-cms32-fe
- TOXENV=py27-dj17-cms32-fe
- TOXENV=py26-dj16-cms32-fe
- FRONTEND=1 TOXENV=py35-dj19-cms32-fe
- FRONTEND=1 TOXENV=py34-dj18-cms32-fe
- FRONTEND=1 TOXENV=py27-dj17-cms32-fe
- FRONTEND=1 TOXENV=py26-dj16-cms32-fe

- TOXENV=doctest

before_install:
- npm install -g npm
- if [ "$FRONTEND" == 1 ]; then npm install -g npm; fi

install:
- pip install tox coveralls

before_script:
- npm install -g gulp
- npm install -g codeclimate-test-reporter
- npm install
- if [ "$FRONTEND" == 1 ]; then npm install -g gulp; npm install -g codeclimate-test-reporter; npm install; fi

after_script:
- codeclimate < tests/coverage/**/lcov.info
Expand Down
4 changes: 2 additions & 2 deletions aldryn_events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,9 @@ def get_title(self):

def __str__(self):
# since we now have app configs, it is pretty handy to display them
return unicode('{0} ({1})'.format(
return '{0} ({1})'.format(
self.get_title(),
getattr(self.app_config, 'app_title', self.app_config.namespace)))
getattr(self.app_config, 'app_title', self.app_config.namespace))

@property
def start_at(self):
Expand Down
8 changes: 5 additions & 3 deletions aldryn_events/tests/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
from __future__ import unicode_literals

from collections import namedtuple
import six

from django.core.exceptions import ValidationError
from django.db import IntegrityError

Expand Down Expand Up @@ -83,7 +85,7 @@ def test_no_start_date_raises_is_not_possible(self):

def test_clean_with_allowed_dates_do_not_fail(self):
failures = []
for key, dates in self.dates.iteritems():
for key, dates in self.dates.items():
if not key.should_pass:
continue
event_data = self.make_default_values_with_new_dates(dates)
Expand All @@ -105,7 +107,7 @@ def test_clean_with_allowed_dates_do_not_fail(self):

def test_clean_with_not_allowed_dates_raises_validation_error(self):
failures = []
for key, dates in self.dates.iteritems():
for key, dates in self.dates.items():
if key.should_pass:
continue
event_data = self.make_default_values_with_new_dates(dates)
Expand Down Expand Up @@ -200,7 +202,7 @@ def test_specific_language_characters_in_title(self):
)
self.assertEqual(Event.objects.translated('de').count(), 1)
self.assertEqual(test_title, event.title)
self.assertIn(test_title, unicode(event))
self.assertIn(test_title, six.text_type(event))

def test_behaviour_of_active_translations_and_hide_untranslated(self):
self.create_event(title='test event', start_date='2015-01-01')
Expand Down
16 changes: 6 additions & 10 deletions aldryn_events/tests/test_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
from __future__ import unicode_literals

from django.utils.translation import override
try:
from django.utils.translation import force_text
except:
from django.utils.translation import force_unicode as force_text
from aldryn_events.models import Event
from cms import api

Expand Down Expand Up @@ -164,22 +160,22 @@ def test_normal_ordering(self):
for app-configs.
"""
page_url = self.page.get_absolute_url()
response = force_text(self.client.get(page_url).render())
content = self.client.get(page_url).content.decode('utf-8')
# NOTE: This list should be ordered in the events natural order
for e in range(0, len(self.oldest_first) - 1):
self.assertLess(response.find(self.oldest_first[e].title),
response.find(self.oldest_first[e + 1].title))
self.assertLess(content.find(self.oldest_first[e].title),
content.find(self.oldest_first[e + 1].title))

def test_latest_first_ordering(self):
"""
Ensure that events are ordered latest-first when app is configured
to do so.
"""
page_url = self.page.get_absolute_url()
response = force_text(self.client.get(page_url).render())
content = self.client.get(page_url).content.decode('utf-8')
latest_first = reversed(self.oldest_first)
self.app_config.latest_first = True
# NOTE: This list should be ordered in the events natural order
for e in range(0, len([latest_first]) - 1):
self.assertLess(response.find(latest_first[e].title),
response.find(latest_first[e + 1].title))
self.assertLess(content.find(latest_first[e].title),
content.find(latest_first[e + 1].title))
18 changes: 6 additions & 12 deletions aldryn_events/tests/test_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,10 +279,8 @@ def test_event_list_page_by_day(self):
)
with force_language('en'):
response = self.client.get(url)
self.assertQuerysetEqual(
response.context_data['object_list'],
map(repr, [ev5, ev2, ev3, ev1]),
)
self.assertSequenceEqual(response.context_data['object_list'],
[ev5, ev2, ev3, ev1])
self.assertContains(response, ev5.get_absolute_url())
self.assertContains(response, ev2.get_absolute_url())
self.assertContains(response, ev3.get_absolute_url())
Expand All @@ -297,10 +295,8 @@ def test_event_list_page_by_month(self):
)
with force_language('en'):
response = self.client.get(url)
self.assertQuerysetEqual(
response.context_data['object_list'],
map(repr, [ev5, ev2, ev3, ev1, ev6]),
)
self.assertSequenceEqual(response.context_data['object_list'],
[ev5, ev2, ev3, ev1, ev6])
self.assertContains(response, ev5.get_absolute_url())
self.assertContains(response, ev2.get_absolute_url())
self.assertContains(response, ev3.get_absolute_url())
Expand All @@ -316,10 +312,8 @@ def test_event_list_page_by_year(self):
)
with force_language('en'):
response = self.client.get(url)
self.assertQuerysetEqual(
response.context_data['object_list'],
map(repr, [ev5, ev2, ev3, ev1, ev6]),
)
self.assertSequenceEqual(response.context_data['object_list'],
[ev5, ev2, ev3, ev1, ev6])
self.assertContains(response, ev5.get_absolute_url())
self.assertContains(response, ev2.get_absolute_url())
self.assertContains(response, ev3.get_absolute_url())
Expand Down
8 changes: 4 additions & 4 deletions aldryn_events/tests/test_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,10 @@ def test_upcoming_plugin_for_future(self, timezone_mock):
rendered = {}
with force_language('en'):
response = self.client.get(page.get_absolute_url('en'))
rendered['en'] = response.content
rendered['en'] = response.content.decode('utf-8')
with force_language('de'):
response = self.client.get(page.get_absolute_url('de'))
rendered['de'] = response.content
rendered['de'] = response.content.decode('utf-8')

for i in range(1, 6):
for lang in ['en', 'de']:
Expand Down Expand Up @@ -383,10 +383,10 @@ def test_upcoming_plugin_for_past(self, timezone_mock):
rendered = {}
with force_language('en'):
response = self.client.get(page.get_absolute_url('en'))
rendered['en'] = response.content
rendered['en'] = response.content.decode('utf-8')
with force_language('de'):
response = self.client.get(page.get_absolute_url('de'))
rendered['de'] = response.content
rendered['de'] = response.content.decode('utf-8')

for i in range(1, 6):
for lang in ['en', 'de']:
Expand Down
5 changes: 3 additions & 2 deletions aldryn_events/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from dateutil.relativedelta import relativedelta
from itertools import chain

from django import forms
from django.conf import settings
Expand Down Expand Up @@ -138,8 +139,8 @@ def get_context_data(self, **kwargs):
def make_outdated(obj):
obj.is_outdated = True
return obj

object_list = list(object_list) + map(make_outdated, self.archive_qs)
object_list = list(chain(object_list, map(make_outdated,
self.archive_qs)))
kwargs['object_list'] = object_list

return super(EventListView, self).get_context_data(**kwargs)
Expand Down
9 changes: 1 addition & 8 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,6 @@
from aldryn_events import __version__

py26 = sys.version_info < (2, 7, 0) and sys.version_info >= (2, 6, 0)
py27 = sys.version_info < (2, 8, 0) and sys.version_info >= (2, 7, 0)

if not py26 and not py27:
raise ValueError(
"Aldryn Events currently support only python 2.6 to 2.7, "
"not {0}".format(sys.version_info)
)

REQUIREMENTS = [
'aldryn-apphooks-config>=0.1.4',
Expand Down Expand Up @@ -39,7 +32,7 @@
'South>=1.0.2,<1.1',
]

if py27:
else:
REQUIREMENTS += [
'Django>=1.6,<1.10',
]
Expand Down
2 changes: 1 addition & 1 deletion test_requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ djangocms-admin-style
djangocms-helper>=0.9.1
easy-thumbnails
flake8
importlib
mock
pyquery
pytz
six
tox
16 changes: 9 additions & 7 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[tox]

toxworkdir = {homedir}/.toxenvs/aldryn-events
envlist =
flake8
py27-dj19-cms32
py27-dj18-cms{32,31}
py27-dj17-cms{32,31,30}
py{35,34,27}-dj19-cms32
py{35,34,27}-dj18-cms{32,31}
py{34,27}-dj17-cms{32,31,30}
py{27,26}-dj16-cms{32,31,30}
doctest

Expand All @@ -23,9 +23,9 @@ whitelist_externals =
sleep
commands =
{envpython} --version
- coverage erase
coverage run test_settings.py
- coverage report
py{26,27,34,35}: - coverage erase
py{26,27,34,35}: coverage run test_settings.py
py{26,27,34,35}: - coverage report
fe: gulp tests:unit
fe: gulp tests:lint
fe: - sh test_requirements/runserver.sh
Expand All @@ -38,6 +38,7 @@ deps=
dj19: -rtest_requirements/django_19.txt
py26: unittest2
py26-fe: ordereddict
py{26,27}: importlib
cms32: django-cms>=3.2.1,<3.3
dj{19,18,17}-cms32: django-reversion<1.11
cms31: django-cms>3.1.1,<3.2
Expand All @@ -50,6 +51,7 @@ basepython =
py27: python2.7
py33: python3.3
py34: python3.4
py35: python3.5

[testenv:doctest]
basepython = python2.7
Expand Down

0 comments on commit 2981c60

Please sign in to comment.