[PATCH v2 1/3] urls: Move 'help/about' to 'about'

Stephen Finucane stephen at that.guru
Sun Nov 20 05:31:32 AEDT 2016


This is the standard URL for such pages. This involves removing the
pwclient help page, but this is migrated to the project summary page
and detailed in the documentation.

Permanent redirects are included to prevent dead links.

Signed-off-by: Stephen Finucane <stephen at that.guru>
---
 patchwork/templates/patchwork/about.html         | 14 +++++++++
 patchwork/templates/patchwork/help/about.html    | 14 ---------
 patchwork/templates/patchwork/help/index.html    |  2 --
 patchwork/templates/patchwork/help/pwclient.html | 24 --------------
 patchwork/templates/patchwork/project.html       | 19 ++++++++---
 patchwork/tests/test_about.py                    | 32 +++++++++++++++++++
 patchwork/tests/test_xmlrpc.py                   |  3 +-
 patchwork/urls.py                                | 12 +++++--
 patchwork/views/about.py                         | 36 +++++++++++++++++++++
 patchwork/views/help.py                          | 40 ------------------------
 patchwork/views/xmlrpc.py                        |  3 +-
 templates/base.html                              |  2 +-
 12 files changed, 108 insertions(+), 93 deletions(-)
 create mode 100644 patchwork/templates/patchwork/about.html
 delete mode 100644 patchwork/templates/patchwork/help/about.html
 delete mode 100644 patchwork/templates/patchwork/help/index.html
 delete mode 100644 patchwork/templates/patchwork/help/pwclient.html
 create mode 100644 patchwork/tests/test_about.py
 create mode 100644 patchwork/views/about.py
 delete mode 100644 patchwork/views/help.py

diff --git a/patchwork/templates/patchwork/about.html b/patchwork/templates/patchwork/about.html
new file mode 100644
index 0000000..ed0c421
--- /dev/null
+++ b/patchwork/templates/patchwork/about.html
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+
+{% block title %}About{% endblock %}
+{% block heading %}About Patchwork{% endblock %}
+
+{% block body %}
+<h1>About Patchwork</h1>
+
+<p>Patchwork is free software, and is available from the
+<a href="http://jk.ozlabs.org/projects/patchwork/">Patchwork website</a>.</p>
+
+<p>Patchwork is built on the <a href="http://djangoproject.com/">Django</a>
+web framework.</p>
+{% endblock %}
diff --git a/patchwork/templates/patchwork/help/about.html b/patchwork/templates/patchwork/help/about.html
deleted file mode 100644
index ed0c421..0000000
--- a/patchwork/templates/patchwork/help/about.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}About{% endblock %}
-{% block heading %}About Patchwork{% endblock %}
-
-{% block body %}
-<h1>About Patchwork</h1>
-
-<p>Patchwork is free software, and is available from the
-<a href="http://jk.ozlabs.org/projects/patchwork/">Patchwork website</a>.</p>
-
-<p>Patchwork is built on the <a href="http://djangoproject.com/">Django</a>
-web framework.</p>
-{% endblock %}
diff --git a/patchwork/templates/patchwork/help/index.html b/patchwork/templates/patchwork/help/index.html
deleted file mode 100644
index 5cb6467..0000000
--- a/patchwork/templates/patchwork/help/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "base.html" %}
-
diff --git a/patchwork/templates/patchwork/help/pwclient.html b/patchwork/templates/patchwork/help/pwclient.html
deleted file mode 100644
index b419b42..0000000
--- a/patchwork/templates/patchwork/help/pwclient.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}pwclient: The Patchwork command-line client{% endblock %}
-{% block heading %}pwclient{% endblock %}
-
-{% block body %}
-<h1>pwclient</h1>
-
-<p><code>pwclient</code> is the command-line client for Patchwork. Currently,
-it provides access to some read-only features of Patchwork, such as downloading
-and applying patches.</p>
-
-<p>To use pwclient, you will need:</p>
-<ul>
- <li>The <a href="{% url 'pwclient' %}">pwclient</a>
-  program (11kB, python script)</li>
- <li>(optional) a <code>.pwclientrc</code> file in your home directory.</li>
-</ul>
-
-<p>You can create your own <code>.pwclientrc</code> file. Each
-<a href="{% url 'project-list' %}">Patchwork project</a>
-provides a sample linked from the 'project info' page.</p>
-
-{% endblock %}
diff --git a/patchwork/templates/patchwork/project.html b/patchwork/templates/patchwork/project.html
index 6f7e37d..74b6f0f 100644
--- a/patchwork/templates/patchwork/project.html
+++ b/patchwork/templates/patchwork/project.html
@@ -50,10 +50,19 @@
 </table>
 
 {% if enable_xmlrpc %}
