Skip to content

Commit

Permalink
Merge pull request #439 from spookylukey/django_15_fixes
Browse files Browse the repository at this point in the history
Django 15 fixes
  • Loading branch information
benjaoming committed Jul 10, 2015
2 parents b10974c + b585967 commit 2370578
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 9 deletions.
30 changes: 24 additions & 6 deletions wiki/managers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import absolute_import
from __future__ import unicode_literals

import django
from django.db import models
from django.db.models import Q
from django.db.models.query import QuerySet, EmptyQuerySet
Expand All @@ -9,12 +10,26 @@
from mptt.managers import TreeManager


if django.VERSION >= (1, 6):
# TreeManager bug:
if 'get_query_set' in TreeManager.__dict__:
# TreeManager should not define this, it messes things up.
del TreeManager.get_query_set

# See also:
# https://github.com/django-mptt/django-mptt/pull/388

# Once this has been merged, a new release for django-mptt has been
# made, and we can specify the new version in our requirements, this
# hack can be removed.


class QuerySetCompatMixin(object):

def get_queryset_compat(self):
get_queryset = (self.get_queryset
if hasattr(self, 'get_queryset')
else self.get_query_set)
get_queryset = (self.get_query_set
if hasattr(self, 'get_query_set')
else self.get_queryset)
return get_queryset()


Expand Down Expand Up @@ -144,7 +159,8 @@ def can_read(self, user):
def can_write(self, user):
return self.get_queryset_compat().can_write(user)

get_query_set = get_queryset # Django 1.5 compat
if django.VERSION < (1, 6):
get_query_set = get_queryset


class ArticleFkManager(QuerySetCompatMixin, models.Manager):
Expand All @@ -162,7 +178,8 @@ def get_empty_query_set(self):
def get_queryset(self):
return ArticleFkQuerySet(self.model, using=self._db)

get_query_set = get_queryset # Django 1.5 compat
if django.VERSION < (1, 6):
get_query_set = get_queryset

def active(self):
return self.get_queryset_compat().active()
Expand Down Expand Up @@ -212,7 +229,8 @@ def get_queryset(self):
return URLPathQuerySet(self.model, using=self._db).order_by(
self.tree_id_attr, self.left_attr)

get_query_set = get_queryset # Django 1.5 compat
if django.VERSION < (1, 6):
get_query_set = get_queryset

def select_related_common(self):
return self.get_queryset_compat().common_select_related()
Expand Down
6 changes: 6 additions & 0 deletions wiki/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@
# New style autodiscovery of tests doesn't work for Django < 1.6,
# and we don't want to duplicate tests for Django >= 1.6
from .test_basic import *
from .test_managers import *
from .test_models import *
from .test_template_filters import *
from .test_template_tags import *
from .test_views import *
from .test_urls import *
9 changes: 8 additions & 1 deletion wiki/tests/test_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from .base import ArticleTestBase

from wiki.models import Article
from wiki.models import Article, URLPath
from wiki.plugins.attachments.models import Attachment


Expand Down Expand Up @@ -83,3 +83,10 @@ def test_queryset_empty_query_sets(self):
Attachment.objects.none().can_write(self.superuser1).count(), 0
)
self.assertEqual(Attachment.objects.none().active().count(), 0)


class URLPathManagerTests(ArticleTestBase):

def test_related_manager_works_with_filters(self):
root = URLPath.root()
self.assertNotIn(root.id, [p.id for p in root.children.active()])
4 changes: 2 additions & 2 deletions wiki/tests/test_template_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ def test_strip_tags(self):

content = """
<h1>Some dummy</h1> text. <div>Actually</div> I don't what to write,
heh. Don't now, <b>maybe</b> I should citate <>Shakespeare<> or Byron.
heh. Don't now, <b>maybe</b> I should citate Shakespeare or Byron.
Or <a>maybe</a> copy paste from <a href="http://python.org">python</a>
or django documentation. Maybe.
"""

expected = ('I should citate <>Shakespeare<> or Byron. '
expected = ('I should citate Shakespeare or Byron. '
'Or <strong>maybe</strong> copy paste from python '
'or django documentation. <strong>maybe</strong> .')

Expand Down

0 comments on commit 2370578

Please sign in to comment.