Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/933970/?format=api
{ "id": 933970, "url": "http://patchwork.ozlabs.org/api/patches/933970/?format=api", "web_url": "http://patchwork.ozlabs.org/project/patchwork/patch/20180624195557.19909-5-stephen@that.guru/", "project": { "id": 16, "url": "http://patchwork.ozlabs.org/api/projects/16/?format=api", "name": "Patchwork", "link_name": "patchwork", "list_id": "patchwork.lists.ozlabs.org", "list_email": "patchwork@lists.ozlabs.org", "web_url": "http://jk.ozlabs.org/projects/patchwork/", "scm_url": "git://github.com/getpatchwork/patchwork", "webscm_url": "https://github.com/getpatchwork/patchwork", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20180624195557.19909-5-stephen@that.guru>", "list_archive_url": null, "date": "2018-06-24T19:55:51", "name": "[05/11] Remove compat wrapper for Django < 1.11", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "aff7b38016e5a8aa0e32454d0a363b28a0bf0031", "submitter": { "id": 69991, "url": "http://patchwork.ozlabs.org/api/people/69991/?format=api", "name": "Stephen Finucane", "email": "stephen@that.guru" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/patchwork/patch/20180624195557.19909-5-stephen@that.guru/mbox/", "series": [ { "id": 51752, "url": "http://patchwork.ozlabs.org/api/series/51752/?format=api", "web_url": "http://patchwork.ozlabs.org/project/patchwork/list/?series=51752", "date": "2018-06-24T19:55:49", "name": "[01/11] REST: Check.user is not read-only", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/51752/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/933970/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/933970/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "patchwork@lists.ozlabs.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "patchwork@lists.ozlabs.org" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 41DNNj2rYNz9ry1\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 25 Jun 2018 05:56:37 +1000 (AEST)", "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 41DNNj1KhRzF1Cl\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 25 Jun 2018 05:56:37 +1000 (AEST)", "from coral.maple.relay.mailchannels.net\n\t(coral.maple.relay.mailchannels.net [23.83.214.39])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 41DNNG00g2zF14g\n\tfor <patchwork@lists.ozlabs.org>;\n\tMon, 25 Jun 2018 05:56:13 +1000 (AEST)", "from relay.mailchannels.net (localhost [127.0.0.1])\n\tby relay.mailchannels.net (Postfix) with ESMTP id CAC7F281C51\n\tfor <patchwork@lists.ozlabs.org>;\n\tSun, 24 Jun 2018 19:56:10 +0000 (UTC)", "from one.mxroute.com (unknown [100.96.31.16])\n\t(Authenticated sender: 5xi41l16bi)\n\tby relay.mailchannels.net (Postfix) with ESMTPA id D3175281AE2\n\tfor <patchwork@lists.ozlabs.org>;\n\tSun, 24 Jun 2018 19:56:08 +0000 (UTC)", "from one.mxroute.com (one-outgoing.mxroute.com [172.19.42.59])\n\t(using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384)\n\tby 0.0.0.0:2500 (trex/5.15.2); Sun, 24 Jun 2018 19:56:10 +0000" ], "Authentication-Results": [ "ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=that.guru", "ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" (0-bit key;\n\tunprotected) header.d=that.guru header.i=@that.guru\n\theader.b=\"GSkD8Ezn\"; dkim-atps=neutral", "lists.ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=that.guru", "lists.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" (0-bit key;\n\tunprotected) header.d=that.guru header.i=@that.guru\n\theader.b=\"GSkD8Ezn\"; dkim-atps=neutral", "lists.ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=that.guru\n\t(client-ip=23.83.214.39; helo=coral.maple.relay.mailchannels.net;\n\tenvelope-from=stephen@that.guru; receiver=<UNKNOWN>)", "lists.ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=that.guru", "lists.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" (0-bit key;\n\tunprotected) header.d=that.guru header.i=@that.guru\n\theader.b=\"GSkD8Ezn\"; dkim-atps=neutral" ], "X-Sender-Id": [ "5xi41l16bi|x-authuser|stephen@that.guru", "5xi41l16bi|x-authuser|stephen@that.guru" ], "X-MC-Relay": "Neutral", "X-MailChannels-SenderId": "5xi41l16bi|x-authuser|stephen@that.guru", "X-MailChannels-Auth-Id": "5xi41l16bi", "X-Dime-Sponge": "5b9cbe863d5082ed_1529870169232_1874239398", "X-MC-Loop-Signature": "1529870169232:3030210557", "X-MC-Ingress-Time": "1529870169232", "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=that.guru;\n\ts=default;\n\th=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:\n\tSender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:\n\tContent-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:\n\tResent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:\n\tList-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=Aey/B7U24smchb+KnYpFtvvnS6phMv16AP2aaD4cpfw=;\n\tb=GSkD8Ezn0F33WUbdPCM7lHKJtZ\n\tozUA7slNxHOWF86f3rwliO66zNgS/TAfwGVdue7uSjl5eFy75dbduhtP5BbLkPExtr1mi5q8mYZxV\n\tY3guWTVAL2acX/VJY3naGDBpEGEzMrq+PZ+pCfK8t89i1ru87P3+1d5T6wiBUCMIUvDqxl1jMDtsI\n\t8+eKGk8LLxj6JzYu2r7zkY/E0ziZUBPsUZzf/xFli7MNdNXCwBp1TFtzFXUTlRDoTp1+KxQuP1w3H\n\t8qle8n17c8DEqcHMZ1/niyan4EgAWGi/4PQrwn+NWi0hCQ21qYg6y9kYelK/4bGNFB9NyhJFlUb3X\n\tlsDR60QA==;", "From": "Stephen Finucane <stephen@that.guru>", "To": "patchwork@lists.ozlabs.org", "Subject": "[PATCH 05/11] Remove compat wrapper for Django < 1.11", "Date": "Sun, 24 Jun 2018 20:55:51 +0100", "Message-Id": "<20180624195557.19909-5-stephen@that.guru>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20180624195557.19909-1-stephen@that.guru>", "References": "<20180624195557.19909-1-stephen@that.guru>", "X-AuthUser": "stephen@that.guru", "X-BeenThere": "patchwork@lists.ozlabs.org", "X-Mailman-Version": "2.1.26", "Precedence": "list", "List-Id": "Patchwork development <patchwork.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/patchwork>,\n\t<mailto:patchwork-request@lists.ozlabs.org?subject=unsubscribe>", "List-Archive": "<http://lists.ozlabs.org/pipermail/patchwork/>", "List-Post": "<mailto:patchwork@lists.ozlabs.org>", "List-Help": "<mailto:patchwork-request@lists.ozlabs.org?subject=help>", "List-Subscribe": "<https://lists.ozlabs.org/listinfo/patchwork>,\n\t<mailto:patchwork-request@lists.ozlabs.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org", "Sender": "\"Patchwork\"\n\t<patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>" }, "content": "Deleting code is fun. We no longer need to carry these so don't.\n\nSigned-off-by: Stephen Finucane <stephen@that.guru>\n---\n patchwork/api/bundle.py | 3 +-\n patchwork/compat.py | 50 +--------------------------\n patchwork/models.py | 7 ++--\n patchwork/paginator.py | 4 +--\n patchwork/settings/base.py | 2 +-\n patchwork/templatetags/listurl.py | 4 +--\n patchwork/templatetags/person.py | 2 +-\n patchwork/tests/api/test_bundle.py | 2 +-\n patchwork/tests/api/test_check.py | 2 +-\n patchwork/tests/api/test_comment.py | 4 +--\n patchwork/tests/api/test_cover.py | 2 +-\n patchwork/tests/api/test_patch.py | 2 +-\n patchwork/tests/api/test_person.py | 2 +-\n patchwork/tests/api/test_project.py | 2 +-\n patchwork/tests/api/test_series.py | 2 +-\n patchwork/tests/api/test_user.py | 2 +-\n patchwork/tests/test_about.py | 3 +-\n patchwork/tests/test_bundles.py | 2 +-\n patchwork/tests/test_completion.py | 2 +-\n patchwork/tests/test_confirm.py | 2 +-\n patchwork/tests/test_detail.py | 2 +-\n patchwork/tests/test_encodings.py | 2 +-\n patchwork/tests/test_filters.py | 2 +-\n patchwork/tests/test_list.py | 2 +-\n patchwork/tests/test_mail_settings.py | 2 +-\n patchwork/tests/test_mboxviews.py | 2 +-\n patchwork/tests/test_paginator.py | 2 +-\n patchwork/tests/test_projects.py | 2 +-\n patchwork/tests/test_registration.py | 2 +-\n patchwork/tests/test_updates.py | 2 +-\n patchwork/tests/test_user.py | 2 +-\n patchwork/tests/test_xmlrpc.py | 2 +-\n patchwork/urls.py | 2 +-\n patchwork/views/__init__.py | 3 +-\n patchwork/views/about.py | 3 +-\n patchwork/views/bundle.py | 2 +-\n patchwork/views/comment.py | 2 +-\n patchwork/views/cover.py | 2 +-\n patchwork/views/mail.py | 2 +-\n patchwork/views/patch.py | 9 +++--\n patchwork/views/project.py | 2 +-\n patchwork/views/user.py | 2 +-\n patchwork/views/xmlrpc.py | 2 +-\n 43 files changed, 50 insertions(+), 106 deletions(-)", "diff": "diff --git a/patchwork/api/bundle.py b/patchwork/api/bundle.py\nindex b0005daa..7b147e1d 100644\n--- a/patchwork/api/bundle.py\n+++ b/patchwork/api/bundle.py\n@@ -28,7 +28,6 @@ from patchwork.api.filters import BundleFilterSet\n from patchwork.api.embedded import PatchSerializer\n from patchwork.api.embedded import ProjectSerializer\n from patchwork.api.embedded import UserSerializer\n-from patchwork.compat import is_authenticated\n from patchwork.models import Bundle\n \n \n@@ -67,7 +66,7 @@ class BundleMixin(object):\n serializer_class = BundleSerializer\n \n def get_queryset(self):\n- if is_authenticated(self.request.user):\n+ if self.request.user.is_authenticated:\n bundle_filter = Q(owner=self.request.user) | Q(public=True)\n else:\n bundle_filter = Q(public=True)\ndiff --git a/patchwork/compat.py b/patchwork/compat.py\nindex e74e9264..9383143c 100644\n--- a/patchwork/compat.py\n+++ b/patchwork/compat.py\n@@ -17,30 +17,11 @@\n # along with Patchwork; if not, write to the Free Software\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n-\"\"\"Compatibility wrappers for various Django versions.\"\"\"\n+\"\"\"Compatibility wrappers for various library versions.\"\"\"\n \n-import django\n from django.conf import settings\n \n \n-# DjangoFilterBackend\n-#\n-# The DjangoFilterBackend was provided in Django REST Framework from 3.0 to\n-# 3.4, was marked as pending deprecation in 3.5, was deprecated in 3.6 and will\n-# be removed in 3.7. However, the equivalent DjangoFilterBackend found in\n-# django-filter is only available since 1.0 of that package.\n-#\n-# http://www.django-rest-framework.org/topics/3.6-announcement/\n-\n-if settings.ENABLE_REST_API:\n- import rest_framework # noqa\n-\n- if rest_framework.VERSION >= '3.5':\n- from django_filters.rest_framework import DjangoFilterBackend # noqa\n- else:\n- from rest_framework.filters import DjangoFilterBackend # noqa\n-\n-\n # NAME_FIELD\n #\n # The django-filter library renamed 'Filter.name' to 'Filter.field_name' in\n@@ -56,32 +37,3 @@ if settings.ENABLE_REST_API:\n NAME_FIELD = 'field_name'\n else:\n NAME_FIELD = 'name'\n-\n-\n-# reverse, reverse_lazy\n-#\n-# The reverse and reverse_lazy functions have been moved to django.urls in\n-# Django 1.10 and backwards compatible imports will be removed in Django 2.0\n-\n-if django.VERSION >= (1, 10):\n- from django.urls import NoReverseMatch # noqa\n- from django.urls import reverse # noqa\n- from django.urls import reverse_lazy # noqa\n-else:\n- from django.core.urlresolvers import NoReverseMatch # noqa\n- from django.core.urlresolvers import reverse # noqa\n- from django.core.urlresolvers import reverse_lazy # noqa\n-\n-\n-# is_authenticated\n-#\n-# models.User.is_authenticated is now an attribute in Django 1.10 instead of a\n-# function\n-#\n-# https://docs.djangoproject.com/en/dev/releases/1.10/\n-\n-def is_authenticated(user):\n- if django.VERSION >= (1, 10):\n- return user.is_authenticated\n- else:\n- return user.is_authenticated()\ndiff --git a/patchwork/models.py b/patchwork/models.py\nindex 71a07c94..0409d4bf 100644\n--- a/patchwork/models.py\n+++ b/patchwork/models.py\n@@ -30,11 +30,10 @@ from django.conf import settings\n from django.contrib.auth.models import User\n from django.core.exceptions import ValidationError\n from django.db import models\n+from django.urls import reverse\n from django.utils.encoding import python_2_unicode_compatible\n from django.utils.functional import cached_property\n \n-from patchwork.compat import is_authenticated\n-from patchwork.compat import reverse\n from patchwork.fields import HashField\n from patchwork.hasher import hash_diff\n \n@@ -101,7 +100,7 @@ class Project(models.Model):\n use_tags = models.BooleanField(default=True)\n \n def is_editable(self, user):\n- if not is_authenticated(user):\n+ if not user.is_authenticated:\n return False\n return self in user.profile.maintainer_projects.all()\n \n@@ -481,7 +480,7 @@ class Patch(SeriesMixin, Submission):\n self.refresh_tag_counts()\n \n def is_editable(self, user):\n- if not is_authenticated(user):\n+ if not user.is_authenticated:\n return False\n \n if user in [self.submitter.user, self.delegate]:\ndiff --git a/patchwork/paginator.py b/patchwork/paginator.py\nindex 359ec867..f565c420 100644\n--- a/patchwork/paginator.py\n+++ b/patchwork/paginator.py\n@@ -22,8 +22,6 @@ from __future__ import absolute_import\n from django.conf import settings\n from django.core import paginator\n \n-from patchwork.compat import is_authenticated\n-\n \n DEFAULT_ITEMS_PER_PAGE = 100\n LONG_PAGE_THRESHOLD = 30\n@@ -44,7 +42,7 @@ class Paginator(paginator.Paginator):\n \n items_per_page = settings.DEFAULT_ITEMS_PER_PAGE\n \n- if is_authenticated(request.user):\n+ if request.user.is_authenticated:\n items_per_page = request.user.profile.items_per_page\n \n super(Paginator, self).__init__(objects, items_per_page)\ndiff --git a/patchwork/settings/base.py b/patchwork/settings/base.py\nindex f96f3694..99eb3c06 100644\n--- a/patchwork/settings/base.py\n+++ b/patchwork/settings/base.py\n@@ -128,7 +128,7 @@ REST_FRAMEWORK = {\n 'rest_framework.versioning.URLPathVersioning',\n 'DEFAULT_PAGINATION_CLASS': 'patchwork.api.base.LinkHeaderPagination',\n 'DEFAULT_FILTER_BACKENDS': (\n- 'patchwork.compat.DjangoFilterBackend',\n+ 'django_filters.rest_framework.DjangoFilterBackend',\n 'rest_framework.filters.SearchFilter',\n 'rest_framework.filters.OrderingFilter',\n ),\ndiff --git a/patchwork/templatetags/listurl.py b/patchwork/templatetags/listurl.py\nindex 6b9106e9..76dae797 100644\n--- a/patchwork/templatetags/listurl.py\n+++ b/patchwork/templatetags/listurl.py\n@@ -21,11 +21,11 @@ from __future__ import absolute_import\n \n from django.conf import settings\n from django import template\n+from django.urls import reverse\n+from django.urls import NoReverseMatch\n from django.utils.encoding import smart_str\n from django.utils.html import escape\n \n-from patchwork.compat import reverse\n-from patchwork.compat import NoReverseMatch\n from patchwork.filters import filterclasses\n \n \ndiff --git a/patchwork/templatetags/person.py b/patchwork/templatetags/person.py\nindex a6f23e91..09c8d103 100644\n--- a/patchwork/templatetags/person.py\n+++ b/patchwork/templatetags/person.py\n@@ -20,10 +20,10 @@\n from __future__ import absolute_import\n \n from django import template\n+from django.urls import reverse\n from django.utils.html import escape\n from django.utils.safestring import mark_safe\n \n-from patchwork.compat import reverse\n from patchwork.filters import SubmitterFilter\n \n \ndiff --git a/patchwork/tests/api/test_bundle.py b/patchwork/tests/api/test_bundle.py\nindex 7c48d344..e0dd8098 100644\n--- a/patchwork/tests/api/test_bundle.py\n+++ b/patchwork/tests/api/test_bundle.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_bundle\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_project\ndiff --git a/patchwork/tests/api/test_check.py b/patchwork/tests/api/test_check.py\nindex 0e7e0cfc..6f4aa5de 100644\n--- a/patchwork/tests/api/test_check.py\n+++ b/patchwork/tests/api/test_check.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import Check\n from patchwork.tests.utils import create_check\n from patchwork.tests.utils import create_patch\ndiff --git a/patchwork/tests/api/test_comment.py b/patchwork/tests/api/test_comment.py\nindex f79ea469..f82c881a 100644\n--- a/patchwork/tests/api/test_comment.py\n+++ b/patchwork/tests/api/test_comment.py\n@@ -20,9 +20,9 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import NoReverseMatch\n+from django.urls import reverse\n \n-from patchwork.compat import NoReverseMatch\n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_comment\n from patchwork.tests.utils import create_cover\n from patchwork.tests.utils import create_patch\ndiff --git a/patchwork/tests/api/test_cover.py b/patchwork/tests/api/test_cover.py\nindex e4d814e4..5061d651 100644\n--- a/patchwork/tests/api/test_cover.py\n+++ b/patchwork/tests/api/test_cover.py\n@@ -21,8 +21,8 @@ import email.parser\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_cover\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_person\ndiff --git a/patchwork/tests/api/test_patch.py b/patchwork/tests/api/test_patch.py\nindex 27b99248..104f7c8a 100644\n--- a/patchwork/tests/api/test_patch.py\n+++ b/patchwork/tests/api/test_patch.py\n@@ -22,8 +22,8 @@ from email.utils import make_msgid\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import Patch\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_patch\ndiff --git a/patchwork/tests/api/test_person.py b/patchwork/tests/api/test_person.py\nindex 22b12813..688a00e9 100644\n--- a/patchwork/tests/api/test_person.py\n+++ b/patchwork/tests/api/test_person.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_person\n from patchwork.tests.utils import create_user\ndiff --git a/patchwork/tests/api/test_project.py b/patchwork/tests/api/test_project.py\nindex 129cedb7..6c5c9c6d 100644\n--- a/patchwork/tests/api/test_project.py\n+++ b/patchwork/tests/api/test_project.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import Project\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_project\ndiff --git a/patchwork/tests/api/test_series.py b/patchwork/tests/api/test_series.py\nindex 11324bc3..13872575 100644\n--- a/patchwork/tests/api/test_series.py\n+++ b/patchwork/tests/api/test_series.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_cover\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_project\ndiff --git a/patchwork/tests/api/test_user.py b/patchwork/tests/api/test_user.py\nindex 873312df..4b4171ea 100644\n--- a/patchwork/tests/api/test_user.py\n+++ b/patchwork/tests/api/test_user.py\n@@ -20,8 +20,8 @@\n import unittest\n \n from django.conf import settings\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_maintainer\n from patchwork.tests.utils import create_user\n \ndiff --git a/patchwork/tests/test_about.py b/patchwork/tests/test_about.py\nindex f4059682..956d0324 100644\n--- a/patchwork/tests/test_about.py\n+++ b/patchwork/tests/test_about.py\n@@ -18,8 +18,7 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n-\n-from patchwork.compat import reverse\n+from django.urls import reverse\n \n \n class AboutViewTest(TestCase):\ndiff --git a/patchwork/tests/test_bundles.py b/patchwork/tests/test_bundles.py\nindex 4461e32f..3fa556b0 100644\n--- a/patchwork/tests/test_bundles.py\n+++ b/patchwork/tests/test_bundles.py\n@@ -25,12 +25,12 @@ import unittest\n \n from django.conf import settings\n from django.test import TestCase\n+from django.urls import reverse\n from django.utils.http import urlencode\n from django.utils import six\n from django.utils.six.moves import range\n from django.utils.six.moves import zip\n \n-from patchwork.compat import reverse\n from patchwork.models import Bundle\n from patchwork.models import BundlePatch\n from patchwork.tests.utils import create_bundle\ndiff --git a/patchwork/tests/test_completion.py b/patchwork/tests/test_completion.py\nindex 8297e571..8e769d4b 100644\n--- a/patchwork/tests/test_completion.py\n+++ b/patchwork/tests/test_completion.py\n@@ -22,9 +22,9 @@ from __future__ import absolute_import\n import json\n \n from django.test import TestCase\n+from django.urls import reverse\n from django.utils.six.moves import range\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_person\n \n \ndiff --git a/patchwork/tests/test_confirm.py b/patchwork/tests/test_confirm.py\nindex ed264313..7d805300 100644\n--- a/patchwork/tests/test_confirm.py\n+++ b/patchwork/tests/test_confirm.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import EmailConfirmation\n from patchwork.tests.utils import create_user\n \ndiff --git a/patchwork/tests/test_detail.py b/patchwork/tests/test_detail.py\nindex 5d8534ea..f119da05 100644\n--- a/patchwork/tests/test_detail.py\n+++ b/patchwork/tests/test_detail.py\n@@ -20,8 +20,8 @@\n from __future__ import absolute_import\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_comment\n from patchwork.tests.utils import create_cover\n from patchwork.tests.utils import create_patch\ndiff --git a/patchwork/tests/test_encodings.py b/patchwork/tests/test_encodings.py\nindex 794d67ac..5a56d4b1 100644\n--- a/patchwork/tests/test_encodings.py\n+++ b/patchwork/tests/test_encodings.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_person\n from patchwork.tests.utils import create_patch\n from patchwork.tests.utils import read_patch\ndiff --git a/patchwork/tests/test_filters.py b/patchwork/tests/test_filters.py\nindex 23cf0ff0..44180f90 100644\n--- a/patchwork/tests/test_filters.py\n+++ b/patchwork/tests/test_filters.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_project\n \n \ndiff --git a/patchwork/tests/test_list.py b/patchwork/tests/test_list.py\nindex 2a023ac6..867d77f6 100644\n--- a/patchwork/tests/test_list.py\n+++ b/patchwork/tests/test_list.py\n@@ -23,9 +23,9 @@ from datetime import datetime as dt\n import re\n \n from django.test import TestCase\n+from django.urls import reverse\n from django.utils.six.moves import zip\n \n-from patchwork.compat import reverse\n from patchwork.models import Patch\n from patchwork.tests.utils import create_patch\n from patchwork.tests.utils import create_person\ndiff --git a/patchwork/tests/test_mail_settings.py b/patchwork/tests/test_mail_settings.py\nindex d38149d8..a6f49645 100644\n--- a/patchwork/tests/test_mail_settings.py\n+++ b/patchwork/tests/test_mail_settings.py\n@@ -21,8 +21,8 @@ import re\n \n from django.core import mail\n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import EmailOptout\n from patchwork.models import EmailConfirmation\n from patchwork.tests.utils import create_person\ndiff --git a/patchwork/tests/test_mboxviews.py b/patchwork/tests/test_mboxviews.py\nindex 8eb3581a..b7af746b 100644\n--- a/patchwork/tests/test_mboxviews.py\n+++ b/patchwork/tests/test_mboxviews.py\n@@ -25,8 +25,8 @@ import dateutil.tz\n import email\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_comment\n from patchwork.tests.utils import create_patch\n from patchwork.tests.utils import create_project\ndiff --git a/patchwork/tests/test_paginator.py b/patchwork/tests/test_paginator.py\nindex b2191bbb..2f2b6e13 100644\n--- a/patchwork/tests/test_paginator.py\n+++ b/patchwork/tests/test_paginator.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests.utils import create_patches\n from patchwork.tests.utils import create_project\n from patchwork.tests.utils import create_user\ndiff --git a/patchwork/tests/test_projects.py b/patchwork/tests/test_projects.py\nindex 804bdda2..67ac1250 100644\n--- a/patchwork/tests/test_projects.py\n+++ b/patchwork/tests/test_projects.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.tests import utils\n \n \ndiff --git a/patchwork/tests/test_registration.py b/patchwork/tests/test_registration.py\nindex 28581eb5..2158dcf5 100644\n--- a/patchwork/tests/test_registration.py\n+++ b/patchwork/tests/test_registration.py\n@@ -21,8 +21,8 @@ from django.contrib.auth.models import User\n from django.core import mail\n from django.test.client import Client\n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import EmailConfirmation, Person\n from patchwork.tests.utils import create_user\n \ndiff --git a/patchwork/tests/test_updates.py b/patchwork/tests/test_updates.py\nindex 80367f45..89f2091a 100644\n--- a/patchwork/tests/test_updates.py\n+++ b/patchwork/tests/test_updates.py\n@@ -18,8 +18,8 @@\n # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n \n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import Patch\n from patchwork.models import State\n from patchwork.tests.utils import create_patches\ndiff --git a/patchwork/tests/test_user.py b/patchwork/tests/test_user.py\nindex 6dd41e1f..05fe6d5e 100644\n--- a/patchwork/tests/test_user.py\n+++ b/patchwork/tests/test_user.py\n@@ -20,8 +20,8 @@\n from django.contrib.auth.models import User\n from django.core import mail\n from django.test import TestCase\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import EmailConfirmation\n from patchwork.models import Person\n from patchwork.models import UserProfile\ndiff --git a/patchwork/tests/test_xmlrpc.py b/patchwork/tests/test_xmlrpc.py\nindex 8edc07ac..a31cdde0 100644\n--- a/patchwork/tests/test_xmlrpc.py\n+++ b/patchwork/tests/test_xmlrpc.py\n@@ -21,9 +21,9 @@ import unittest\n \n from django.conf import settings\n from django.test import LiveServerTestCase\n+from django.urls import reverse\n from django.utils.six.moves import xmlrpc_client\n \n-from patchwork.compat import reverse\n from patchwork.tests import utils\n \n \ndiff --git a/patchwork/urls.py b/patchwork/urls.py\nindex e90de6b2..6b1ef511 100644\n--- a/patchwork/urls.py\n+++ b/patchwork/urls.py\n@@ -22,8 +22,8 @@ from django.conf import settings\n from django.conf.urls import url, include\n from django.contrib import admin\n from django.contrib.auth import views as auth_views\n+from django.urls import reverse_lazy\n \n-from patchwork.compat import reverse_lazy\n from patchwork.views import about as about_views\n from patchwork.views import api as api_views\n from patchwork.views import bundle as bundle_views\ndiff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py\nindex f8d23a38..a30b3a61 100644\n--- a/patchwork/views/__init__.py\n+++ b/patchwork/views/__init__.py\n@@ -20,7 +20,6 @@\n from django.contrib import messages\n from django.shortcuts import get_object_or_404\n \n-from patchwork.compat import is_authenticated\n from patchwork.filters import Filters\n from patchwork.forms import MultiplePatchForm\n from patchwork.models import Bundle\n@@ -230,7 +229,7 @@ def generic_list(request, project, view, view_args=None, filter_settings=None,\n user = request.user\n properties_form = None\n \n- if is_authenticated(user):\n+ if user.is_authenticated:\n # we only pass the post data to the MultiplePatchForm if that was\n # the actual form submitted\n data_tmp = None\ndiff --git a/patchwork/views/about.py b/patchwork/views/about.py\nindex 24a0845e..508dec37 100644\n--- a/patchwork/views/about.py\n+++ b/patchwork/views/about.py\n@@ -21,8 +21,7 @@\n from django.conf import settings\n from django.http import HttpResponsePermanentRedirect\n from django.shortcuts import render\n-\n-from patchwork.compat import reverse\n+from django.urls import reverse\n \n \n def about(request):\ndiff --git a/patchwork/views/bundle.py b/patchwork/views/bundle.py\nindex 5aa63fba..714062c3 100644\n--- a/patchwork/views/bundle.py\n+++ b/patchwork/views/bundle.py\n@@ -24,8 +24,8 @@ from django.http import HttpResponseRedirect\n from django.http import HttpResponseNotFound\n from django.shortcuts import get_object_or_404\n from django.shortcuts import render\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.filters import DelegateFilter\n from patchwork.forms import BundleForm\n from patchwork.forms import DeleteBundleForm\ndiff --git a/patchwork/views/comment.py b/patchwork/views/comment.py\nindex 987f76c5..c9763227 100644\n--- a/patchwork/views/comment.py\n+++ b/patchwork/views/comment.py\n@@ -19,8 +19,8 @@\n \n from django import http\n from django import shortcuts\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork import models\n \n \ndiff --git a/patchwork/views/cover.py b/patchwork/views/cover.py\nindex 73f83cb9..f18a262f 100644\n--- a/patchwork/views/cover.py\n+++ b/patchwork/views/cover.py\n@@ -22,8 +22,8 @@ from django.http import HttpResponse\n from django.http import HttpResponseRedirect\n from django.shortcuts import get_object_or_404\n from django.shortcuts import render_to_response\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import CoverLetter\n from patchwork.models import Submission\n from patchwork.views.utils import cover_to_mbox\ndiff --git a/patchwork/views/mail.py b/patchwork/views/mail.py\nindex 8afd83b3..aca7ab15 100644\n--- a/patchwork/views/mail.py\n+++ b/patchwork/views/mail.py\n@@ -24,8 +24,8 @@ from django.core.mail import send_mail\n from django.http import HttpResponseRedirect\n from django.shortcuts import render\n from django.template.loader import render_to_string\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.forms import EmailForm\n from patchwork.models import EmailConfirmation\n from patchwork.models import EmailOptout\ndiff --git a/patchwork/views/patch.py b/patchwork/views/patch.py\nindex cbd4ec39..6921882e 100644\n--- a/patchwork/views/patch.py\n+++ b/patchwork/views/patch.py\n@@ -24,9 +24,8 @@ from django.http import HttpResponseForbidden\n from django.http import HttpResponseRedirect\n from django.shortcuts import get_object_or_404\n from django.shortcuts import render\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n-from patchwork.compat import is_authenticated\n from patchwork.forms import CreateBundleForm\n from patchwork.forms import PatchForm\n from patchwork.models import Bundle\n@@ -43,7 +42,7 @@ def patch_list(request, project_id):\n context = generic_list(request, project, 'patch-list',\n view_args={'project_id': project.linkname})\n \n- if is_authenticated(request.user):\n+ if request.user.is_authenticated:\n context['bundles'] = request.user.bundles.all()\n \n return render(request, 'patchwork/list.html', context)\n@@ -70,7 +69,7 @@ def patch_detail(request, patch_id):\n \n if editable:\n form = PatchForm(instance=patch)\n- if is_authenticated(request.user):\n+ if request.user.is_authenticated:\n createbundleform = CreateBundleForm()\n \n if request.method == 'POST':\n@@ -111,7 +110,7 @@ def patch_detail(request, patch_id):\n form.save()\n messages.success(request, 'Patch updated')\n \n- if is_authenticated(request.user):\n+ if request.user.is_authenticated:\n context['bundles'] = request.user.bundles.all()\n \n context['submission'] = patch\ndiff --git a/patchwork/views/project.py b/patchwork/views/project.py\nindex 484455c0..a2e5b2da 100644\n--- a/patchwork/views/project.py\n+++ b/patchwork/views/project.py\n@@ -22,8 +22,8 @@ from django.contrib.auth.models import User\n from django.http import HttpResponseRedirect\n from django.shortcuts import get_object_or_404\n from django.shortcuts import render\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.models import Patch\n from patchwork.models import Project\n \ndiff --git a/patchwork/views/user.py b/patchwork/views/user.py\nindex 4a4958ab..8dcb407b 100644\n--- a/patchwork/views/user.py\n+++ b/patchwork/views/user.py\n@@ -28,8 +28,8 @@ from django.http import HttpResponseRedirect\n from django.shortcuts import get_object_or_404\n from django.shortcuts import render\n from django.template.loader import render_to_string\n+from django.urls import reverse\n \n-from patchwork.compat import reverse\n from patchwork.filters import DelegateFilter\n from patchwork.forms import EmailForm\n from patchwork.forms import RegistrationForm\ndiff --git a/patchwork/views/xmlrpc.py b/patchwork/views/xmlrpc.py\nindex 93f6035e..b02a65b6 100644\n--- a/patchwork/views/xmlrpc.py\n+++ b/patchwork/views/xmlrpc.py\n@@ -35,11 +35,11 @@ from django.http import HttpResponse\n from django.http import HttpResponseRedirect\n from django.http import HttpResponseServerError\n from django.views.decorators.csrf import csrf_exempt\n+from django.urls import reverse\n from django.utils import six\n from django.utils.six.moves import xmlrpc_client\n from django.utils.six.moves.xmlrpc_server import SimpleXMLRPCDispatcher\n \n-from patchwork.compat import reverse\n from patchwork.models import Check\n from patchwork.models import Patch\n from patchwork.models import Person\n", "prefixes": [ "05/11" ] }