-<p>Sample <a href="{% url 'help' "pwclient/" %}">Patchwork
-client</a> configuration for this project: <a
-href="{% url 'pwclientrc' project.linkname %}"
->.pwclientrc</a>.</p>
-{% endif %}
+<h2>pwclient</h2>
+
+<p><code>pwclient</code> is the command-line client for Patchwork. Currently,
+it provides access to some read-only features of Patchwork, such as downloading
+and applying patches.</p>
 
+<p>To use pwclient, you will need:</p>
+<ul>
+ <li>The <a href="{% url 'pwclient' %}">pwclient</a>
+  program (11kB, python script)</li>
+ <li>(optional) A <code><a href="{% url 'pwclientrc' project.linkname %}"
+ >.pwclientrc</a></code> file for this project, which should be stored in your
+ home directory.</li>
+</ul>
+{% endif %}
 {% endblock %}
diff --git a/patchwork/tests/test_about.py b/patchwork/tests/test_about.py
new file mode 100644
index 0000000..2175641
--- /dev/null
+++ b/patchwork/tests/test_about.py
@@ -0,0 +1,32 @@
+# Patchwork - automated patch tracking system
+# Copyright (C) 2016 Stephen Finucane <stephen at that.guru>
+#
+# This file is part of the Patchwork package.
+#
+# Patchwork is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Patchwork is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Patchwork; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from django.core.urlresolvers import reverse
+from django.test import TestCase
+
+
+class AboutViewTest(TestCase):
+
+    def test_redirects(self):
+        for view in ['help', 'help-about', 'help-pwclient']:
+            requested_url = reverse(view)
+            redirect_url = reverse('about')
+
+            response = self.client.get(requested_url)
+            self.assertRedirects(response, redirect_url, 301)
diff --git a/patchwork/tests/test_xmlrpc.py b/patchwork/tests/test_xmlrpc.py
index 3b97fb1..ddaded8 100644
--- a/patchwork/tests/test_xmlrpc.py
+++ b/patchwork/tests/test_xmlrpc.py
@@ -45,8 +45,7 @@ class XMLRPCGenericTest(XMLRPCTest):
 
     def test_get_redirect(self):
         response = self.client.patch(self.url)
-        self.assertRedirects(
-            response, reverse('help', kwargs={'path': 'pwclient/'}))
+        self.assertRedirects(response, reverse('project-list'))
 
     def test_invalid_method(self):
         with self.assertRaises(xmlrpc_client.Fault):
diff --git a/patchwork/urls.py b/patchwork/urls.py
index 33e4781..ec1fd7f 100644
--- a/patchwork/urls.py
+++ b/patchwork/urls.py
@@ -22,10 +22,10 @@ from django.conf.urls import url, include
 from django.contrib import admin
 from django.contrib.auth import views as auth_views
 
+from patchwork.views import about as about_views
 from patchwork.views import api as api_views
 from patchwork.views import bundle as bundle_views
 from patchwork.views import cover as cover_views
-from patchwork.views import help as help_views
 from patchwork.views import mail as mail_views
 from patchwork.views import notification as notification_views
 from patchwork.views import patch as patch_views
