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

Commit

Permalink
django 1.9 support
Browse files Browse the repository at this point in the history
  • Loading branch information
Chive committed Feb 11, 2016
1 parent b6be8f2 commit bfb46e7
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 34 deletions.
5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ env:
# FE strategy: only test on Django/CMS combinations, but place tests on
# different Python ENVs if possible.
- TOXENV=flake8
- TOXENV=py34-dj19-sqlite-cms32-fe
- TOXENV=py34-dj19-sqlite-cms32
- TOXENV=py34-dj19-sqlite-cms31
- TOXENV=py27-dj19-sqlite-cms32
- TOXENV=py27-dj19-sqlite-cms31
- TOXENV=py34-dj18-sqlite-cms32-fe
- TOXENV=py34-dj18-sqlite-cms31
- TOXENV=py27-dj18-sqlite-cms32
Expand Down
13 changes: 10 additions & 3 deletions aldryn_jobs/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,12 +175,19 @@ def send_confirmation_email(self):
template_base='aldryn_jobs/emails/confirmation')

def send_staff_notifications(self):
recipients = self.instance.job_opening.get_notification_emails()
recipients = list(self.instance.job_opening.get_notification_emails())
if DEFAULT_SEND_TO:
recipients += [DEFAULT_SEND_TO]

app_label = self._meta.model._meta.app_label
try:
model_name = self._meta.model._meta.model_name
except AttributeError:
# Django < 1.9
model_name = self._meta.model._meta.module_name

admin_change_form = reverse(
'admin:%s_%s_change' % (self._meta.model._meta.app_label,
self._meta.model._meta.module_name),
'admin:{}_{}_change'.format(app_label, model_name),
args=(self.instance.pk,)
)

Expand Down
5 changes: 2 additions & 3 deletions aldryn_jobs/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from importlib import import_module

import reversion

