Log In
Log In
Places
All Projects
Status Monitor
Collapse sidebar
waliki
python-django-waliki
python-django-waliki-django2.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File python-django-waliki-django2.patch of Package python-django-waliki
From bdcae9c1d6022f8179760a8c1366f732e551c599 Mon Sep 17 00:00:00 2001 From: Oleg Girko <ol@infoserver.lv> Date: Wed, 2 May 2018 04:06:18 +0100 Subject: [PATCH] Make Waliki compatible with Django 2.0. The following compatibility issues have been fixed: * new stype middleware configuration using "MIDDLEWARE" settings key; * using django.urls instead of django.core.urlresolvers package; * is_authenticated is now property of User, not method; * on_delete parameter is mandatory for ForeignKey model. Project is marked as Django 2.0 compatible in setup.py file. Signed-off-by: Oleg Girko <ol@infoserver.lv> --- runtests.py | 8 ++++++++ setup.py | 2 ++ tests/test_git.py | 6 +++++- tests/test_git_webhook.py | 6 +++++- tests/test_redirects.py | 6 +++++- tests/test_slides.py | 6 +++++- tests/test_views.py | 6 +++++- waliki/acl.py | 7 ++++--- waliki/attachments/migrations/0001_initial.py | 2 +- waliki/attachments/models.py | 10 ++++++++-- waliki/git/models.py | 3 ++- waliki/git/views.py | 6 +++++- waliki/models.py | 6 +++++- waliki/search/views.py | 4 +++- waliki/templatetags/waliki_tags.py | 6 +++++- waliki/utils.py | 13 ++++++++++++- waliki/views.py | 6 +++++- 17 files changed, 85 insertions(+), 18 deletions(-) diff --git a/runtests.py b/runtests.py index b1c194b..367bc9b 100755 --- a/runtests.py +++ b/runtests.py @@ -42,6 +42,14 @@ try: }, }, ], + MIDDLEWARE=( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + ), MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', diff --git a/setup.py b/setup.py index 150f541..a8aff1b 100755 --- a/setup.py +++ b/setup.py @@ -72,6 +72,8 @@ setup( 'Framework :: Django :: 1.8', 'Framework :: Django :: 1.9', 'Framework :: Django :: 1.10', + 'Framework :: Django :: 1.11', + 'Framework :: Django :: 2.0', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', diff --git a/tests/test_git.py b/tests/test_git.py index 21534c5..cb24fad 100644 --- a/tests/test_git.py +++ b/tests/test_git.py @@ -3,8 +3,12 @@ import os import shutil from sh import git from mock import patch, PropertyMock +from django import VERSION from django.test import TestCase -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from waliki.models import Page from waliki.git.models import Git from waliki.settings import WALIKI_DATA_DIR, WALIKI_COMMITTER_EMAIL, WALIKI_COMMITTER_NAME diff --git a/tests/test_git_webhook.py b/tests/test_git_webhook.py index 8c10eb3..ddba324 100644 --- a/tests/test_git_webhook.py +++ b/tests/test_git_webhook.py @@ -1,5 +1,9 @@ +from django import VERSION from django.test import TestCase -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from .factories import PageFactory from waliki.settings import WALIKI_DATA_DIR from waliki.models import Page diff --git a/tests/test_redirects.py b/tests/test_redirects.py index 5aca975..dd28c75 100644 --- a/tests/test_redirects.py +++ b/tests/test_redirects.py @@ -1,5 +1,9 @@ +from django import VERSION from django.test import TestCase -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from .factories import PageFactory, RedirectFactory diff --git a/tests/test_slides.py b/tests/test_slides.py index 1e598f3..17b1bcb 100644 --- a/tests/test_slides.py +++ b/tests/test_slides.py @@ -2,9 +2,13 @@ import json import os import mock import unittest +from django import VERSION from django.test import TestCase from waliki.models import Page -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from django.core.exceptions import PermissionDenied from django.template.loader import render_to_string from waliki import settings diff --git a/tests/test_views.py b/tests/test_views.py index adbf131..2aebbab 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -1,9 +1,13 @@ import json import os import mock +from django import VERSION from django.test import TestCase from waliki.models import Page -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from django.template.loader import render_to_string from django import forms from waliki.models import Redirect diff --git a/waliki/acl.py b/waliki/acl.py index dfa0712..2f67175 100644 --- a/waliki/acl.py +++ b/waliki/acl.py @@ -9,6 +9,7 @@ from django.utils.six.moves.urllib.parse import urlparse from django.utils.six import string_types from django.contrib.auth import REDIRECT_FIELD_NAME from django.shortcuts import resolve_url +from waliki.utils import is_authenticated from .models import ACLRule from .settings import (WALIKI_ANONYMOUS_USER_PERMISSIONS, WALIKI_LOGGED_USER_PERMISSIONS, @@ -31,7 +32,7 @@ def check_perms(perms, user, slug, raise_exception=False): if perms.issubset(set(WALIKI_ANONYMOUS_USER_PERMISSIONS)): return True - if user.is_authenticated() and perms.issubset(set(WALIKI_LOGGED_USER_PERMISSIONS)): + if is_authenticated(user) and perms.issubset(set(WALIKI_LOGGED_USER_PERMISSIONS)): return True # First check if the user has the permission (even anon users) @@ -61,7 +62,7 @@ def permission_required(perms, login_url=None, raise_exception=False, redirect_f if check_perms(perms, request.user, kwargs['slug'], raise_exception=raise_exception): return view_func(request, *args, **kwargs) - if request.user.is_authenticated(): + if is_authenticated(request.user): if WALIKI_RENDER_403: return render(request, 'waliki/403.html', kwargs, status=403) else: @@ -83,4 +84,4 @@ def permission_required(perms, login_url=None, raise_exception=False, redirect_f path, resolved_login_url, redirect_field_name) return _wrapped_view - return decorator \ No newline at end of file + return decorator diff --git a/waliki/attachments/migrations/0001_initial.py b/waliki/attachments/migrations/0001_initial.py index db40ade..43e248c 100644 --- a/waliki/attachments/migrations/0001_initial.py +++ b/waliki/attachments/migrations/0001_initial.py @@ -17,7 +17,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)), ('file', models.FileField(upload_to=waliki.settings.WALIKI_UPLOAD_TO)), - ('page', models.ForeignKey(related_name='attachments', to='waliki.Page')), + ('page', models.ForeignKey(related_name='attachments', to='waliki.Page', on_delete=models.CASCADE)), ], options={ 'verbose_name': 'Attachment', diff --git a/waliki/attachments/models.py b/waliki/attachments/models.py index 04b42fe..52ebfec 100644 --- a/waliki/attachments/models.py +++ b/waliki/attachments/models.py @@ -1,19 +1,25 @@ # -*- coding: utf-8 -*- import os.path +from django import VERSION from django.db import models from django.utils.translation import ugettext_lazy as _ from django.db.models.signals import pre_delete from django.dispatch.dispatcher import receiver from django.utils.encoding import python_2_unicode_compatible from django.utils.six import text_type -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from waliki.models import Page from waliki.settings import WALIKI_UPLOAD_TO @python_2_unicode_compatible class Attachment(models.Model): - page = models.ForeignKey(Page, related_name='attachments') + page = models.ForeignKey(Page, + on_delete=models.CASCADE, + related_name='attachments') file = models.FileField(upload_to=WALIKI_UPLOAD_TO, max_length=300) class Meta: diff --git a/waliki/git/models.py b/waliki/git/models.py index d11f38c..5161de8 100644 --- a/waliki/git/models.py +++ b/waliki/git/models.py @@ -12,6 +12,7 @@ from collections import namedtuple from waliki.signals import page_saved, page_preedit, page_moved from waliki import settings from waliki.models import Page +from waliki.utils import is_authenticated git = git.bake("--no-pager", _tty_out=False) @@ -39,7 +40,7 @@ class Git(object): paths_to_commit.append(extra_path) kwargs = {} User = get_user_model() - if isinstance(author, User) and author.is_authenticated(): + if isinstance(author, User) and is_authenticated(author): kwargs['author'] = u"%s <%s>" % (author.get_full_name() or author.username, author.email) elif isinstance(author, six.string_types): kwargs['author'] = author diff --git a/waliki/git/views.py b/waliki/git/views.py index 2e5bbec..e1237a6 100644 --- a/waliki/git/views.py +++ b/waliki/git/views.py @@ -2,13 +2,17 @@ import json from django.utils import timezone from datetime import datetime +from django import VERSION from django.templatetags.tz import localtime from django.shortcuts import render, get_object_or_404, redirect from django.utils.translation import ugettext_lazy as _ from django.http import Http404 from django.core.management import call_command from django.http import HttpResponse -from django.core.urlresolvers import reverse, reverse_lazy +if VERSION[:2] >= (1, 10): + from django.urls import reverse, reverse_lazy +else: + from django.core.urlresolvers import reverse, reverse_lazy from django.utils.encoding import smart_text from django.utils.six import StringIO, text_type from django.views.decorators.csrf import csrf_exempt diff --git a/waliki/models.py b/waliki/models.py index a3afa76..198d868 100644 --- a/waliki/models.py +++ b/waliki/models.py @@ -3,11 +3,15 @@ import os import codecs import shutil import os.path +from django import VERSION from django.db import models from django.db.models import Q from django.db.utils import IntegrityError from django.conf import settings -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from django.dispatch import receiver from django.utils.six import string_types from django.utils.translation import ugettext_lazy as _ diff --git a/waliki/search/views.py b/waliki/search/views.py index 09bd6bc..abac925 100644 --- a/waliki/search/views.py +++ b/waliki/search/views.py @@ -6,11 +6,13 @@ from django.contrib.auth.decorators import user_passes_test from django.conf import settings +from waliki.utils import is_authenticated + def user_has_permission(user): if 'view_page' in settings.WALIKI_ANONYMOUS_USER_PERMISSIONS: return True - if user.is_authenticated() and user.is_active: + if is_authenticated(user) and user.is_active: return True return False diff --git a/waliki/templatetags/waliki_tags.py b/waliki/templatetags/waliki_tags.py index 73fb1da..5d2bb9f 100644 --- a/waliki/templatetags/waliki_tags.py +++ b/waliki/templatetags/waliki_tags.py @@ -1,5 +1,9 @@ +from django import VERSION from django import template -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from waliki.acl import check_perms as check_perms_helper from waliki.models import Page from waliki.forms import PageForm diff --git a/waliki/utils.py b/waliki/utils.py index 4fdc977..27dadc3 100644 --- a/waliki/utils.py +++ b/waliki/utils.py @@ -2,8 +2,12 @@ import os import re import mimetypes import unicodedata +from django import VERSION from django.http import HttpResponse -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from django.utils.six import PY2 from django.utils.encoding import force_text from django.utils.safestring import mark_safe @@ -49,3 +53,10 @@ def send_file(path, filename=None, content_type=None): response['Content-Disposition'] = 'attachment; filename=%s' % filename response.write(open(path, "rb").read()) return response + +if VERSION[:2] >= (1, 10): + def is_authenticated(user): + return user.is_authenticated +else: + def is_authenticated(user): + return user.is_authenticated() diff --git a/waliki/views.py b/waliki/views.py index 45a9d6c..2cb8cbc 100644 --- a/waliki/views.py +++ b/waliki/views.py @@ -1,11 +1,15 @@ import json +from django import VERSION from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponsePermanentRedirect from django.shortcuts import render, redirect, get_object_or_404 from django.template import RequestContext from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ from django.contrib import messages -from django.core.urlresolvers import reverse +if VERSION[:2] >= (1, 10): + from django.urls import reverse +else: + from django.core.urlresolvers import reverse from .models import Page, Redirect from .forms import PageForm, MovePageForm, DeleteForm, NewPageForm from .signals import page_saved, page_preedit, page_moved -- 2.14.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Contact
Support
@OBShq
The Open Build Service is an
openSUSE project
.
Log In
Places
Places
All Projects
Status Monitor