@@ -122,8 +122,12 @@ urlpatterns = [
     url(r'^mail/optout/$', mail_views.optout, name='mail-optout'),
     url(r'^mail/optin/$', mail_views.optin, name='mail-optin'),
 
-    # help!
-    url(r'^help/(?P<path>.*)$', help_views.detail, name='help'),
+    # about
+    url(r'^about/$', about_views.about, name='about'),
+
+    # legacy redirects
+    url(r'^help/$', about_views.redirect, name='help'),
+    url(r'^help/about/$', about_views.redirect, name='help-about'),
 ]
 
 if 'debug_toolbar' in settings.INSTALLED_APPS:
@@ -140,6 +144,8 @@ if settings.ENABLE_XMLRPC:
         url(r'^project/(?P<project_id>[^/]+)/pwclientrc/$',
             pwclient_views.pwclientrc,
             name='pwclientrc'),
+        # legacy redirect
+        url(r'^help/pwclient/$', about_views.redirect, name='help-pwclient'),
     ]
 
 if settings.ENABLE_REST_API:
diff --git a/patchwork/views/about.py b/patchwork/views/about.py
new file mode 100644
index 0000000..86ef952
--- /dev/null
+++ b/patchwork/views/about.py
@@ -0,0 +1,36 @@
+# Patchwork - automated patch tracking system
+# Copyright (C) 2008 Jeremy Kerr <jk at ozlabs.org>
+# Copyright (C) 2016 Stephen Finucane <stephen at that.guru>
+#
+# This file is part of the Patchwork package.
+#
+# Patchwork is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Patchwork is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Patchwork; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from django.conf import settings
+from django.core.urlresolvers import reverse
+from django.http import HttpResponsePermanentRedirect
+from django.shortcuts import render
+
+
+def about(request):
+    return render(request, 'patchwork/about.html')
+
+
+def redirect(request):
+    """Redirect for legacy URLs.
+
+    Remove this when Patchwork 3.0 is released.
+    """
+    return HttpResponsePermanentRedirect(reverse('about'))
diff --git a/patchwork/views/help.py b/patchwork/views/help.py
deleted file mode 100644
index 7666b0a..0000000
--- a/patchwork/views/help.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Patchwork - automated patch tracking system
-# Copyright (C) 2008 Jeremy Kerr <jk at ozlabs.org>
-#
-# This file is part of the Patchwork package.
-#
-# Patchwork is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# Patchwork is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Patchwork; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-from __future__ import absolute_import
-
-from django.conf import settings
-from django.http import Http404
-from django.shortcuts import render
-
-
-help_pages = {
-    '': 'index.html',
-    'about/': 'about.html',
-}
-
-if settings.ENABLE_XMLRPC:
-    help_pages['pwclient/'] = 'pwclient.html'
-
-
-def detail(request, path):
-    if path in help_pages:
-        return render(request,
-                      'patchwork/help/' + help_pages[path])
-    raise Http404
diff --git a/patchwork/views/xmlrpc.py b/patchwork/views/xmlrpc.py
index 0c3f581..1c7f0e9 100644
--- a/patchwork/views/xmlrpc.py
+++ b/patchwork/views/xmlrpc.py
@@ -141,8 +141,7 @@ dispatcher = PatchworkXMLRPCDispatcher()
 @csrf_exempt
 def xmlrpc(request):
     if request.method not in ['POST', 'GET']:
-        return HttpResponseRedirect(reverse('help',
-                                            kwargs={'path': 'pwclient/'}))
+        return HttpResponseRedirect(reverse('project-list'))
 
     response = HttpResponse()
 
diff --git a/templates/base.html b/templates/base.html
index 3c9fc7d..8045b51 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -114,7 +114,7 @@
   <div id="footer">
    <a href="http://jk.ozlabs.org/projects/patchwork/">patchwork</a>
    patch tracking system | <a
-   href="{% url 'help' path="about/" %}">about patchwork</a>
+   href="{% url 'about' %}">about patchwork</a>
   </div>
  </body>
 </html>
-- 
2.7.4



More information about the Patchwork mailing list