Expand All @@ -12,7 +12,6 @@
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.importlib import import_module
from django.utils.timezone import now
from django.utils.translation import ugettext_lazy as _
from djangocms_text_ckeditor.fields import HTMLField
Expand Down Expand Up @@ -359,7 +358,7 @@ class Meta:
@python_2_unicode_compatible
class JobListPlugin(BaseJobsPlugin):
""" Store job list for JobListPlugin. """
jobopenings = SortedManyToManyField(JobOpening, blank=True, null=True,
jobopenings = SortedManyToManyField(JobOpening, blank=True,
verbose_name=_('job openings'),
help_text=_("Choose specific Job Openings to show or leave empty to "
"show latest. Note that Job Openings from different "
Expand Down
58 changes: 31 additions & 27 deletions aldryn_jobs/tests/test_reversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@

from __future__ import unicode_literals

import reversion
try:
from reversion.revisions import create_revision, get_for_object
except ImportError:
# django-reversion < 1.9
from reversion import create_revision, get_for_object
import six

from django.db import transaction
from parler.utils.context import switch_language

from aldryn_reversion.core import create_revision
from aldryn_reversion.core import create_revision as aldryn_create_revision

from ..models import JobCategory, JobOpening, JobApplication
from .base import JobsBaseTestCase
Expand All @@ -34,7 +38,7 @@ class ReversionTestCase(JobsBaseTestCase):

def create_revision(self, obj, content=None, **kwargs):
with transaction.atomic():
with reversion.create_revision():
with create_revision():
# populate event with new values
for property, value in six.iteritems(kwargs):
setattr(obj, property, value)
Expand All @@ -55,45 +59,45 @@ def revert_to(self, object_with_revision, revision_number):
"""
# get by position, since reversion_id is not reliable,
version = list(reversed(
reversion.get_for_object(
get_for_object(
object_with_revision)))[revision_number - 1]
version.revision.revert()

# Following tests does not covers translations!
def test_revision_is_created_on_job_category_object_create(self):
with transaction.atomic():
with reversion.create_revision():
with create_revision():
job_category = JobCategory.objects.create(
app_config=self.app_config,
**self.category_values_raw['en'])
self.assertEqual(len(reversion.get_for_object(job_category)), 1)
self.assertEqual(len(get_for_object(job_category)), 1)

def test_revision_is_created_on_job_opening_object_created(self):
with transaction.atomic():
with reversion.create_revision():
with create_revision():
job_opening = JobOpening.objects.create(
category=self.default_category,
**self.opening_values_raw['en'])
self.assertEqual(len(reversion.get_for_object(job_opening)), 1)
self.assertEqual(len(get_for_object(job_opening)), 1)

def test_category_revision_is_created(self):
category = JobCategory.objects.create(
app_config=self.app_config,
**self.category_values_raw['en'])
self.assertEqual(len(reversion.get_for_object(category)), 0)
self.assertEqual(len(get_for_object(category)), 0)
new_values_en_1 = self.make_new_values(
self.category_values_raw['en'], 1)
self.create_revision(category, **new_values_en_1)
self.assertEqual(len(reversion.get_for_object(category)), 1)
self.assertEqual(len(get_for_object(category)), 1)

def test_job_opening_revision_is_created(self):
job_opening = self.create_default_job_opening()
self.assertEqual(len(reversion.get_for_object(job_opening)), 0)
self.assertEqual(len(get_for_object(job_opening)), 0)

new_values_en_1 = self.make_new_values(
self.default_job_values['en'], 1)
self.create_revision(job_opening, **new_values_en_1)
self.assertEqual(len(reversion.get_for_object(job_opening)), 1)
self.assertEqual(len(get_for_object(job_opening)), 1)

def test_category_with_one_revision_contains_latest_values(self):
category = JobCategory.objects.create(
Expand Down Expand Up @@ -289,7 +293,7 @@ def test_edit_plugin_directly(self):
content_en_1 = self.plugin_values_raw['en'].format(1)
self.create_revision(job_opening, content=content_en_1)

self.assertEqual(len(reversion.get_for_object(job_opening)), 1)
self.assertEqual(len(get_for_object(job_opening)), 1)

# revision 2
content_en_2 = self.plugin_values_raw['en'].format(2)
Expand All @@ -300,8 +304,8 @@ def test_edit_plugin_directly(self):
plugin = plugins[0].get_plugin_instance()[0]
plugin.body = content_en_2
plugin.save()
create_revision(job_opening)
self.assertEqual(len(reversion.get_for_object(job_opening)), 2)
aldryn_create_revision(job_opening)
self.assertEqual(len(get_for_object(job_opening)), 2)

with switch_language(job_opening, 'en'):
url = job_opening.get_absolute_url()
Expand All @@ -318,7 +322,7 @@ def test_edit_plugin_directly(self):

def test_category_revert_revision_correct_for_diverged_translations(self):
category = self.default_category
self.assertEqual(len(reversion.get_for_object(category)), 0)
self.assertEqual(len(get_for_object(category)), 0)
# revision 1: en 1, de 0
new_values = self.make_new_values(self.category_values_raw['en'], 1)
with switch_language(category, 'en'):
Expand Down Expand Up @@ -355,7 +359,7 @@ def test_category_revert_revision_correct_for_diverged_translations(self):

def test_opening_revert_revision_correct_for_diverged_translations(self):
opening = self.create_default_job_opening(translated=True)
self.assertEqual(len(reversion.get_for_object(opening)), 0)
self.assertEqual(len(get_for_object(opening)), 0)
initial_values = {
'category': self.default_category,
'is_active': True,
Expand Down Expand Up @@ -410,7 +414,7 @@ def test_opening_revert_revision_correct_for_diverged_translations(self):

def test_opening_revert_revision_serves_for_diverged_translations(self):
opening = self.create_default_job_opening(translated=True)
self.assertEqual(len(reversion.get_for_object(opening)), 0)
self.assertEqual(len(get_for_object(opening)), 0)

# revision 1: en 1, de 0
new_values_en_1 = self.make_new_values(self.opening_values_raw['en'], 1)
Expand Down Expand Up @@ -464,7 +468,7 @@ def test_opening_revert_revision_serves_for_diverged_translations(self):

def test_opening_is_reverted_if_fk_object_was_deleted(self):
opening = self.create_default_job_opening(translated=True)
self.assertEqual(len(reversion.get_for_object(opening)), 0)
self.assertEqual(len(get_for_object(opening)), 0)

# revision 1: en 1, de 0
category_1 = self.default_category
Expand Down Expand Up @@ -499,12 +503,12 @@ def test_job_application_revision_is_created(self):
application = JobApplication.objects.create(
job_opening=job_opening,
**self.application_default_values)
self.assertEqual(len(reversion.get_for_object(application)), 0)
self.assertEqual(len(get_for_object(application)), 0)

# revision 1
new_values_1 = self.make_new_values(self.application_values_raw, 1)
self.create_revision(application, **new_values_1)
self.assertEqual(len(reversion.get_for_object(application)), 1)
self.assertEqual(len(get_for_object(application)), 1)

def test_job_application_contains_latest_values(self):
job_opening = self.create_default_job_opening()
Expand All @@ -515,7 +519,7 @@ def test_job_application_contains_latest_values(self):
# revision 1
new_values_1 = self.make_new_values(self.application_values_raw, 1)
self.create_revision(application, **new_values_1)
self.assertEqual(len(reversion.get_for_object(application)), 1)
self.assertEqual(len(get_for_object(application)), 1)

application = JobApplication.objects.get(pk=application.pk)
for prop in new_values_1.keys():
Expand All @@ -528,7 +532,7 @@ def test_job_application_contains_latest_values(self):
**self.make_new_values(self.opening_values_raw['en'], 2))
new_values_2['job_opening'] = new_opening
self.create_revision(application, **new_values_2)
self.assertEqual(len(reversion.get_for_object(application)), 2)
self.assertEqual(len(get_for_object(application)), 2)

application = JobApplication.objects.get(pk=application.pk)
for prop in new_values_2.keys():
Expand All @@ -542,7 +546,7 @@ def test_job_application_revision_is_reverted(self):
# revision 1
new_values_1 = self.make_new_values(self.application_values_raw, 1)
self.create_revision(application, **new_values_1)
self.assertEqual(len(reversion.get_for_object(application)), 1)
self.assertEqual(len(get_for_object(application)), 1)

# revision 2
new_values_2 = self.make_new_values(self.application_values_raw, 2)
Expand All @@ -551,7 +555,7 @@ def test_job_application_revision_is_reverted(self):
**self.make_new_values(self.opening_values_raw['en'], 2))
new_values_2['job_opening'] = new_opening
self.create_revision(application, **new_values_2)
self.assertEqual(len(reversion.get_for_object(application)), 2)
self.assertEqual(len(get_for_object(application)), 2)

# revert to 1
self.revert_to(application, 1)
Expand All @@ -569,7 +573,7 @@ def test_job_application_revision_is_reverted_if_fk_obj_was_deleted(self):
# revision 1
new_values_1 = self.make_new_values(self.application_values_raw, 1)
self.create_revision(application, **new_values_1)
self.assertEqual(len(reversion.get_for_object(application)), 1)
self.assertEqual(len(get_for_object(application)), 1)

# revision 2
new_values_2 = self.make_new_values(self.application_values_raw, 2)
Expand All @@ -578,7 +582,7 @@ def test_job_application_revision_is_reverted_if_fk_obj_was_deleted(self):
**self.make_new_values(self.opening_values_raw['en'], 2))
new_values_2['job_opening'] = new_opening
self.create_revision(application, **new_values_2)
self.assertEqual(len(reversion.get_for_object(application)), 2)
self.assertEqual(len(get_for_object(application)), 2)

# delete initial opening
with transaction.atomic():
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
]
else:
REQUIREMENTS += [
'Django>=1.6,<1.9',
'Django>=1.6,<1.10',
]

CLASSIFIERS = [
Expand Down
14 changes: 14 additions & 0 deletions test_requirements/django_1.9.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
django>=1.9,<1.10

aldryn-apphook-reload>=0.2.3
# Testing requires 1.0.4 or later, usage can potentially use an earlier version
aldryn-reversion>=1.0.4
coverage>=3.7.1
django-appconf
django-filer==1.0.6
django-mptt>=0.7
django-polymorphic>=0.7
django-reversion>=1.9.3
djangocms-helper>=0.9.1
flake8
tox
10 changes: 10 additions & 0 deletions test_requirements/django_1.9.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
django>=1.9,<1.10

aldryn-reversion>=1.0.4
django-reversion>=1.9.3

# NOTE: These are for Filer
django-mptt>=0.7
django-polymorphic>=0.7

-r base.txt
2 changes: 2 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[tox]
envlist =
flake8
py{34,33,27}-dj19-{sqlite,mysql,postgres}-cms{32,31}
py{34,33,27}-dj18-{sqlite,mysql,postgres}-cms{32,31}
py{34,33,27}-dj17-{sqlite,mysql,postgres}-cms{32,31,30}
py{33,27}-dj16-{sqlite,mysql,postgres}-cms{32,31,30}
Expand Down Expand Up @@ -33,6 +34,7 @@ deps =
dj16: -rtest_requirements/django_1.6.txt
dj17: -rtest_requirements/django_1.7.txt
dj18: -rtest_requirements/django_1.8.txt
dj19: -rtest_requirements/django_1.9.txt
# Does not support Python 2.6 or lower
mysql: mysqlclient
# Does not support Python 3+
Expand Down

0 comments on commit bfb46e7

Please sign in to comment.