Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1516037/?format=api
{ "id": 1516037, "url": "http://patchwork.ozlabs.org/api/patches/1516037/?format=api", "web_url": "http://patchwork.ozlabs.org/project/patchwork/patch/20210811213705.36293-2-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": "<20210811213705.36293-2-stephen@that.guru>", "list_archive_url": null, "date": "2021-08-11T21:36:47", "name": "[RFC,01/19] templates: Use standard indentation", "commit_ref": null, "pull_url": null, "state": "rfc", "archived": false, "hash": "ea6140b2a4d3143b9059d1a3f057aea7027e4dc6", "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/20210811213705.36293-2-stephen@that.guru/mbox/", "series": [ { "id": 257699, "url": "http://patchwork.ozlabs.org/api/series/257699/?format=api", "web_url": "http://patchwork.ozlabs.org/project/patchwork/list/?series=257699", "date": "2021-08-11T21:36:49", "name": "Integrate Bulma", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/257699/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1516037/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1516037/checks/", "tags": {}, "related": [ { "id": 1523324, "url": "http://patchwork.ozlabs.org/api/patches/1523324/?format=api", "web_url": "http://patchwork.ozlabs.org/project/patchwork/patch/20210901165756.181192-2-stephen@that.guru/", "msgid": "<20210901165756.181192-2-stephen@that.guru>", "list_archive_url": null, "date": "2021-09-01T16:57:38", "name": "[RFC,v2,01/19] templates: Use standard indentation", "mbox": "http://patchwork.ozlabs.org/project/patchwork/patch/20210901165756.181192-2-stephen@that.guru/mbox/" } ], "headers": { "Return-Path": "\n <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" ], "Authentication-Results": [ "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=<UNKNOWN>)", "ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" header.d=that.guru\n header.i=@that.guru header.a=rsa-sha256 header.s=x header.b=jxDDgzUE;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" header.d=that.guru\n header.i=@that.guru header.a=rsa-sha256 header.s=x header.b=jxDDgzUE;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=that.guru\n (client-ip=136.175.108.45; helo=mail-108-mta45.mxroute.com;\n envelope-from=stephen@that.guru; receiver=<UNKNOWN>)", "lists.ozlabs.org;\n dkim=fail reason=\"key not found in DNS\" header.d=that.guru\n header.i=@that.guru\n header.a=rsa-sha256 header.s=x header.b=jxDDgzUE;\n dkim-atps=neutral" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 4GlNTg1JkPz9sXN\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Aug 2021 07:37:59 +1000 (AEST)", "from boromir.ozlabs.org (localhost [IPv6:::1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4GlNTf6l1vz3bYx\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Aug 2021 07:37:58 +1000 (AEST)", "from mail-108-mta45.mxroute.com (mail-108-mta45.mxroute.com\n [136.175.108.45])\n (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n (No client certificate requested)\n by lists.ozlabs.org (Postfix) with ESMTPS id 4GlNT25jyTz30Fg\n for <patchwork@lists.ozlabs.org>; Thu, 12 Aug 2021 07:37:25 +1000 (AEST)", "from filter004.mxroute.com ([149.28.56.236] filter004.mxroute.com)\n (Authenticated sender: mN4UYu2MZsgR)\n by mail-108-mta45.mxroute.com (ZoneMTA) with ESMTPSA id\n 17b3725f42d00074ba.002\n for <patchwork@lists.ozlabs.org>\n (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256);\n Wed, 11 Aug 2021 21:37:19 +0000" ], "X-Zone-Loop": "ec6a1962c5512f3e1901efa33cafb7ef90dd6ee7a30e", "X-Originating-IP": "[149.28.56.236]", "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=that.guru;\n s=x;\n h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:\n In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID:\n Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n List-Post:List-Owner:List-Archive;\n bh=wgao7Kc1wz+7Imp/FJKiY2X03wka3d4/PhDJLtV1eR0=; b=jxDDgzUE1lbKz/piOgV9Xzz60U\n t/53L5y+S9vd2m1kgcixx0GnIgY0/KyooeQSurFrQsj8s4Pkp8OnfmKVtsLe4zXQIS8UJGuI7Z4IQ\n puANyEf0R0RU8MuOjKQYjBdO0rR4Kn+VMvJpRej2VwOlqzpa9hhg7quQ0gxm67GN27EUT4yq98Xrb\n LDy7LP0gXqA4GERJFTmKGL5aGyAq57fNFIPTRbIvLl8XDj8LoCyVbcgnWa4X0qGMMHWcFTd0tjthq\n GMzNo+tsEsBAv7xKOSRoWHDqfwAfblR8KGVzcBBHA1ImjHMmwYwrPUK7gvY3LIAlQECOOtXeJRa+7\n k0RsdAFw==;", "From": "Stephen Finucane <stephen@that.guru>", "To": "patchwork@lists.ozlabs.org", "Subject": "[RFC PATCH 01/19] templates: Use standard indentation", "Date": "Wed, 11 Aug 2021 22:36:47 +0100", "Message-Id": "<20210811213705.36293-2-stephen@that.guru>", "X-Mailer": "git-send-email 2.31.1", "In-Reply-To": "<20210811213705.36293-1-stephen@that.guru>", "References": "<20210811213705.36293-1-stephen@that.guru>", "MIME-Version": "1.0", "X-AuthUser": "stephen@that.guru", "X-Zone-Spam-Resolution": "no action", "X-Zone-Spam-Status": "No, score=0.9, required=15, tests=[ARC_NA=0,\n MID_CONTAINS_FROM=1, FROM_HAS_DN=0, RCPT_COUNT_THREE=0, TO_DN_SOME=0,\n MIME_GOOD=-0.1, FROM_EQ_ENVFROM=0, MIME_TRACE=0, RCVD_COUNT_ZERO=0,\n NEURAL_SPAM=0]", "X-BeenThere": "patchwork@lists.ozlabs.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "Patchwork development <patchwork.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/patchwork>,\n <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 <mailto:patchwork-request@lists.ozlabs.org?subject=subscribe>", "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 <patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>" }, "content": "Use a standard two space indentation across files, rewrapping some stuff\nas we go along.\n\nSigned-off-by: Stephen Finucane <stephen@that.guru>\n---\n patchwork/templates/patchwork/about.html | 6 +-\n patchwork/templates/patchwork/bundle.html | 37 +-\n patchwork/templates/patchwork/bundles.html | 84 +--\n .../templates/patchwork/confirm-error.html | 12 +-\n patchwork/templates/patchwork/list.html | 12 +-\n patchwork/templates/patchwork/login.html | 40 +-\n .../templates/patchwork/mail-settings.html | 47 +-\n patchwork/templates/patchwork/mail.html | 45 +-\n .../templates/patchwork/optin-request.html | 50 +-\n patchwork/templates/patchwork/optin.html | 21 +-\n .../templates/patchwork/optout-request.html | 52 +-\n patchwork/templates/patchwork/optout.html | 28 +-\n .../patchwork/partials/download-buttons.html | 34 +-\n .../templates/patchwork/partials/filters.html | 83 +--\n .../patchwork/partials/pagination.html | 42 +-\n .../patchwork/partials/patch-list.html | 479 +++++++++---------\n patchwork/templates/patchwork/profile.html | 271 +++++-----\n patchwork/templates/patchwork/project.html | 98 ++--\n patchwork/templates/patchwork/projects.html | 16 +-\n .../patchwork/registration-confirm.html | 9 +-\n .../templates/patchwork/registration.html | 160 +++---\n patchwork/templates/patchwork/submission.html | 445 ++++++++--------\n patchwork/templates/patchwork/todo-list.html | 8 +-\n patchwork/templates/patchwork/todo-lists.html | 31 +-\n .../patchwork/user-link-confirm.html | 11 +-\n patchwork/templates/patchwork/user-link.html | 36 +-\n templates/404.html | 2 -\n templates/base.html | 224 ++++----\n .../registration/password_change_done.html | 2 -\n .../registration/password_change_form.html | 52 +-\n .../registration/password_reset_complete.html | 3 +-\n .../registration/password_reset_confirm.html | 62 ++-\n .../registration/password_reset_done.html | 14 +-\n .../registration/password_reset_email.html | 2 +-\n .../registration/password_reset_form.html | 52 +-\n 35 files changed, 1290 insertions(+), 1280 deletions(-)", "diff": "diff --git patchwork/templates/patchwork/about.html patchwork/templates/patchwork/about.html\nindex 210e9513..43f3110b 100644\n--- patchwork/templates/patchwork/about.html\n+++ patchwork/templates/patchwork/about.html\n@@ -48,8 +48,7 @@\n <ul class=\"list-group\">\n <li class=\"list-group-item\">\n REST\n- <span class=\"glyphicon glyphicon-question-sign\" title=\"The REST\n- API\"></span>\n+ <span class=\"glyphicon glyphicon-question-sign\" title=\"The REST API\"></span>\n {% if enabled_apis.rest %}\n <span class=\"label label-success pull-right\">enabled</span>\n {% else %}\n@@ -58,8 +57,7 @@\n </li>\n <li class=\"list-group-item\">\n XML-RPC\n- <span class=\"glyphicon glyphicon-question-sign\" title=\"The XML-RPC\n- API\"></span>\n+ <span class=\"glyphicon glyphicon-question-sign\" title=\"The XML-RPC API\"></span>\n {% if enabled_apis.xmlrpc %}\n <span class=\"label label-success pull-right\">enabled</span>\n {% else %}\ndiff --git patchwork/templates/patchwork/bundle.html patchwork/templates/patchwork/bundle.html\nindex 411c18b5..fc87eac4 100644\n--- patchwork/templates/patchwork/bundle.html\n+++ patchwork/templates/patchwork/bundle.html\n@@ -4,37 +4,34 @@\n {% load static %}\n \n {% block headers %}\n- <script src=\"{% static \"js/jquery.tablednd.js\" %}\"></script>\n- <script src=\"{% static \"js/bundle.js\" %}\"></script>\n+ <script src=\"{% static \"js/jquery.tablednd.js\" %}\"></script>\n+ <script src=\"{% static \"js/bundle.js\" %}\"></script>\n {% endblock %}\n-{% block title %}{{project.name}}{% endblock %}\n+{% block title %}{{ project.name }}{% endblock %}\n \n {% block body %}\n <h1>Bundle</h1>\n \n-<p>This bundle contains patches for the {{ bundle.project.linkname }}\n-project.</p>\n+<p>This bundle contains patches for the {{ bundle.project.linkname }} project.</p>\n \n <p><a href=\"{% url 'bundle-mbox' username=bundle.owner.username bundlename=bundle.name %}\">Download bundle as mbox</a></p>\n \n {% if bundleform %}\n <form method=\"post\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"form\" value=\"bundle\"/>\n-<table class=\"form\">\n-\n- <tr>\n- <th colspan=\"2\" class=\"headerrow\">Bundle settings</th>\n- </tr>\n-\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"form\" value=\"bundle\"/>\n+ <table class=\"form\">\n+ <tr>\n+ <th colspan=\"2\" class=\"headerrow\">Bundle settings</th>\n+ </tr>\n {{ bundleform }}\n- <tr>\n- <td colspan=\"2\" class=\"submitrow\">\n- <input type=\"submit\" name=\"action\" value=\"Update\"/>\n- <input type=\"submit\" name=\"action\" value=\"Delete\"/>\n- </td>\n- </tr>\n-</table>\n+ <tr>\n+ <td colspan=\"2\" class=\"submitrow\">\n+ <input type=\"submit\" name=\"action\" value=\"Update\"/>\n+ <input type=\"submit\" name=\"action\" value=\"Delete\"/>\n+ </td>\n+ </tr>\n+ </table>\n </form>\n \n <div style=\"clear: both; padding: 1em;\"></div>\ndiff --git patchwork/templates/patchwork/bundles.html patchwork/templates/patchwork/bundles.html\nindex 1bb3b0da..cc2ebf90 100644\n--- patchwork/templates/patchwork/bundles.html\n+++ patchwork/templates/patchwork/bundles.html\n@@ -10,53 +10,55 @@\n \n {% if bundles %}\n <table class=\"bundlelist\">\n- <tr>\n- <th>Bundle</th>\n- <th>Project</th>\n- <th>Public</th>\n- <th>Patches</th>\n- <th>Download</th>\n- <th>Delete</th>\n- </tr>\n+ <tr>\n+ <th>Bundle</th>\n+ <th>Project</th>\n+ <th>Public</th>\n+ <th>Patches</th>\n+ <th>Download</th>\n+ <th>Delete</th>\n+ </tr>\n {% for bundle in bundles %}\n- <tr>\n- <td><a href=\"{{ bundle.get_absolute_url }}\">{{ bundle.name }}</a></td>\n- <td>\n- <a href=\"{% url 'project-detail' project_id=bundle.project.linkname %}\">\n- {{ bundle.project.linkname }}\n- </a>\n- </td>\n- <td style=\"text-align: center;\">\n- {% if bundle.public %}\n- <span class=\"glyphicon glyphicon-ok\"></span>\n- {% else %}\n- <span class=\"glyphicon glyphicon-remove\"></span>\n- {% endif %}\n- </td>\n- <td style=\"text-align: right\">{{ bundle.patches.count }}</td>\n- <td style=\"text-align: center;\"><a href=\"{{ bundle.get_mbox_url }}\"\n- ><span class=\"glyphicon glyphicon-download-alt\"></span></a></td>\n- <td style=\"text-align: center;\">\n- <form method=\"post\"\n- onsubmit=\"return confirm_delete('bundle', '{{bundle.name|escapejs}}');\">\n- {% csrf_token %}\n- {{ bundle.delete_form.as_p }}\n- <button type=\"submit\" style=\"background: transparent; border: 0px; padding: 0; outline: 0;\">\n- <span class=\"glyphicon glyphicon-remove\"></span>\n- </button>\n- </form>\n- </td>\n+ <tr>\n+ <td><a href=\"{{ bundle.get_absolute_url }}\">{{ bundle.name }}</a></td>\n+ <td>\n+ <a href=\"{% url 'project-detail' project_id=bundle.project.linkname %}\">\n+ {{ bundle.project.linkname }}\n+ </a>\n+ </td>\n+ <td style=\"text-align: center;\">\n+ {% if bundle.public %}\n+ <span class=\"glyphicon glyphicon-ok\"></span>\n+ {% else %}\n+ <span class=\"glyphicon glyphicon-remove\"></span>\n+ {% endif %}\n+ </td>\n+ <td style=\"text-align: right\">{{ bundle.patches.count }}</td>\n+ <td style=\"text-align: center;\"><a href=\"{{ bundle.get_mbox_url }}\"\n+ ><span class=\"glyphicon glyphicon-download-alt\"></span></a></td>\n+ <td style=\"text-align: center;\">\n+ <form method=\"post\"\n+ onsubmit=\"return confirm_delete('bundle', '{{ bundle.name|escapejs }}');\">\n+ {% csrf_token %}\n+ {{ bundle.delete_form.as_p }}\n+ <button type=\"submit\" style=\"background: transparent; border: 0px; padding: 0; outline: 0;\">\n+ <span class=\"glyphicon glyphicon-remove\"></span>\n+ </button>\n+ </form>\n+ </td>\n \n- </tr>\n+ </tr>\n {% endfor %}\n </table>\n {% endif %}\n \n-<p>Bundles are groups of related patches. You can create bundles by\n-selecting patches from a project, then using the 'create bundle' form\n-to give your bundle a name. Each bundle can be public or private; public\n-bundles are given a persistent URL, based you your username and the name\n-of the bundle. Private bundles are only visible to you.</p>\n+<p>\n+ Bundles are groups of related patches. You can create bundles by\n+ selecting patches from a project, then using the 'create bundle' form\n+ to give your bundle a name. Each bundle can be public or private; public\n+ bundles are given a persistent URL, based you your username and the name\n+ of the bundle. Private bundles are only visible to you.\n+</p>\n \n {% if not bundles %}\n <p>You have no bundles.</p>\ndiff --git patchwork/templates/patchwork/confirm-error.html patchwork/templates/patchwork/confirm-error.html\nindex 81292e27..b1ce42ee 100644\n--- patchwork/templates/patchwork/confirm-error.html\n+++ patchwork/templates/patchwork/confirm-error.html\n@@ -7,13 +7,17 @@\n {% block body %}\n \n {% if error == 'inactive' %}\n-<p>This confirmation has already been processed; you've probably visited this\n-page before.</p>\n+<p>\n+ This confirmation has already been processed; you've probably visited this\n+ page before.\n+</p>\n {% endif %}\n \n {% if error == 'expired' %}\n-<p>The confirmation has expired. If you'd still like to perform the\n-{{conf.get_type_display}} process, you'll need to resubmit the request.</p>\n+<p>\n+ The confirmation has expired. If you'd still like to perform the\n+ {{ conf.get_type_display }} process, you'll need to resubmit the request.\n+</p>\n {% endif %}\n \n {% endblock %}\ndiff --git patchwork/templates/patchwork/list.html patchwork/templates/patchwork/list.html\nindex 5d3d82aa..5a9d9702 100644\n--- patchwork/templates/patchwork/list.html\n+++ patchwork/templates/patchwork/list.html\n@@ -3,17 +3,19 @@\n {% load person %}\n {% load static %}\n \n-{% block title %}{{project.name}}{% endblock %}\n+{% block title %}{{ project.name }}{% endblock %}\n {% block patch_active %}active{% endblock %}\n \n {% block body %}\n-\n {% if errors %}\n-<p>The following error{{ errors|length|pluralize:\" was,s were\" }} encountered\n-while updating patches:</p>\n+<p>\n+ The following error{{ errors|length|pluralize:\" was,s were\" }} encountered\n+ while updating patches:\n+</p>\n+\n <ul class=\"errorlist\">\n {% for error in errors %}\n- <li>{{ error }}</li>\n+ <li>{{ error }}</li>\n {% endfor %}\n </ul>\n {% endif %}\ndiff --git patchwork/templates/patchwork/login.html patchwork/templates/patchwork/login.html\nindex 46f77edf..86111342 100644\n--- patchwork/templates/patchwork/login.html\n+++ patchwork/templates/patchwork/login.html\n@@ -14,26 +14,24 @@\n {% block body %}\n <form method=\"post\">\n {% csrf_token %}\n-<table class=\"form loginform\">\n- <tr>\n- <th colspan=\"2\" class=\"headerrow\">login</th>\n- </tr>\n- {% if error %}\n- <tr>\n- <td colspan=\"2\">{{ error }}</td>\n- </tr>\n- {% endif %}\n- {{ form }}\n- <tr>\n- <td class=\"submitrow\">\n- <input type=\"submit\" value=\"Login\"/>\n- </td>\n- <td class=\"submitrow\">\n- <a href=\"{% url 'password_reset' %}\">\n- Forgot password?\n- </a>\n- </td>\n- </tr>\n-</table>\n+ <table class=\"form loginform\">\n+ <tr>\n+ <th colspan=\"2\" class=\"headerrow\">login</th>\n+ </tr>\n+{% if error %}\n+ <tr>\n+ <td colspan=\"2\">{{ error }}</td>\n+ </tr>\n+{% endif %}\n+{{ form }}\n+ <tr>\n+ <td class=\"submitrow\">\n+ <input type=\"submit\" value=\"Login\"/>\n+ </td>\n+ <td class=\"submitrow\">\n+ <a href=\"{% url 'password_reset' %}\">Forgot password?</a>\n+ </td>\n+ </tr>\n+ </table>\n </form>\n {% endblock %}\ndiff --git patchwork/templates/patchwork/mail-settings.html patchwork/templates/patchwork/mail-settings.html\nindex e35fa871..58f567ac 100644\n--- patchwork/templates/patchwork/mail-settings.html\n+++ patchwork/templates/patchwork/mail-settings.html\n@@ -4,33 +4,34 @@\n {% block heading %}Mail settings{% endblock %}\n \n {% block body %}\n-<p>Settings for <strong>{{email}}</strong>:</p>\n+<p>Settings for <strong>{{ email }}</strong>:</p>\n \n <table class=\"horizontal\">\n- <tr>\n- <th>Opt-out list</th>\n+ <tr>\n+ <th>Opt-out list</th>\n {% if is_optout %}\n- <td>Patchwork <strong>may not</strong> send automated notifications to\n- this address.</td>\n- <td>\n- <form method=\"post\" action=\"{% url 'mail-optin' %}\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"email\" value=\"{{email}}\"/>\n- <input type=\"submit\" value=\"Opt-in\"/>\n- </form>\n- </td>\n+ <td>\n+ Patchwork <strong>may not</strong> send automated notifications to this address.\n+ </td>\n+ <td>\n+ <form method=\"post\" action=\"{% url 'mail-optin' %}\">\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"email\" value=\"{{ email }}\"/>\n+ <input type=\"submit\" value=\"Opt-in\"/>\n+ </form>\n+ </td>\n {% else %}\n- <td>Patchwork <strong>may</strong> send automated notifications to\n- this address.</td>\n- <td>\n- <form method=\"post\" action=\"{% url 'mail-optout' %}\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"email\" value=\"{{email}}\"/>\n- <input type=\"submit\" value=\"Opt-out\"/>\n- </form>\n- </td>\n+ <td>\n+ Patchwork <strong>may</strong> send automated notifications to this address.\n+ </td>\n+ <td>\n+ <form method=\"post\" action=\"{% url 'mail-optout' %}\">\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"email\" value=\"{{ email }}\"/>\n+ <input type=\"submit\" value=\"Opt-out\"/>\n+ </form>\n+ </td>\n {% endif %}\n- </tr>\n+ </tr>\n </table>\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/mail.html patchwork/templates/patchwork/mail.html\nindex 1c6c0493..a2ad23d1 100644\n--- patchwork/templates/patchwork/mail.html\n+++ patchwork/templates/patchwork/mail.html\n@@ -4,35 +4,34 @@\n {% block heading %}Mail settings{% endblock %}\n \n {% block body %}\n-\n-<p>You can configure Patchwork to send you mail on certain events,\n-or block automated mail altogether. Enter your email address to\n-view or change your email settings.</p>\n+<p>\n+ You can configure Patchwork to send you mail on certain events,\n+ or block automated mail altogether. Enter your email address to\n+ view or change your email settings.\n+</p>\n \n <form method=\"post\">\n {% csrf_token %}\n <table class=\"form registerform\">\n {% if form.errors %}\n- <tr>\n- <td colspan=\"2\" class=\"error\">\n- There was an error accessing your mail settings:\n- </td>\n- </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"error\">\n+ There was an error accessing your mail settings:\n+ </td>\n+ </tr>\n {% endif %}\n- <tr>\n- <th>{{ form.email.label_tag }}</th>\n- <td>\n- {{form.email}}\n- {{form.email.errors}}\n- </td>\n- </tr>\n- <tr>\n- <td colspan=\"2\" class=\"submitrow\">\n- <input type=\"submit\" value=\"Access mail settings\"/>\n- </td>\n- </tr>\n+ <tr>\n+ <th>{{ form.email.label_tag }}</th>\n+ <td>\n+ {{ form.email }}\n+ {{ form.email.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"submitrow\">\n+ <input type=\"submit\" value=\"Access mail settings\"/>\n+ </td>\n+ </tr>\n </table>\n </form>\n-\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/optin-request.html patchwork/templates/patchwork/optin-request.html\nindex 90963e65..3384c462 100644\n--- patchwork/templates/patchwork/optin-request.html\n+++ patchwork/templates/patchwork/optin-request.html\n@@ -6,44 +6,50 @@\n {% block body %}\n {% if confirmation %}\n <p><strong>Opt-in confirmation email sent</strong></p>\n-<p>An opt-in confirmation mail has been sent to\n-<strong>{{confirmation.email}}</strong>, containing a link. Please click on\n-that link to confirm your opt-in.</p>\n+<p>\n+ An opt-in confirmation mail has been sent to\n+ <strong>{{ confirmation.email }}</strong>, containing a link. Please click on\n+ that link to confirm your opt-in.\n+</p>\n {% else %}\n {% if error %}\n-<p class=\"error\">{{error}}</p>\n+<p class=\"error\">{{ error }}</p>\n {% endif %}\n \n {% if form %}\n-<p>This form allows you to opt-in to automated email from Patchwork. Use\n-this if you have previously opted-out of Patchwork mail, but now want to\n-received notifications from Patchwork.</p>\n-When you submit it, an email will be sent to your address with a link to click\n-to finalise the opt-in. Patchwork does this to prevent someone opting you in\n-without your consent.</p>\n+<p>\n+ This form allows you to opt-in to automated email from Patchwork. Use\n+ this if you have previously opted-out of Patchwork mail, but now want to\n+ received notifications from Patchwork.\n+</p>\n+<p>\n+ When you submit it, an email will be sent to your address with a link to\n+ click to finalise the opt-in. Patchwork does this to prevent someone opting\n+ you in without your consent.\n+</p>\n+\n <form method=\"post\" action=\"\">\n-{% csrf_token %}\n-{{form.email.errors}}\n-<div style=\"padding: 0.5em 1em 2em;\">\n-{{form.email.label_tag}}: {{form.email}}\n-</div>\n-<input type=\"submit\" value=\"Send me an opt-in link\">\n+ {% csrf_token %}\n+ {{ form.email.errors }}\n+ <div style=\"padding: 0.5em 1em 2em;\">\n+ {{ form.email.label_tag }}: {{ form.email }}\n+ </div>\n+ <input type=\"submit\" value=\"Send me an opt-in link\">\n </form>\n {% endif %}\n \n {% if error and admins %}\n-<p>If you are having trouble opting in, please email\n+<p>\n+ If you are having trouble opting in, please email\n {% for admin in admins %}\n {% if admins|length > 1 and forloop.last %} or {% endif %}\n-{{admin.0}} <<a href=\"mailto:{{admin.1}}\">{{admin.1}}</a\n->>{% if admins|length > 2 and not forloop.last %}, {% endif %}\n+{{ admin.0 }} <<a href=\"mailto:{{ admin.1 }}\">{{ admin.1 }}</a>>{% if admins|length > 2 and not forloop.last %}, {% endif %}\n {% endfor %}\n+</p>\n {% endif %}\n {% endif %}\n \n {% if user.is_authenticated %}\n-<p>Return to your <a href=\"{% url 'user-profile' %}\">user\n-profile</a>.</p>\n+<p>Return to your <a href=\"{% url 'user-profile' %}\">user profile</a>.</p>\n {% endif %}\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/optin.html patchwork/templates/patchwork/optin.html\nindex 37a2198f..659bfccb 100644\n--- patchwork/templates/patchwork/optin.html\n+++ patchwork/templates/patchwork/optin.html\n@@ -4,15 +4,18 @@\n {% block heading %}Opt-in{% endblock %}\n \n {% block body %}\n-<p><strong>Opt-in complete</strong>. You have successfully opted back in to\n-automated email from this Patchwork system, using the address\n-<strong>{{email}}</strong>.</p>\n-<p>If you later decide that you no longer want to receive automated mail from\n-Patchwork, just visit <a href=\"{% url 'mail-settings' %}\"\n->http://{{site.domain}}{% url 'mail-settings' %}</a>, or\n-visit the main Patchwork page and navigate from there.</p>\n+<p>\n+ <strong>Opt-in complete</strong>. You have successfully opted back in to\n+ automated email from this Patchwork system, using the address\n+ <strong>{{ email }}</strong>.\n+</p>\n+<p>\n+ If you later decide that you no longer want to receive automated mail from\n+ Patchwork, just visit\n+ <a href=\"{% url 'mail-settings' %}\">http://{{ site.domain }}{% url 'mail-settings' %}</a>,\n+ or visit the main Patchwork page and navigate from there.\n+</p>\n {% if user.is_authenticated %}\n-<p>Return to your <a href=\"{% url 'user-profile' %}\">user\n-profile</a>.</p>\n+<p>Return to your <a href=\"{% url 'user-profile' %}\">user profile</a>.</p>\n {% endif %}\n {% endblock %}\ndiff --git patchwork/templates/patchwork/optout-request.html patchwork/templates/patchwork/optout-request.html\nindex 659af773..7396fd36 100644\n--- patchwork/templates/patchwork/optout-request.html\n+++ patchwork/templates/patchwork/optout-request.html\n@@ -6,45 +6,53 @@\n {% block body %}\n {% if confirmation %}\n <p><strong>Opt-out confirmation email sent</strong></p>\n-<p>An opt-out confirmation mail has been sent to\n-<strong>{{confirmation.email}}</strong>, containing a link. Please click on\n-that link to confirm your opt-out.</p>\n+<p>\n+ An opt-out confirmation mail has been sent to\n+ <strong>{{ confirmation.email }}</strong>, containing a link. Please click on\n+ that link to confirm your opt-out.\n+</p>\n {% else %}\n {% if error %}\n-<p class=\"error\">{{error}}</p>\n+<p class=\"error\">{{ error }}</p>\n {% endif %}\n \n {% if form %}\n-<p>This form allows you to opt-out of automated email from Patchwork.</p>\n-<p>If you opt-out of email, Patchwork may still email you if you do certain\n-actions yourself (such as create a new Patchwork account), but will not send\n-you unsolicited email.</p>\n-When you submit it, one email will be sent to your address with a link to click\n-to finalise the opt-out. Patchwork does this to prevent someone opting you out\n-without your consent.</p>\n+<p>\n+ This form allows you to opt-out of automated email from Patchwork.\n+</p>\n+<p>\n+ If you opt-out of email, Patchwork may still email you if you do certain\n+ actions yourself (such as create a new Patchwork account), but will not\n+ send you unsolicited email.\n+</p>\n+<p>\n+ When you submit it, one email will be sent to your address with a link to\n+ click to finalise the opt-out. Patchwork does this to prevent someone\n+ opting you out without your consent.\n+</p>\n <form method=\"post\" action=\"\">\n-{% csrf_token %}\n-{{form.email.errors}}\n-<div style=\"padding: 0.5em 1em 2em;\">\n-{{form.email.label_tag}}: {{form.email}}\n-</div>\n-<input type=\"submit\" value=\"Send me an opt-out link\">\n+ {% csrf_token %}\n+ {{ form.email.errors }}\n+ <div style=\"padding: 0.5em 1em 2em;\">\n+ {{ form.email.label_tag }}: {{ form.email }}\n+ </div>\n+ <input type=\"submit\" value=\"Send me an opt-out link\">\n </form>\n {% endif %}\n \n {% if error and admins %}\n-<p>If you are having trouble opting out, please email\n+<p>\n+ If you are having trouble opting out, please email\n {% for admin in admins %}\n {% if admins|length > 1 and forloop.last %} or {% endif %}\n-{{admin.0}} <<a href=\"mailto:{{admin.1}}\">{{admin.1}}</a\n->>{% if admins|length > 2 and not forloop.last %}, {% endif %}\n+{{ admin.0 }} <<a href=\"mailto:{{ admin.1 }}\">{{ admin.1 }}</a>>{% if admins|length > 2 and not forloop.last %}, {% endif %}\n {% endfor %}\n+</p>\n {% endif %}\n {% endif %}\n \n {% if user.is_authenticated %}\n-<p>Return to your <a href=\"{% url 'user-profile' %}\">user\n-profile</a>.</p>\n+<p>Return to your <a href=\"{% url 'user-profile' %}\">user profile</a>.</p>\n {% endif %}\n \n {% endblock %}\ndiff --git patchwork/templates/patchwork/optout.html patchwork/templates/patchwork/optout.html\nindex f3b75ce6..2d7e67e5 100644\n--- patchwork/templates/patchwork/optout.html\n+++ patchwork/templates/patchwork/optout.html\n@@ -4,18 +4,22 @@\n {% block heading %}Opt-out{% endblock %}\n \n {% block body %}\n-<p><strong>Opt-out complete</strong>. You have successfully opted-out of\n-automated notifications from this Patchwork system, from the address\n-<strong>{{email}}</strong></p>\n-<p>Please note that you may still receive email from other Patchwork setups at\n-different sites, as they are run independently. You may need to opt-out of\n-those separately.</p>\n-<p>If you later decide to receive mail from Patchwork, just visit\n-<a href=\"{% url 'mail-settings' %}\"\n->http://{{site.domain}}{% url 'mail-settings' %}</a>, or\n-visit the main Patchwork page and navigate from there.</p>\n+<p>\n+ <strong>Opt-out complete</strong>. You have successfully opted-out of\n+ automated notifications from this Patchwork system, from the address\n+ <strong>{{ email }}</strong>\n+</p>\n+<p>\n+ Please note that you may still receive email from other Patchwork setups at\n+ different sites, as they are run independently. You may need to opt-out of\n+ those separately.\n+</p>\n+<p>\n+ If you later decide to receive mail from Patchwork, just visit\n+ <a href=\"{% url 'mail-settings' %}\">http://{{ site.domain }}{% url 'mail-settings' %}</a>,\n+ or visit the main Patchwork page and navigate from there.\n+</p>\n {% if user.is_authenticated %}\n-<p>Return to your <a href=\"{% url 'user-profile' %}\">user\n-profile</a>.</p>\n+<p>Return to your <a href=\"{% url 'user-profile' %}\">user profile</a>.</p>\n {% endif %}\n {% endblock %}\ndiff --git patchwork/templates/patchwork/partials/download-buttons.html patchwork/templates/patchwork/partials/download-buttons.html\nindex e75a25ce..149bbc62 100644\n--- patchwork/templates/patchwork/partials/download-buttons.html\n+++ patchwork/templates/patchwork/partials/download-buttons.html\n@@ -1,23 +1,27 @@\n <div class=\"btn-group pull-right\">\n <button type=\"button\" class=\"btn btn-default btn-copy\"\n- data-clipboard-text=\"{{ submission.id }}\" title=\"Copy to Clipboard\">\n- {{ submission.id }}\n+ data-clipboard-text=\"{{ submission.id }}\" title=\"Copy to Clipboard\">\n+ {{ submission.id }}\n </button>\n- {% if submission.diff %}\n+{% if submission.diff %}\n <a href=\"{% url 'patch-raw' project_id=project.linkname msgid=submission.url_msgid %}\"\n- class=\"btn btn-default\" role=\"button\" title=\"Download patch diff\"\n- >diff</a>\n+ class=\"btn btn-default\" role=\"button\" title=\"Download patch diff\">\n+ diff\n+ </a>\n <a href=\"{% url 'patch-mbox' project_id=project.linkname msgid=submission.url_msgid %}\"\n- class=\"btn btn-default\" role=\"button\" title=\"Download patch mbox\"\n- >mbox</a>\n- {% else %}\n+ class=\"btn btn-default\" role=\"button\" title=\"Download patch mbox\">\n+ mbox\n+ </a>\n+{% else %}\n <a href=\"{% url 'cover-mbox' project_id=project.linkname msgid=submission.url_msgid %}\"\n- class=\"btn btn-default\" role=\"button\" title=\"Download cover mbox\"\n- >mbox</a>\n- {% endif %}\n- {% if submission.series %}\n+ class=\"btn btn-default\" role=\"button\" title=\"Download cover mbox\">\n+ mbox\n+ </a>\n+{% endif %}\n+{% if submission.series %}\n <a href=\"{% url 'series-mbox' series_id=submission.series.id %}\"\n- class=\"btn btn-default\" role=\"button\"\n- title=\"Download patch mbox with dependencies\">series</a>\n- {% endif %}\n+ class=\"btn btn-default\" role=\"button\" title=\"Download patch mbox with dependencies\">\n+ series\n+ </a>\n+{% endif %}\n </div>\ndiff --git patchwork/templates/patchwork/partials/filters.html patchwork/templates/patchwork/partials/filters.html\nindex e89c4d0f..1175af14 100644\n--- patchwork/templates/patchwork/partials/filters.html\n+++ patchwork/templates/patchwork/partials/filters.html\n@@ -80,45 +80,46 @@ $(document).ready(function() {\n </script>\n \n <div class=\"filters\">\n- <div id=\"filtersummary\">\n- <a href=\"javascript:filter_click()\">Show patches with</a>:\n- {% if filters.applied_filters %}\n- {% for filter in filters.applied_filters.values %}\n- {{ filter.name }} = <strong>{{ filter.condition }}</strong>\n- {% if not filter.forced %}\n- <a class=\"filter-action\"\n- href=\"{{ filter.url_without_me }}\"> <span\n- class=\"glyphicon glyphicon-minus-sign\"></span></a>\n- {% endif %}\n- {% if not forloop.last %} | {% endif %}\n- {% endfor %}\n- {% else %}\n- none <a class=\"filter-action\"\n- href=\"javascript:filter_click()\"><span\n- class=\"glyphicon glyphicon-plus-sign\"></span></a>\n- {% endif %}\n- {% with patch_count=page.paginator.count %}\n- | {{ patch_count }}\n- patch{{ patch_count | pluralize:\"es\" }}\n- {% endwith %}\n- </div>\n- <div id=\"filterform\" style=\"padding-top: 1em; display: none\">\n- <form class=\"form-horizontal\" method=\"get\">\n- {% for filter in filters.available_filters %}\n- {% if not filter.forced %}\n- <div class=\"form-group\">\n- <label class=\"col-sm-2 control-label\">{{ filter.name }}</label>\n- <div class=\"col-sm-5\">\n- {{ filter.form }}\n- </div>\n- </div>\n- {% endif %}\n- {% endfor %}\n- <div class=\"form-group\">\n- <div class=\"col-sm-offset-2 col-sm-5\">\n- <button type=\"submit\" class=\"btn btn-default\">Apply</button>\n- </div>\n- </div>\n- </form>\n- </div>\n+ <div id=\"filtersummary\">\n+ <a href=\"javascript:filter_click()\">Show patches with</a>:\n+{% if filters.applied_filters %}\n+{% for filter in filters.applied_filters.values %}\n+ {{ filter.name }} = <strong>{{ filter.condition }}</strong>\n+{% if not filter.forced %}\n+ <a class=\"filter-action\" href=\"{{ filter.url_without_me }}\">\n+ <span class=\"glyphicon glyphicon-minus-sign\"></span>\n+ </a>\n+{% endif %}\n+{% if not forloop.last %}\n+ | \n+{% endif %}\n+{% endfor %}\n+{% else %}\n+ none <a class=\"filter-action\" href=\"javascript:filter_click()\"><span class=\"glyphicon glyphicon-plus-sign\"></span></a>\n+{% endif %}\n+{% with patch_count=page.paginator.count %}\n+ | {{ patch_count }}\n+ patch{{ patch_count | pluralize:\"es\" }}\n+{% endwith %}\n+ </div>\n+\n+ <div id=\"filterform\" style=\"padding-top: 1em; display: none\">\n+ <form class=\"form-horizontal\" method=\"get\">\n+{% for filter in filters.available_filters %}\n+{% if not filter.forced %}\n+ <div class=\"form-group\">\n+ <label class=\"col-sm-2 control-label\">{{ filter.name }}</label>\n+ <div class=\"col-sm-5\">\n+ {{ filter.form }}\n+ </div>\n+ </div>\n+{% endif %}\n+{% endfor %}\n+ <div class=\"form-group\">\n+ <div class=\"col-sm-offset-2 col-sm-5\">\n+ <button type=\"submit\" class=\"btn btn-default\">Apply</button>\n+ </div>\n+ </div>\n+ </form>\n+ </div>\n </div>\ndiff --git patchwork/templates/patchwork/partials/pagination.html patchwork/templates/patchwork/partials/pagination.html\nindex ee4b555d..0767d385 100644\n--- patchwork/templates/patchwork/partials/pagination.html\n+++ patchwork/templates/patchwork/partials/pagination.html\n@@ -3,43 +3,41 @@\n {% if page.paginator.num_pages != 1 %}\n <div class=\"paginator\">\n {% if page.has_previous %}\n- <span class=\"prev\">\n- <a href=\"{% listurl page=page.previous_page_number %}\"\n- title=\"Previous Page\">«</a></span>\n+ <span class=\"prev\">\n+ <a href=\"{% listurl page=page.previous_page_number %}\" title=\"Previous Page\">«</a>\n+ </span>\n {% else %}\n- <span class=\"prev-na\">«</span>\n+ <span class=\"prev-na\">«</span>\n {% endif %}\n \n {% if page.paginator.trailing_set %}\n- {% for p in page.paginator.trailing_set %}\n- <span class=\"page\"><a href=\"{% listurl page=p %}\" >{{ p }}</a></span>\n- {% endfor %}\n- ...\n+{% for p in page.paginator.trailing_set %}\n+ <span class=\"page\"><a href=\"{% listurl page=p %}\" >{{ p }}</a></span>\n+{% endfor %}\n+ …\n {% endif %}\n \n {% for p in page.paginator.adjacent_set %}\n- {% if p == page.number %}\n- <span class=\"curr\" title=\"Current Page\">{{ p }}</span>\n- {% else %}\n- <span class=\"page\"><a href=\"{% listurl page=p %}\"\n- title=\"Page {{ p }}\">{{ p }}</a></span>\n- {% endif %}\n+{% if p == page.number %}\n+ <span class=\"curr\" title=\"Current Page\">{{ p }}</span>\n+{% else %}\n+ <span class=\"page\"><a href=\"{% listurl page=p %}\" title=\"Page {{ p }}\">{{ p }}</a></span>\n+{% endif %}\n {% endfor %}\n \n {% if page.paginator.leading_set %}\n- …\n- {% for p in page.paginator.leading_set %}\n- <span class=\"page\"><a href=\"{% listurl page=p %}\">{{ p }}</a></span>\n- {% endfor %}\n+ …\n+{% for p in page.paginator.leading_set %}\n+ <span class=\"page\"><a href=\"{% listurl page=p %}\">{{ p }}</a></span>\n+{% endfor %}\n {% endif %}\n \n {% if page.has_next %}\n- <span class=\"next\">\n- <a href=\"{% listurl page=page.next_page_number %}\"\n- title=\"Next Page\">»</a>\n+ <span class=\"next\">\n+ <a href=\"{% listurl page=page.next_page_number %}\" title=\"Next Page\">»</a>\n </span>\n {% else %}\n- <span class=\"next-na\">»</span>\n+ <span class=\"next-na\">»</span>\n {% endif %}\n </div>\n {% endif %}\ndiff --git patchwork/templates/patchwork/partials/patch-list.html patchwork/templates/patchwork/partials/patch-list.html\nindex 02d6dff8..93d1e867 100644\n--- patchwork/templates/patchwork/partials/patch-list.html\n+++ patchwork/templates/patchwork/partials/patch-list.html\n@@ -5,33 +5,30 @@\n {% load static %}\n \n {% include \"patchwork/partials/filters.html\" %}\n-\n {% include \"patchwork/partials/pagination.html\" %}\n \n {% if order.editable %}\n <table class=\"patchlist\">\n- <tr>\n- <td class=\"patchlistreorder\">\n- <form method=\"post\" id=\"reorderform\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"form\" value=\"reorderform\"/>\n- <input type=\"hidden\" name=\"order_start\" value=\"0\"/>\n- <span id=\"reorderhelp\"></span>\n- <input id=\"reorder-cancel\" type=\"button\" value=\"Cancel\"\n- onClick=\"order_cancel_click(this)\"/>\n- <input id=\"reorder-change\" type=\"button\" value=\"Change order\"\n- onClick=\"order_button_click(this)\"/>\n- </form>\n- </td>\n- </tr>\n+ <tr>\n+ <td class=\"patchlistreorder\">\n+ <form method=\"post\" id=\"reorderform\">\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"form\" value=\"reorderform\"/>\n+ <input type=\"hidden\" name=\"order_start\" value=\"0\"/>\n+ <span id=\"reorderhelp\"></span>\n+ <input id=\"reorder-cancel\" type=\"button\" value=\"Cancel\" onClick=\"order_cancel_click(this)\"/>\n+ <input id=\"reorder-change\" type=\"button\" value=\"Change order\" onClick=\"order_button_click(this)\"/>\n+ </form>\n+ </td>\n+ </tr>\n </table>\n {% endif %}\n \n {% if page.paginator.long_page and user.is_authenticated %}\n <div class=\"floaty\">\n- <a title=\"jump to form\" href=\"#patchforms\">\n- <span style=\"font-size: 120%\">▾</span>\n- </a>\n+ <a title=\"jump to form\" href=\"#patchforms\">\n+ <span style=\"font-size: 120%\">▾</span>\n+ </a>\n </div>\n {% endif %}\n \n@@ -51,252 +48,246 @@ $(document).ready(function() {\n </script>\n \n <form method=\"post\">\n-{% csrf_token %}\n-<input type=\"hidden\" name=\"form\" value=\"patchlistform\"/>\n-<input type=\"hidden\" name=\"project\" value=\"{{project.id}}\"/>\n-<table id=\"patchlist\" class=\"table table-hover table-extra-condensed table-striped pw-list\"\n- data-toggle=\"checkboxes\" data-range=\"true\">\n- <thead>\n- <tr>\n- {% if user.is_authenticated %}\n- <th style=\"text-align: center;\">\n- <input type=\"checkbox\" id=\"check-all\"/>\n- </th>\n- {% endif %}\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"form\" value=\"patchlistform\"/>\n+ <input type=\"hidden\" name=\"project\" value=\"{{project.id}}\"/>\n+ <table id=\"patchlist\" class=\"table table-hover table-extra-condensed table-striped pw-list\" data-toggle=\"checkboxes\" data-range=\"true\">\n+ <thead>\n+ <tr>\n+{% if user.is_authenticated %}\n+ <th style=\"text-align: center;\">\n+ <input type=\"checkbox\" id=\"check-all\"/>\n+ </th>\n+{% endif %}\n \n- {% if user.is_authenticated and user.profile.show_ids %}\n- <th>\n- ID\n- </th>\n- {% endif %}\n+{% if user.is_authenticated and user.profile.show_ids %}\n+ <th>\n+ ID\n+ </th>\n+{% endif %}\n \n- <th>\n- {% if order.name == \"name\" %}\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n- </a>\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- Patch\n- </a>\n- {% else %}\n- {% if not order.editable %}\n- <a class=\"colinactive\" href=\"{% listurl order=\"name\" %}\">Patch</a>\n- {% else %}\n- <span class=\"colinactive\">Patch</span>\n- {% endif %}\n- {% endif %}\n- </th>\n+ <th>\n+{% if order.name == \"name\" %}\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n+ </a>\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ Patch\n+ </a>\n+{% else %}\n+{% if not order.editable %}\n+ <a class=\"colinactive\" href=\"{% listurl order=\"name\" %}\">Patch</a>\n+{% else %}\n+ <span class=\"colinactive\">Patch</span>\n+{% endif %}\n+{% endif %}\n+ </th>\n \n- <th>\n- <span class=\"colinactive\">Series</span>\n- </th>\n+ <th>\n+ <span class=\"colinactive\">Series</span>\n+ </th>\n \n- <th>\n- {% project_tags %}\n- </th>\n+ <th>\n+ {% project_tags %}\n+ </th>\n \n- <th>\n- <span title=\"Success / Warning / Fail\">S/W/F</span>\n- </th>\n+ <th>\n+ <span title=\"Success / Warning / Fail\">S/W/F</span>\n+ </th>\n \n- <th>\n- {% if order.name == \"date\" %}\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n- </a>\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- Date\n- </a>\n- {% else %}\n- {% if not order.editable %}\n- <a class=\"colinactive\" href=\"{% listurl order=\"date\" %}\">Date</a>\n- {% else %}\n- <span class=\"colinactive\">Date</span>\n- {% endif %}\n- {% endif %}\n- </th>\n+ <th>\n+{% if order.name == \"date\" %}\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n+ </a>\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ Date\n+ </a>\n+{% else %}\n+{% if not order.editable %}\n+ <a class=\"colinactive\" href=\"{% listurl order=\"date\" %}\">Date</a>\n+{% else %}\n+ <span class=\"colinactive\">Date</span>\n+{% endif %}\n+{% endif %}\n+ </th>\n \n- <th>\n- {% if order.name == \"submitter\" %}\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n- </a>\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- Submitter\n- </a>\n- {% else %}\n- {% if not order.editable %}\n- <a class=\"colinactive\" href=\"{% listurl order=\"submitter\" %}\">\n- Submitter\n- </a>\n- {% else %}\n- <span class=\"colinactive\">Submitter</span>\n- {% endif %}\n- {% endif %}\n- </th>\n+ <th>\n+{% if order.name == \"submitter\" %}\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n+ </a>\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ Submitter\n+ </a>\n+{% else %}\n+{% if not order.editable %}\n+ <a class=\"colinactive\" href=\"{% listurl order=\"submitter\" %}\">\n+ Submitter\n+ </a>\n+{% else %}\n+ <span class=\"colinactive\">Submitter</span>\n+{% endif %}\n+{% endif %}\n+ </th>\n \n- <th>\n- {% if order.name == \"delegate\" %}\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n- </a>\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- Delegate\n- </a>\n- {% else %}\n- {% if not order.editable %}\n- <a class=\"colinactive\" href=\"{% listurl order=\"delegate\" %}\">Delegate</a>\n- {% else %}\n- <span class=\"colinactive\">Delegate</span>\n- {% endif %}\n- {% endif %}\n- </th>\n+ <th>\n+{% if order.name == \"delegate\" %}\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n+ </a>\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ Delegate\n+ </a>\n+{% else %}\n+{% if not order.editable %}\n+ <a class=\"colinactive\" href=\"{% listurl order=\"delegate\" %}\">Delegate</a>\n+{% else %}\n+ <span class=\"colinactive\">Delegate</span>\n+{% endif %}\n+{% endif %}\n+ </th>\n \n- <th>\n- {% if order.name == \"state\" %}\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n- </a>\n- <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n- State\n- </a>\n- {% else %}\n- {% if not order.editable %}\n- <a class=\"colinactive\" href=\"{% listurl order=\"state\" %}\">State</a>\n- {% else %}\n- <span class=\"colinactive\">State</span>\n- {% endif %}\n- {% endif %}\n- </th>\n+ <th>\n+{% if order.name == \"state\" %}\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ <span class=\"glyphicon glyphicon-chevron-{{ order.updown }}\"></span>\n+ </a>\n+ <a class=\"colactive\" href=\"{% listurl order=order.reversed_name %}\">\n+ State\n+ </a>\n+{% else %}\n+{% if not order.editable %}\n+ <a class=\"colinactive\" href=\"{% listurl order=\"state\" %}\">State</a>\n+{% else %}\n+ <span class=\"colinactive\">State</span>\n+{% endif %}\n+{% endif %}\n+ </th>\n \n- </tr>\n- </thead>\n+ </tr>\n+ </thead>\n \n- <tbody>\n- {% for patch in page.object_list %}\n- <tr id=\"patch_row:{{patch.id}}\">\n- {% if user.is_authenticated %}\n- <td style=\"text-align: center;\">\n- <input type=\"checkbox\" name=\"patch_id:{{patch.id}}\"/>\n- </td>\n- {% endif %}\n- {% if user.is_authenticated and user.profile.show_ids %}\n- <td>\n- <button type=\"button\" class=\"btn btn-xs btn-copy\"\n- data-clipboard-text=\"{{ patch.id }}\" title=\"Copy to Clipboard\">\n- {{ patch.id }}\n- </button>\n- </td>\n- {% endif %}\n- <td>\n- <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=patch.url_msgid %}\">\n- {{ patch.name|default:\"[no subject]\"|truncatechars:100 }}\n- </a>\n- </td>\n- <td>\n- {% if patch.series %}\n- <a href=\"?series={{patch.series.id}}\">\n- {{ patch.series|truncatechars:100 }}\n- </a>\n- {% endif %}\n- </td>\n- <td class=\"text-nowrap\">{{ patch|patch_tags }}</td>\n- <td class=\"text-nowrap\">{{ patch|patch_checks }}</td>\n- <td class=\"text-nowrap\">{{ patch.date|date:\"Y-m-d\" }}</td>\n- <td>{{ patch.submitter|personify:project }}</td>\n- <td>{{ patch.delegate.username }}</td>\n- <td>{{ patch.state }}</td>\n- </tr>\n- {% empty %}\n- <tr>\n- <td colspan=\"8\">No patches to display</td>\n- </tr>\n- {% endfor %}\n- </tbody>\n-</table>\n+ <tbody>\n+{% for patch in page.object_list %}\n+ <tr id=\"patch_row:{{patch.id}}\">\n+{% if user.is_authenticated %}\n+ <td style=\"text-align: center;\">\n+ <input type=\"checkbox\" name=\"patch_id:{{patch.id}}\"/>\n+ </td>\n+{% endif %}\n+{% if user.is_authenticated and user.profile.show_ids %}\n+ <td>\n+ <button type=\"button\" class=\"btn btn-xs btn-copy\" data-clipboard-text=\"{{ patch.id }}\" title=\"Copy to Clipboard\">\n+ {{ patch.id }}\n+ </button>\n+ </td>\n+{% endif %}\n+ <td>\n+ <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=patch.url_msgid %}\">\n+ {{ patch.name|default:\"[no subject]\"|truncatechars:100 }}\n+ </a>\n+ </td>\n+ <td>\n+{% if patch.series %}\n+ <a href=\"?series={{patch.series.id}}\">\n+ {{ patch.series|truncatechars:100 }}\n+ </a>\n+{% endif %}\n+ </td>\n+ <td class=\"text-nowrap\">{{ patch|patch_tags }}</td>\n+ <td class=\"text-nowrap\">{{ patch|patch_checks }}</td>\n+ <td class=\"text-nowrap\">{{ patch.date|date:\"Y-m-d\" }}</td>\n+ <td>{{ patch.submitter|personify:project }}</td>\n+ <td>{{ patch.delegate.username }}</td>\n+ <td>{{ patch.state }}</td>\n+ </tr>\n+{% empty %}\n+ <tr>\n+ <td colspan=\"8\">No patches to display</td>\n+ </tr>\n+{% endfor %}\n+ </tbody>\n+ </table>\n \n {% if page.paginator.count %}\n {% include \"patchwork/partials/pagination.html\" %}\n \n-<div class=\"patchforms\" id=\"patchforms\">\n+ <div class=\"patchforms\" id=\"patchforms\">\n \n {% if patchform %}\n- <div class=\"patchform patchform-properties\">\n- <h3>Properties</h3>\n- <table class=\"form\">\n- <tr>\n- <th>Change state:</th>\n- <td>\n- {{ patchform.state }}\n- {{ patchform.state.errors }}\n- </td>\n- </tr>\n- <tr>\n- <th>Delegate to:</th>\n- <td>\n- {{ patchform.delegate }}\n- {{ patchform.delegate.errors }}\n- </td>\n- </tr>\n- <tr>\n- <th>Archive:</th>\n- <td>\n- {{ patchform.archived }}\n- {{ patchform.archived.errors }}\n- </td>\n- </tr>\n- <tr>\n- <td></td>\n- <td>\n- <input type=\"submit\" name=\"action\" value=\"{{patchform.action}}\"/>\n- </td>\n- </tr>\n- </table>\n- </div>\n-\n+ <div class=\"patchform patchform-properties\">\n+ <h3>Properties</h3>\n+ <table class=\"form\">\n+ <tr>\n+ <th>Change state:</th>\n+ <td>\n+ {{ patchform.state }}\n+ {{ patchform.state.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <th>Delegate to:</th>\n+ <td>\n+ {{ patchform.delegate }}\n+ {{ patchform.delegate.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <th>Archive:</th>\n+ <td>\n+ {{ patchform.archived }}\n+ {{ patchform.archived.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <td></td>\n+ <td>\n+ <input type=\"submit\" name=\"action\" value=\"{{patchform.action}}\"/>\n+ </td>\n+ </tr>\n+ </table>\n+ </div>\n {% endif %}\n \n {% if user.is_authenticated %}\n- <div class=\"patchform patchform-bundle\">\n- <h3>Bundling</h3>\n- <table class=\"form\">\n- <tr>\n- <td>Create bundle:</td>\n- <td>\n- <input type=\"text\" name=\"bundle_name\"/>\n- <input name=\"action\" value=\"Create\" type=\"submit\"/>\n- </td>\n- </tr>\n- {% if bundles %}\n- <tr>\n- <td>Add to bundle:</td>\n- <td>\n- <select name=\"bundle_id\">\n- {% for bundle in bundles %}\n- <option value=\"{{bundle.id}}\">{{bundle.name}}</option>\n- {% endfor %}\n- </select>\n- <input name=\"action\" value=\"Add\" type=\"submit\"/>\n- </td>\n- </tr>\n- {% endif %}\n- {% if bundle %}\n- <tr>\n- <td>Remove from bundle:</td>\n- <td>\n- <input type=\"hidden\" name=\"removed_bundle_id\" value=\"{{bundle.id}}\"/>\n- <input name=\"action\" value=\"Remove\" type=\"submit\"/>\n- </td>\n- </tr>\n- {% endif %}\n- </table>\n- </div>\n+ <div class=\"patchform patchform-bundle\">\n+ <h3>Bundling</h3>\n+ <table class=\"form\">\n+ <tr>\n+ <td>Create bundle:</td>\n+ <td>\n+ <input type=\"text\" name=\"bundle_name\"/>\n+ <input name=\"action\" value=\"Create\" type=\"submit\"/>\n+ </td>\n+ </tr>\n+{% if bundles %}\n+ <tr>\n+ <td>Add to bundle:</td>\n+ <td>\n+ <select name=\"bundle_id\">\n+{% for bundle in bundles %}\n+ <option value=\"{{bundle.id}}\">{{bundle.name}}</option>\n+{% endfor %}\n+ </select>\n+ <input name=\"action\" value=\"Add\" type=\"submit\"/>\n+ </td>\n+ </tr>\n {% endif %}\n-\n- <div style=\"clear: both;\">\n- </div>\n-</div>\n-\n+{% if bundle %}\n+ <tr>\n+ <td>Remove from bundle:</td>\n+ <td>\n+ <input type=\"hidden\" name=\"removed_bundle_id\" value=\"{{bundle.id}}\"/>\n+ <input name=\"action\" value=\"Remove\" type=\"submit\"/>\n+ </td>\n+ </tr>\n+{% endif %}\n+ </table>\n+ </div>\n+{% endif %}\n+ <div style=\"clear: both;\">\n+ </div>\n+ </div>\n {% endif %}\n-\n </form>\ndiff --git patchwork/templates/patchwork/profile.html patchwork/templates/patchwork/profile.html\nindex 4a4b5582..552dde47 100644\n--- patchwork/templates/patchwork/profile.html\n+++ patchwork/templates/patchwork/profile.html\n@@ -6,169 +6,168 @@\n {% block body %}\n <h1>Your Profile</h1>\n \n-<p>\n {% if user.profile.maintainer_projects.count %}\n-Maintainer of\n+<p>\n+ Maintainer of\n {% for project in user.profile.maintainer_projects.all %}\n-<a href=\"{% url 'patch-list' project_id=project.linkname %}\"\n->{{ project.linkname }}</a>{% if not forloop.last %},{% endif %}{% endfor %}.\n+ <a href=\"{% url 'patch-list' project_id=project.linkname %}\">{{ project.linkname }}</a>{% if not forloop.last %},{% endif %}\n+{% endfor %}.\n+</p>\n {% endif %}\n \n {% if user.profile.contributor_projects.count %}\n-Contributor to\n+<p>\n+ Contributor to\n {% for project in user.profile.contributor_projects.all %}\n-<a href=\"{% url 'patch-list' project_id=project.linkname %}\"\n->{{ project.linkname }}</a>{% if not forloop.last %},{% endif %}{% endfor %}.\n-{% endif %}\n+ <a href=\"{% url 'patch-list' project_id=project.linkname %}\">{{ project.linkname }}</a>{% if not forloop.last %},{% endif %}\n+{% endfor %}.\n </p>\n+{% endif %}\n \n <div class=\"leftcol\">\n-<div class=\"box\">\n- <h2>Todo</h2>\n+ <div class=\"box\">\n+ <h2>Todo</h2>\n+ <p>\n+ Your <a href=\"{% url 'user-todos' %}\">todo list</a> contains patches that\n+ have been delegated to you.\n {% if user.profile.n_todo_patches %}\n- <p>Your <a href=\"{% url 'user-todos' %}\">todo\n- list</a> contains {{ user.profile.n_todo_patches }}\n- patch{{ user.profile.n_todo_patches|pluralize:\"es\" }}.</p>\n+ Your have {{ user.profile.n_todo_patches }}\n+ patch{{ user.profile.n_todo_patches|pluralize:\"es\" }} in your todo list.\n {% else %}\n- <p>Your todo list contains patches that have been delegated to you. You\n- have no items in your todo list at present.</p>\n+ You have no patches in your todo list at present.\n {% endif %}\n-</div>\n-\n-<div class=\"box\">\n-<h2>Linked email addresses</h2>\n-<p>The following email addresses are associated with this Patchwork account.\n-Adding alternative addresses allows Patchwork to group contributions that\n-you have made under different addresses.</p>\n-<p>The \"notify?\" column allows you to opt-in or -out of automated\n-Patchwork notification emails. Setting it to \"no\" will disable automated\n-notifications for that address.</p>\n-<p>Adding a new email address will send a confirmation email to that\n-address.</p>\n-<table class=\"vertical\">\n- <tr>\n- <th>email</th>\n- <th>action</th>\n- <th>notify?</th>\n- </tr>\n+ </p>\n+ </div>\n+\n+ <div class=\"box\">\n+ <h2>Linked email addresses</h2>\n+ <p>\n+ The following email addresses are associated with this Patchwork account.\n+ Adding alternative addresses allows Patchwork to group contributions that\n+ you have made under different addresses.\n+ </p>\n+ <p>\n+ The \"notify?\" column allows you to opt-in or opt-out of automated\n+ Patchwork notification emails. Setting it to \"no\" will disable automated\n+ notifications for that address.\n+ </p>\n+ <p>\n+ Adding a new email address will send a confirmation email to that address.\n+ </p>\n+ <table class=\"vertical\">\n+ <tr>\n+ <th>email</th>\n+ <th>action</th>\n+ <th>notify?</th>\n+ </tr>\n {% for email in linked_emails %}\n- <tr>\n- <td>{{ email.email }}</td>\n- <td>\n- {% if user.email != email.email %}\n- <form action=\"{% url 'user-unlink' person_id=email.id %}\"\n- method=\"post\">\n- {% csrf_token %}\n- <input type=\"submit\" value=\"Unlink\"/>\n- </form>\n- {% endif %}\n- </td>\n- <td>\n- {% if email.is_optout %}\n- <form method=\"post\" action=\"{% url 'mail-optin' %}\">\n- No,\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"email\" value=\"{{email.email}}\"/>\n- <input type=\"submit\" value=\"Opt-in\"/>\n- </form>\n- {% else %}\n- <form method=\"post\" action=\"{% url 'mail-optout' %}\">\n- Yes,\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"email\" value=\"{{email.email}}\"/>\n- <input type=\"submit\" value=\"Opt-out\"/>\n- </form>\n- {% endif %}\n- </td>\n- </tr>\n+ <tr>\n+ <td>{{ email.email }}</td>\n+ <td>\n+{% if user.email != email.email %}\n+ <form action=\"{% url 'user-unlink' person_id=email.id %}\" method=\"post\">\n+ {% csrf_token %}\n+ <input type=\"submit\" value=\"Unlink\"/>\n+ </form>\n+{% endif %}\n+ </td>\n+ <td>\n+{% if email.is_optout %}\n+ <form method=\"post\" action=\"{% url 'mail-optin' %}\">\n+ {% csrf_token %}\n+ No,\n+ <input type=\"hidden\" name=\"email\" value=\"{{ email.email }}\"/>\n+ <input type=\"submit\" value=\"Opt-in\"/>\n+ </form>\n+{% else %}\n+ <form method=\"post\" action=\"{% url 'mail-optout' %}\">\n+ {% csrf_token %}\n+ Yes,\n+ <input type=\"hidden\" name=\"email\" value=\"{{ email.email }}\"/>\n+ <input type=\"submit\" value=\"Opt-out\"/>\n+ </form>\n+{% endif %}\n+ </td>\n+ </tr>\n {% endfor %}\n- <tr>\n- <td colspan=\"3\">\n- <form action=\"{% url 'user-link' %}\" method=\"post\">\n- {% csrf_token %}\n- {{ linkform.email }}\n- <input type=\"submit\" value=\"Add\"/>\n- </form>\n- </td>\n- </tr>\n-</table>\n-</div>\n+ <tr>\n+ <td colspan=\"3\">\n+ <form action=\"{% url 'user-link' %}\" method=\"post\">\n+ {% csrf_token %}\n+ {{ linkform.email }}\n+ <input type=\"submit\" value=\"Add\"/>\n+ </form>\n+ </td>\n+ </tr>\n+ </table>\n+ </div>\n </div>\n \n <div class=\"rightcol\">\n-\n-<div class=\"box\">\n-<h2>Bundles</h2>\n-\n+ <div class=\"box\">\n+ <h2>Bundles</h2>\n {% if bundles %}\n-<p>You have the following bundle{{ bundles|length|pluralize }}:</p>\n-<ul>\n+ <p>You have the following bundle{{ bundles|length|pluralize }}:</p>\n+ <ul>\n {% for bundle in bundles %}\n- <li><a href=\"{{ bundle.get_absolute_url }}\">{{ bundle.name }}</a></li>\n+ <li><a href=\"{{ bundle.get_absolute_url }}\">{{ bundle.name }}</a></li>\n {% endfor %}\n-</ul>\n-<p>Visit the <a href=\"{%url 'user-bundles' %}\">bundles\n- page</a> to manage your bundles.</p>\n+ </ul>\n+ <p>Visit the <a href=\"{%url 'user-bundles' %}\">bundles page</a> to manage your bundles.</p>\n {% else %}\n-<p>You have no bundles.</p>\n+ <p>You have no bundles.</p>\n {% endif %}\n-</div>\n-\n-\n-<div class=\"box\">\n-<h2>Settings</h2>\n-\n-<form method=\"post\">\n- {% csrf_token %}\n- <table class=\"form\">\n-{{ profileform }}\n- <tr>\n- <td></td>\n- <td>\n- <input type=\"submit\" value=\"Apply\"/>\n- </td>\n- </tr>\n- </table>\n-</form>\n-</div>\n+ </div>\n+\n+ <div class=\"box\">\n+ <h2>Settings</h2>\n+\n+ <form method=\"post\">\n+ {% csrf_token %}\n+ <table class=\"form\">\n+ {{ profileform }}\n+ <tr>\n+ <td></td>\n+ <td><input type=\"submit\" value=\"Apply\"/></td>\n+ </tr>\n+ </table>\n+ </form>\n+ </div>\n \n-<div class=\"box\">\n-<h2>Authentication</h2>\n+ <div class=\"box\">\n+ <h2>Authentication</h2>\n \n-<table class=\"form\">\n- <tr>\n- <th>Password:</th>\n- <td><a href=\"{% url 'password_change' %}\">Change password</a>\n- </tr>\n+ <table class=\"form\">\n+ <tr>\n+ <th>Password:</th>\n+ <td><a href=\"{% url 'password_change' %}\">Change password</a>\n+ </tr>\n {% if rest_api_enabled %}\n- <tr>\n- <th>API Token:</th>\n- <td>\n- {% if api_token %}\n- <input id=\"token\" style=\"width: 25em;\" readonly value=\"{{ api_token }}\">\n- <button type=\"button\" class=\"btn-copy\" title=\"Copy to clipboard\"\n- data-clipboard-target=\"#token\">Copy</button>\n- {% endif %}\n- </td>\n- <tr>\n- <th></th>\n- <td>\n- <form method=\"post\" action=\"{% url 'generate_token' %}\">\n- {% csrf_token %}\n- {% if api_token %}\n- <input type=\"submit\" value=\"Regenerate token\"/>\n- {% else %}\n- <input type=\"submit\" value=\"Generate token\"/>\n- {% endif %}\n- </form>\n- </td>\n- </tr>\n+ <tr>\n+ <th>API Token:</th>\n+ <td>\n+{% if api_token %}\n+ <input id=\"token\" style=\"width: 25em;\" readonly value=\"{{ api_token }}\">\n+ <button type=\"button\" class=\"btn-copy\" title=\"Copy to clipboard\" data-clipboard-target=\"#token\">Copy</button>\n {% endif %}\n-</table>\n-</div>\n-\n+ </td>\n+ <tr>\n+ <th></th>\n+ <td>\n+ <form method=\"post\" action=\"{% url 'generate_token' %}\">\n+ {% csrf_token %}\n+{% if api_token %}\n+ <input type=\"submit\" value=\"Regenerate token\"/>\n+{% else %}\n+ <input type=\"submit\" value=\"Generate token\"/>\n+{% endif %}\n+ </form>\n+ </td>\n+ </tr>\n+{% endif %}\n+ </table>\n+ </div>\n </div>\n \n <p style=\"clear: both\"></p>\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/project.html patchwork/templates/patchwork/project.html\nindex bd9d20e2..cad372f7 100644\n--- patchwork/templates/patchwork/project.html\n+++ patchwork/templates/patchwork/project.html\n@@ -4,70 +4,76 @@\n {% block info_active %}active{% endblock %}\n \n {% block body %}\n-<h1>About {{project.name}}</h1>\n+<h1>About {{ project.name }}</h1>\n \n <table class=\"horizontal\">\n- <tr>\n- <th>Name</th>\n- <td>{{project.name}}\n- </tr>\n- <tr>\n- <th>List address</th>\n- <td>{{project.listemail}}</td>\n- </tr>\n+ <tr>\n+ <th>Name</th>\n+ <td>{{ project.name }}\n+ </tr>\n+ <tr>\n+ <th>List address</th>\n+ <td>{{ project.listemail }}</td>\n+ </tr>\n {% if project.list_archive_url %}\n- <tr>\n- <th>List archive</th>\n- <td><a href=\"{{ project.list_archive_url }}\">{{ project.list_archive_url }}</a></td>\n- </tr>\n+ <tr>\n+ <th>List archive</th>\n+ <td><a href=\"{{ project.list_archive_url }}\">{{ project.list_archive_url }}</a></td>\n+ </tr>\n {% endif %}\n- <tr>\n- <th>Maintainer{{maintainers|length|pluralize}}</th>\n- <td>\n- {% for maintainer in maintainers %}\n- {{ maintainer.profile.name }}\n- <<a href=\"mailto:{{maintainer.email}}\">{{maintainer.email}}</a>>\n- <br />\n- {% endfor %}\n- </td>\n- </tr>\n- <tr>\n- <th>Patches </th>\n- <td>{{n_patches}} (+ {{n_archived_patches}} archived)</td>\n- </tr>\n+ <tr>\n+ <th>Maintainer{{ maintainers|length|pluralize }}</th>\n+ <td>\n+ {% for maintainer in maintainers %}\n+ {{ maintainer.profile.name }}\n+ <<a href=\"mailto:{{ maintainer.email }}\">{{ maintainer.email }}</a>>\n+ <br />\n+ {% endfor %}\n+ </td>\n+ </tr>\n+ <tr>\n+ <th>Patches </th>\n+ <td>{{ n_patches }} (+ {{ n_archived_patches }} archived)</td>\n+ </tr>\n {% if project.web_url %}\n- <tr>\n- <th>Website</th>\n- <td><a href=\"{{project.web_url}}\">{{project.web_url}}</a></td>\n- </tr>\n+ <tr>\n+ <th>Website</th>\n+ <td><a href=\"{{ project.web_url }}\">{{ project.web_url }}</a></td>\n+ </tr>\n {% endif %}\n {% if project.webscm_url %}\n- <tr>\n- <th>Source Code Web Interface</th>\n- <td><a href=\"{{project.webscm_url}}\">{{project.webscm_url}}</a></td>\n- </tr>\n+ <tr>\n+ <th>Source Code Web Interface</th>\n+ <td><a href=\"{{ project.webscm_url }}\">{{ project.webscm_url }}</a></td>\n+ </tr>\n {% endif %}\n {% if project.scm_url %}\n- <tr>\n- <th>Source Code Manager URL</th>\n- <td><a href=\"{{project.scm_url}}\">{{project.scm_url}}</a></td>\n- </tr>\n+ <tr>\n+ <th>Source Code Manager URL</th>\n+ <td><a href=\"{{ project.scm_url }}\">{{ project.scm_url }}</a></td>\n+ </tr>\n {% endif %}\n </table>\n \n {% if enable_xmlrpc %}\n <h2>pwclient</h2>\n \n-<p><code>pwclient</code> is the command-line client for Patchwork. Currently,\n-it provides access to some read-only features of Patchwork, such as downloading\n-and applying patches.</p>\n+<p>\n+ <code>pwclient</code> is the command-line client for Patchwork. Currently,\n+ it provides access to some read-only features of Patchwork, such as\n+ downloading and applying patches.\n+</p>\n \n <p>To use pwclient, you will need:</p>\n <ul>\n- <li>The <a href=\"https://github.com/getpatchwork/pwclient\">pwclient</a> program</li>\n- <li>(optional) A <code><a href=\"{% url 'pwclientrc' project.linkname %}\"\n- >.pwclientrc</a></code> file for this project, which should be stored in your\n- home directory.</li>\n+ <li>\n+ The <a href=\"https://github.com/getpatchwork/pwclient\">pwclient</a>\n+ program.\n+ </li>\n+ <li>\n+ (Optional) A <code><a href=\"{% url 'pwclientrc' project.linkname %}\">.pwclientrc</a></code>\n+ file for this project, which should be stored in your home directory.\n+ </li>\n </ul>\n {% endif %}\n {% endblock %}\ndiff --git patchwork/templates/patchwork/projects.html patchwork/templates/patchwork/projects.html\nindex 9ce1918c..16b1bc5d 100644\n--- patchwork/templates/patchwork/projects.html\n+++ patchwork/templates/patchwork/projects.html\n@@ -9,19 +9,19 @@\n <div class=\"col-sm-6 col-md-4\">\n <div class=\"thumbnail\">\n <div class=\"caption\">\n- <h3>{{p.name}}</h3>\n+ <h3>{{ p.name }}</h3>\n <p class=\"core-info\">\n- <span>\n- <a href=\"{% url 'patch-list' project_id=p.linkname %}\">\n- View patches\n- </a>\n- </span>\n+ <span>\n+ <a href=\"{% url 'patch-list' project_id=p.linkname %}\">\n+ View patches\n+ </a>\n+ </span>\n </p>\n {% if p.web_url %}\n- <p><a href=\"{{p.web_url}}\">{{p.web_url}}</a></p>\n+ <p><a href=\"{{ p.web_url }}\">{{ p.web_url }}</a></p>\n {% endif %}\n {% if p.webscm_url %}\n- <p><a href=\"{{p.webscm_url}}\">{{p.webscm_url}}</a></p>\n+ <p><a href=\"{{ p.webscm_url }}\">{{ p.webscm_url }}</a></p>\n {% endif %}\n </div>\n </div>\ndiff --git patchwork/templates/patchwork/registration-confirm.html patchwork/templates/patchwork/registration-confirm.html\nindex 3832139c..e9219a5a 100644\n--- patchwork/templates/patchwork/registration-confirm.html\n+++ patchwork/templates/patchwork/registration-confirm.html\n@@ -6,8 +6,9 @@\n {% block body %}\n <p>Registration confirmed!</p>\n \n-<p>Your Patchwork registration is complete. Head over to your <a\n- href=\"{% url 'user-profile' %}\">profile</a> to start using\n-Patchwork's extra features.</p>\n-\n+<p>\n+ Your Patchwork registration is complete. Head over to your\n+ <a href=\"{% url 'user-profile' %}\">profile</a> to start using\n+ Patchwork's extra features.\n+</p>\n {% endblock %}\ndiff --git patchwork/templates/patchwork/registration.html patchwork/templates/patchwork/registration.html\nindex 5280b660..8e2a3511 100644\n--- patchwork/templates/patchwork/registration.html\n+++ patchwork/templates/patchwork/registration.html\n@@ -4,116 +4,110 @@\n {% block heading %}Registration{% endblock %}\n \n {% block body %}\n-\n {% if confirmation and not error %}\n- <p>Registration successful!</p>\n- <p>A confirmation email has been sent to {{ confirmation.email }}. You'll\n- need to visit the link provided in that email to confirm your\n- registration.</p>\n+<p>\n+ Registration successful!\n+</p>\n+<p>\n+ A confirmation email has been sent to {{ confirmation.email }}.\n+ You'll need to visit the link provided in that email to confirm your\n+ registration.\n </p>\n {% else %}\n <p>By creating a Patchwork account, you can:<p>\n <ul>\n- <li>create \"bundles\" of patches</li>\n- <li>update the state of your own patches</li>\n+ <li>create \"bundles\" of patches</li>\n+ <li>update the state of your own patches</li>\n </ul>\n <form method=\"post\">\n-{% csrf_token %}\n-<table class=\"form registerform\">\n- <tr>\n- <th colspan=\"2\" class=\"headerrow\">register</th>\n- </tr>\n- {% if error %}\n- <tr>\n- <td colspan=\"2\">{{ error }}</td>\n- </tr>\n- {% endif %}\n-\n- <tr>\n- <td>{{ form.first_name.label_tag }}</td>\n- <td>\n+ {% csrf_token %}\n+ <table class=\"form registerform\">\n+ <tr>\n+ <th colspan=\"2\" class=\"headerrow\">register</th>\n+ </tr>\n+{% if error %}\n+ <tr>\n+ <td colspan=\"2\">{{ error }}</td>\n+ </tr>\n+{% endif %}\n+ <tr>\n+ <td>{{ form.first_name.label_tag }}</td>\n+ <td>\n {% if form.first_name.errors %}\n- {{ form.first_name.errors }}\n+ {{ form.first_name.errors }}\n {% endif %}\n- {{ form.first_name }}\n+ {{ form.first_name }}\n {% if form.first_name.help_text %}\n- <div class=\"help_text\"/>{{ form.first_name.help_text }}</div>\n+ <div class=\"help_text\"/>{{ form.first_name.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n-\n- <tr>\n- <td>{{ form.last_name.label_tag }}</td>\n- <td>\n+ </td>\n+ </tr>\n+ <tr>\n+ <td>{{ form.last_name.label_tag }}</td>\n+ <td>\n {% if form.last_name.errors %}\n- {{ form.last_name.errors }}\n+ {{ form.last_name.errors }}\n {% endif %}\n- {{ form.last_name }}\n+ {{ form.last_name }}\n {% if form.last_name.help_text %}\n- <div class=\"help_text\"/>{{ form.last_name.help_text }}</div>\n+ <div class=\"help_text\"/>{{ form.last_name.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n-\n- <tr>\n- <td></td>\n- <td class=\"form-help\">\n- Your name is used to identify you on the site\n- </td>\n- </tr>\n-\n- <tr>\n- <td>{{ form.email.label_tag }}</td>\n- <td>\n+ </td>\n+ </tr>\n+ <tr>\n+ <td></td>\n+ <td class=\"form-help\">\n+ Your name is used to identify you on the site\n+ </td>\n+ </tr>\n+ <tr>\n+ <td>{{ form.email.label_tag }}</td>\n+ <td>\n {% if form.email.errors %}\n- {{ form.email.errors }}\n+ {{ form.email.errors }}\n {% endif %}\n- {{ form.email }}\n+ {{ form.email }}\n {% if form.email.help_text %}\n- <div class=\"help_text\"/>{{ form.email.help_text }}</div>\n+ <div class=\"help_text\"/>{{ form.email.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n-\n- <tr>\n- <td></td>\n- <td class=\"form-help\">\n- Patchwork will send a confirmation email to this address\n- </td>\n- </tr>\n-\n- <tr>\n- <td>{{ form.username.label_tag }}</td>\n- <td>\n+ </td>\n+ </tr>\n+ <tr>\n+ <td></td>\n+ <td class=\"form-help\">\n+ Patchwork will send a confirmation email to this address\n+ </td>\n+ </tr>\n+ <tr>\n+ <td>{{ form.username.label_tag }}</td>\n+ <td>\n {% if form.username.errors %}\n- {{ form.username.errors }}\n+ {{ form.username.errors }}\n {% endif %}\n- {{ form.username }}\n+ {{ form.username }}\n {% if form.username.help_text %}\n- <div class=\"help_text\"/>{{ form.username.help_text }}</div>\n+ <div class=\"help_text\"/>{{ form.username.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n-\n- <tr>\n- <td>{{ form.password.label_tag }}</td>\n- <td>\n+ </td>\n+ </tr>\n+ <tr>\n+ <td>{{ form.password.label_tag }}</td>\n+ <td>\n {% if form.password.errors %}\n- {{ form.password.errors }}\n+ {{ form.password.errors }}\n {% endif %}\n- {{ form.password }}\n+ {{ form.password }}\n {% if form.password.help_text %}\n- <div class=\"help_text\"/>{{ form.password.help_text }}</div>\n+ <div class=\"help_text\"/>{{ form.password.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n-\n- <tr>\n- <td colspan=\"2\" class=\"submitrow\">\n- <input type=\"submit\" value=\"Register\"/>\n- </td>\n- </tr>\n-</table>\n+ </td>\n+ </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"submitrow\">\n+ <input type=\"submit\" value=\"Register\"/>\n+ </td>\n+ </tr>\n+ </table>\n </form>\n {% endif %}\n {% endblock %}\ndiff --git patchwork/templates/patchwork/submission.html patchwork/templates/patchwork/submission.html\nindex 978559b8..03a3ae58 100644\n--- patchwork/templates/patchwork/submission.html\n+++ patchwork/templates/patchwork/submission.html\n@@ -5,7 +5,7 @@\n {% load person %}\n {% load patch %}\n \n-{% block title %}{{submission.name}}{% endblock %}\n+{% block title %}{{ submission.name }}{% endblock %}\n \n {% block body %}\n <script>\n@@ -33,241 +33,244 @@ function toggle_div(link_id, headers_id, label_show, label_hide)\n </div>\n \n <table class=\"patchmeta\">\n- <tr>\n- <th>Message ID</th>\n- {% if submission.list_archive_url %}\n- <td>{{ submission.url_msgid }} (<a href=\"{{ submission.list_archive_url }}\">mailing list archive</a>)</td>\n- {% else %}\n- <td>{{ submission.url_msgid }}</td>\n- {% endif %}\n- </tr>\n+ <tr>\n+ <th>Message ID</th>\n+ {% if submission.list_archive_url %}\n+ <td>{{ submission.url_msgid }} (<a href=\"{{ submission.list_archive_url }}\">mailing list archive</a>)</td>\n+ {% else %}\n+ <td>{{ submission.url_msgid }}</td>\n+ {% endif %}\n+ </tr>\n {% if submission.state %}\n- <tr>\n- <th>State</th>\n- <td>{{ submission.state.name }}{% if submission.archived %}, archived{% endif %}</td>\n- </tr>\n+ <tr>\n+ <th>State</th>\n+ <td>{{ submission.state.name }}{% if submission.archived %}, archived{% endif %}</td>\n+ </tr>\n {% endif %}\n {% if submission.commit_ref %}\n- <tr>\n- <th>Commit</th>\n- <td>{{ submission|patch_commit_display }}</td>\n- </tr>\n+ <tr>\n+ <th>Commit</th>\n+ <td>{{ submission|patch_commit_display }}</td>\n+ </tr>\n {% endif %}\n {% if submission.delegate %}\n- <tr>\n- <th>Delegated to:</th>\n- <td>{{ submission.delegate.profile.name }}</td>\n- </tr>\n+ <tr>\n+ <th>Delegated to:</th>\n+ <td>{{ submission.delegate.profile.name }}</td>\n+ </tr>\n {% endif %}\n- <tr>\n- <th>Headers</th>\n- <td><a id=\"togglepatchheaders\"\n- href=\"javascript:toggle_div('togglepatchheaders', 'patchheaders')\"\n- >show</a>\n- <div id=\"patchheaders\" class=\"patchheaders\" style=\"display:none;\">\n- <pre>{{submission.headers}}</pre>\n- </div>\n- </td>\n- </tr>\n+ <tr>\n+ <th>Headers</th>\n+ <td>\n+ <a id=\"togglepatchheaders\" href=\"javascript:toggle_div('togglepatchheaders', 'patchheaders')\">\n+ show\n+ </a>\n+ <div id=\"patchheaders\" class=\"patchheaders\" style=\"display:none;\">\n+ <pre>{{ submission.headers }}</pre>\n+ </div>\n+ </td>\n+ </tr>\n {% if submission.series %}\n- <tr>\n- <th>Series</th>\n- <td>\n- <a href=\"{% url 'patch-list' project_id=project.linkname %}?series={{ submission.series.id }}\">\n- {{ submission.series.name }}\n- </a> |\n- <a id=\"togglepatchseries\"\n- href=\"javascript:toggle_div('togglepatchseries', 'patchseries', 'expand', 'collapse')\"\n- >expand</a>\n- <div id=\"patchseries\" class=\"submissionlist\" style=\"display:none;\">\n- <ul>\n- {% with submission.series.cover_letter as cover %}\n- <li>\n- {% if cover %}\n- {% if cover == submission %}\n- {{ cover.name|default:\"[no subject]\"|truncatechars:100 }}\n- {% else %}\n- <a href=\"{% url 'cover-detail' project_id=project.linkname msgid=cover.url_msgid %}\">\n- {{ cover.name|default:\"[no subject]\"|truncatechars:100 }}\n- </a>\n- {% endif %}\n- {% endif %}\n- </li>\n- {% endwith %}\n- {% for sibling in submission.series.patches.all %}\n- <li>\n- {% if sibling == submission %}\n- {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n- {% else %}\n- <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=sibling.url_msgid %}\">\n- {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n- </a>\n- {% endif %}\n- </li>\n- {% endfor %}\n- </ul>\n- </div>\n- </td>\n- </tr>\n+ <tr>\n+ <th>Series</th>\n+ <td>\n+ <a href=\"{% url 'patch-list' project_id=project.linkname %}?series={{ submission.series.id }}\">\n+ {{ submission.series.name }}\n+ </a>\n+ |\n+ <a id=\"togglepatchseries\" href=\"javascript:toggle_div('togglepatchseries', 'patchseries', 'expand', 'collapse')\">\n+ expand\n+ </a>\n+ <div id=\"patchseries\" class=\"submissionlist\" style=\"display:none;\">\n+ <ul>\n+{% with submission.series.cover_letter as cover %}\n+ <li>\n+{% if cover %}\n+{% if cover == submission %}\n+ {{ cover.name|default:\"[no subject]\"|truncatechars:100 }}\n+{% else %}\n+ <a href=\"{% url 'cover-detail' project_id=project.linkname msgid=cover.url_msgid %}\">\n+ {{ cover.name|default:\"[no subject]\"|truncatechars:100 }}\n+ </a>\n+{% endif %}\n+{% endif %}\n+ </li>\n+{% endwith %}\n+{% for sibling in submission.series.patches.all %}\n+ <li>\n+{% if sibling == submission %}\n+ {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n+{% else %}\n+ <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=sibling.url_msgid %}\">\n+ {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n+ </a>\n+{% endif %}\n+ </li>\n+{% endfor %}\n+ </ul>\n+ </div>\n+ </td>\n+ </tr>\n {% endif %}\n {% if submission.related %}\n- <tr>\n- <th>Related</th>\n- <td>\n- <a id=\"togglerelated\"\n- href=\"javascript:toggle_div('togglerelated', 'related')\"\n- >show</a>\n- <div id=\"related\" class=\"submissionlist\" style=\"display:none;\">\n- <ul>\n- {% for sibling in related_same_project %}\n- <li>\n- {% if sibling.id != submission.id %}\n- <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=sibling.url_msgid %}\">\n- {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n- </a>\n- {% endif %}\n- </li>\n- {% endfor %}\n- {% if related_different_project %}\n- <a id=\"togglerelatedoutside\"\n- href=\"javascript:toggle_div('togglerelatedoutside', 'relatedoutside', 'show from other projects')\"\n- >show from other projects</a>\n- <div id=\"relatedoutside\" class=\"submissionlist\" style=\"display:none;\">\n- {% for sibling in related_outside %}\n- <li>\n- <a href=\"{% url 'patch-detail' project_id=sibling.project.linkname msgid=sibling.url_msgid %}\">\n- {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n- </a> (in {{ sibling.project }})\n- </li>\n- {% endfor %}\n+ <tr>\n+ <th>Related</th>\n+ <td>\n+ <a id=\"togglerelated\" href=\"javascript:toggle_div('togglerelated', 'related')\">\n+ show\n+ </a>\n+ <div id=\"related\" class=\"submissionlist\" style=\"display:none;\">\n+ <ul>\n+{% for sibling in related_same_project %}\n+ <li>\n+{% if sibling.id != submission.id %}\n+ <a href=\"{% url 'patch-detail' project_id=project.linkname msgid=sibling.url_msgid %}\">\n+ {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n+ </a>\n+{% endif %}\n+ </li>\n+{% endfor %}\n+{% if related_different_project %}\n+ <a id=\"togglerelatedoutside\" href=\"javascript:toggle_div('togglerelatedoutside', 'relatedoutside', 'show from other projects')\">\n+ show from other projects\n+ </a>\n+ <div id=\"relatedoutside\" class=\"submissionlist\" style=\"display:none;\">\n+{% for sibling in related_outside %}\n+ <li>\n+ <a href=\"{% url 'patch-detail' project_id=sibling.project.linkname msgid=sibling.url_msgid %}\">\n+ {{ sibling.name|default:\"[no subject]\"|truncatechars:100 }}\n+ </a> (in {{ sibling.project }})\n+ </li>\n+{% endfor %}\n+ </div>\n+{% endif %}\n+ </ul>\n </div>\n- {% endif %}\n- </ul>\n- </div>\n- </td>\n- </tr>\n+ </td>\n+ </tr>\n {% endif %}\n </table>\n \n <div class=\"patchforms\">\n {% if patchform %}\n- <div class=\"patchform patchform-properties\">\n- <h3>Patch Properties</h3>\n- <form method=\"post\">\n- {% csrf_token %}\n- <table class=\"form\">\n- <tr>\n- <th>Change state:</th>\n- <td>\n- {{ patchform.state }}\n- {{ patchform.state.errors }}\n- </td>\n- </tr>\n- <tr>\n- <th>Delegate to:</th>\n- <td>\n- {{ patchform.delegate }}\n- {{ patchform.delegate.errors }}\n- </td>\n- </tr>\n- <tr>\n- <th>Archived:</th>\n- <td>\n- {{ patchform.archived }}\n- {{ patchform.archived.errors }}\n- </td>\n- </tr>\n- <tr>\n- <td></td>\n- <td>\n- <input type=\"submit\" value=\"Update\">\n- </td>\n- </tr>\n- </table>\n- </form>\n- </div>\n+ <div class=\"patchform patchform-properties\">\n+ <h3>Patch Properties</h3>\n+\n+ <form method=\"post\">\n+ {% csrf_token %}\n+ <table class=\"form\">\n+ <tr>\n+ <th>Change state:</th>\n+ <td>\n+ {{ patchform.state }}\n+ {{ patchform.state.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <th>Delegate to:</th>\n+ <td>\n+ {{ patchform.delegate }}\n+ {{ patchform.delegate.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <th>Archived:</th>\n+ <td>\n+ {{ patchform.archived }}\n+ {{ patchform.archived.errors }}\n+ </td>\n+ </tr>\n+ <tr>\n+ <td></td>\n+ <td>\n+ <input type=\"submit\" value=\"Update\">\n+ </td>\n+ </tr>\n+ </table>\n+ </form>\n+ </div>\n {% endif %}\n \n {% if createbundleform %}\n- <div class=\"patchform patchform-bundle\">\n- <h3>Bundling</h3>\n- <table class=\"form\">\n- <tr>\n- <td>Create bundle:</td>\n- <td>\n- {% if createbundleform.non_field_errors %}\n- <dd class=\"errors\">{{createbundleform.non_field_errors}}</dd>\n- {% endif %}\n- <form method=\"post\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"action\" value=\"createbundle\"/>\n- {% if createbundleform.name.errors %}\n- <dd class=\"errors\">{{createbundleform.name.errors}}</dd>\n- {% endif %}\n- {{ createbundleform.name }}\n- <input value=\"Create\" type=\"submit\"/>\n- </form>\n- </td>\n- </tr>\n+ <div class=\"patchform patchform-bundle\">\n+ <h3>Bundling</h3>\n+\n+ <table class=\"form\">\n+ <tr>\n+ <td>Create bundle:</td>\n+ <td>\n+{% if createbundleform.non_field_errors %}\n+ <dd class=\"errors\">{{ createbundleform.non_field_errors }}</dd>\n+{% endif %}\n+ <form method=\"post\">\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"action\" value=\"createbundle\"/>\n+{% if createbundleform.name.errors %}\n+ <dd class=\"errors\">{{ createbundleform.name.errors }}</dd>\n+{% endif %}\n+ {{ createbundleform.name }}\n+ <input value=\"Create\" type=\"submit\"/>\n+ </form>\n+ </td>\n+ </tr>\n {% if bundles %}\n- <tr>\n- <td>Add to bundle:</td>\n- <td>\n- <form method=\"post\">\n- {% csrf_token %}\n- <input type=\"hidden\" name=\"action\" value=\"addtobundle\"/>\n- <select name=\"bundle_id\"/>\n- {% for bundle in bundles %}\n- <option value=\"{{bundle.id}}\">{{bundle.name}}</option>\n- {% endfor %}\n- </select>\n- <input value=\"Add\" type=\"submit\"/>\n- </form>\n- </td>\n- </tr>\n+ <tr>\n+ <td>Add to bundle:</td>\n+ <td>\n+ <form method=\"post\">\n+ {% csrf_token %}\n+ <input type=\"hidden\" name=\"action\" value=\"addtobundle\"/>\n+ <select name=\"bundle_id\"/>\n+{% for bundle in bundles %}\n+ <option value=\"{{ bundle.id }}\">{{ bundle.name }}</option>\n+{% endfor %}\n+ </select>\n+ <input value=\"Add\" type=\"submit\"/>\n+ </form>\n+ </td>\n+ </tr>\n {% endif %}\n- </table>\n-\n- </div>\n+ </table>\n+ </div>\n {% endif %}\n \n- <div style=\"clear: both;\">\n- </div>\n+ <div style=\"clear: both;\"></div>\n </div>\n \n {% if submission.pull_url %}\n <h2>Pull-request</h2>\n-<a class=\"patch-pull-url\" href=\"{{submission.pull_url}}\"\n- >{{ submission.pull_url }}</a>\n+\n+<a class=\"patch-pull-url\" href=\"{{ submission.pull_url }}\">{{ submission.pull_url }}</a>\n {% endif %}\n \n {% if checks %}\n <h2>Checks</h2>\n+\n <table class=\"checks\">\n-<tr>\n- <th>Context</th>\n- <th>Check</th>\n- <th>Description</th>\n-</tr>\n+ <tr>\n+ <th>Context</th>\n+ <th>Check</th>\n+ <th>Description</th>\n+ </tr>\n {% for check in checks %}\n-<tr>\n- <td>{{ check.user }}/{{ check.context }}</td>\n- <td>\n- <span title=\"Updated {{ check.date|naturaltime }}\"\n- class=\"state {{ check.get_state_display }}\">\n- {{ check.get_state_display }}\n- </span>\n- </td>\n- <td>\n- {% if check.target_url %}\n- <a href=\"{{ check.target_url }}\">\n- {% endif %}\n- {{ check.description }}\n- {% if check.target_url %}\n- </a>\n- {% endif %}\n- </td>\n-</tr>\n+ <tr>\n+ <td>{{ check.user }}/{{ check.context }}</td>\n+ <td>\n+ <span title=\"Updated {{ check.date|naturaltime }}\"\n+ class=\"state {{ check.get_state_display }}\">\n+ {{ check.get_state_display }}\n+ </span>\n+ </td>\n+ <td>\n+ {% if check.target_url %}\n+ <a href=\"{{ check.target_url }}\">\n+ {% endif %}\n+ {{ check.description }}\n+ {% if check.target_url %}\n+ </a>\n+ {% endif %}\n+ </td>\n+ </tr>\n {% endfor %}\n </table>\n {% endif %}\n@@ -277,14 +280,15 @@ function toggle_div(link_id, headers_id, label_show, label_hide)\n {% else %}\n <h2>Message</h2>\n {% endif %}\n+\n <div class=\"comment\">\n-<div class=\"meta\">\n- <span>{{ submission.submitter|personify:project }}</span>\n- <span class=\"pull-right\">{{ submission.date }} UTC</span>\n-</div>\n-<pre class=\"content\">\n-{{ submission|commentsyntax }}\n-</pre>\n+ <div class=\"meta\">\n+ <span>{{ submission.submitter|personify:project }}</span>\n+ <span class=\"pull-right\">{{ submission.date }} UTC</span>\n+ </div>\n+ <pre class=\"content\">\n+ {{ submission|commentsyntax }}\n+ </pre>\n </div>\n \n {% for item in comments %}\n@@ -294,14 +298,12 @@ function toggle_div(link_id, headers_id, label_show, label_hide)\n \n <a name=\"{{ item.id }}\"></a>\n <div class=\"comment\">\n-<div class=\"meta\">\n- <span>{{ item.submitter|personify:project }}</span>\n- <span class=\"pull-right\">{{ item.date }} UTC | <a href=\"{% url 'comment-redirect' comment_id=item.id %}\"\n- >#{{ forloop.counter }}</a></span>\n-</div>\n-<pre class=\"content\">\n-{{ item|commentsyntax }}\n-</pre>\n+ <div class=\"meta\">\n+ <span>{{ item.submitter|personify:project }}</span>\n+ <span class=\"pull-right\">{{ item.date }} UTC | <a href=\"{% url 'comment-redirect' comment_id=item.id %}\"\n+ >#{{ forloop.counter }}</a></span>\n+ </div>\n+ <pre class=\"content\">{{ item|commentsyntax }}</pre>\n </div>\n {% endfor %}\n \n@@ -311,10 +313,7 @@ function toggle_div(link_id, headers_id, label_show, label_hide)\n <h2>Patch</h2>\n </div>\n <div id=\"patch\" class=\"patch\">\n-<pre class=\"content\">\n-{{ submission|patchsyntax }}\n-</pre>\n+ <pre class=\"content\">{{ submission|patchsyntax }}</pre>\n </div>\n {% endif %}\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/todo-list.html patchwork/templates/patchwork/todo-list.html\nindex 1ec2713d..6c656b10 100644\n--- patchwork/templates/patchwork/todo-list.html\n+++ patchwork/templates/patchwork/todo-list.html\n@@ -7,11 +7,11 @@\n {% block body %}\n <h1>TODO</h1>\n \n-<p>A Patchwork todo-list contains patches that are assigned to you, and\n-are in an \"action required\" state\n-({% for state in action_required_states %}{% if forloop.last and not forloop.first %} or {% endif %}{{ state }}{% if not forloop.last and not forloop.first %}, {%endif %}{% endfor %}), and are not archived.\n+<p>\n+ A Patchwork todo-list contains patches that are assigned to you, are in an\n+ \"action required\" state ({{ action_required_states|join:\", \" }}), and are\n+ not archived.\n </p>\n \n {% include \"patchwork/partials/patch-list.html\" %}\n-\n {% endblock %}\ndiff --git patchwork/templates/patchwork/todo-lists.html patchwork/templates/patchwork/todo-lists.html\nindex ea65ea05..2f57bdb7 100644\n--- patchwork/templates/patchwork/todo-lists.html\n+++ patchwork/templates/patchwork/todo-lists.html\n@@ -7,24 +7,27 @@\n <h1>TODO</h1>\n \n {% if todo_lists %}\n-<p>You have multiple todo lists. Each todo list contains patches for a single\n- project.</p>\n+<p>\n+ You have multiple todo lists. Each todo list contains patches for a single\n+ project.\n+</p>\n <table class=\"vertical\">\n- <tr>\n- <th>project</th>\n- <th>patches</th>\n- </tr>\n+ <tr>\n+ <th>project</th>\n+ <th>patches</th>\n+ </tr>\n {% for todo_list in todo_lists %}\n- <tr>\n- <td><a\n- href=\"{% url 'user-todo' project_id=todo_list.project.linkname %}\"\n- >{{ todo_list.project.name }}</a></td>\n- <td class=\"numberformat\">{{ todo_list.n_patches }}</td>\n- </tr>\n+ <tr>\n+ <td>\n+ <a href=\"{% url 'user-todo' project_id=todo_list.project.linkname %}\">\n+ {{ todo_list.project.name }}\n+ </a>\n+ </td>\n+ <td class=\"numberformat\">{{ todo_list.n_patches }}</td>\n+ </tr>\n {% endfor %}\n </table>\n-\n {% else %}\n- No todo lists\n+No todo lists\n {% endif %}\n {% endblock %}\ndiff --git patchwork/templates/patchwork/user-link-confirm.html patchwork/templates/patchwork/user-link-confirm.html\nindex 79678f64..aa91fcbd 100644\n--- patchwork/templates/patchwork/user-link-confirm.html\n+++ patchwork/templates/patchwork/user-link-confirm.html\n@@ -8,11 +8,10 @@\n {% if errors %}\n <p>{{ errors }}</p>\n {% else %}\n- <p>You have successfully linked the email address {{ person.email }} to\n- your Patchwork account</p>\n-\n+<p>\n+ You have successfully linked the email address {{ person.email }} to your\n+ Patchwork account\n+</p>\n {% endif %}\n-<p>Back to <a href=\"{% url 'user-profile' %}\">your\n- profile</a>.</p>\n-\n+<p>Back to <a href=\"{% url 'user-profile' %}\">your profile</a>.</p>\n {% endblock %}\ndiff --git patchwork/templates/patchwork/user-link.html patchwork/templates/patchwork/user-link.html\nindex bf331520..8b3fe8f6 100644\n--- patchwork/templates/patchwork/user-link.html\n+++ patchwork/templates/patchwork/user-link.html\n@@ -5,22 +5,28 @@\n \n {% block body %}\n {% if confirmation and not error %}\n-<p>A confirmation email has been sent to {{ confirmation.email }}. Click\n-on the link provided in the email to confirm that this address belongs to\n-you.</p>\n+<p>\n+ A confirmation email has been sent to {{ confirmation.email }}.\n+ Click on the link provided in the email to confirm that this address\n+ belongs to you.\n+</p>\n {% else %}\n- {% if form.errors %}\n- <p>There was an error submitting your link request.</p>\n- {{ form.non_field_errors }}\n- {% endif %}\n- {% if error %}\n- <ul class=\"errorlist\"><li>{{error}}</li></ul>\n- {% endif %}\n+{% if form.errors %}\n+<p>\n+ There was an error submitting your link request.\n+</p>\n+{{ form.non_field_errors }}\n+{% endif %}\n+{% if error %}\n+<ul class=\"errorlist\">\n+ <li>{{ error }}</li>\n+</ul>\n+{% endif %}\n \n- <form action=\"{% url 'user-link' %}\" method=\"post\">\n- {% csrf_token %}\n- {{linkform.email.errors}}\n- Link an email address: {{ linkform.email }}\n- </form>\n+<form action=\"{% url 'user-link' %}\" method=\"post\">\n+ {% csrf_token %}\n+ {{ linkform.email.errors }}\n+ Link an email address: {{ linkform.email }}\n+</form>\n {% endif %}\n {% endblock %}\ndiff --git templates/404.html templates/404.html\nindex fe2b0e4e..dd95e2ec 100644\n--- templates/404.html\n+++ templates/404.html\n@@ -4,7 +4,5 @@\n {% block heading %}404: File not found{% endblock %}\n \n {% block body %}\n-\n <p>The page URL requested (<code>{{ request_path }}</code>) does not exist.</p>\n-\n {% endblock %}\ndiff --git templates/base.html templates/base.html\nindex 8accb4c3..92022fd8 100644\n--- templates/base.html\n+++ templates/base.html\n@@ -1,126 +1,130 @@\n {% load static %}\n <!DOCTYPE html>\n-<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\">\n- <head>\n- <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n- <title>{% block title %}Patchwork{% endblock %} - Patchwork</title>\n- <link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"css/bootstrap.min.css\" %}\"/>\n- <link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"css/selectize.bootstrap3.css\" %}\"/>\n- <link rel=\"stylesheet\" type=\"text/css\" href=\"{% static \"css/style.css\" %}\"/>\n- <script src=\"{% static \"js/jquery-1.10.1.min.js\" %}\"></script>\n- <script src=\"{% static \"js/jquery.stickytableheaders.min.js\" %}\"></script>\n- <script src=\"{% static \"js/jquery.checkboxes-1.0.6.min.js\" %}\"></script>\n- <!-- IE8 support of HTML5 elements and media queries -->\n- <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n- <!--[if lt IE 9]>\n- <script src=\"https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js\">\n+<html lang=\"en\">\n+ <head>\n+ <meta charset=\"utf-8\">\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <title>{% block title %}Patchwork{% endblock %} - Patchwork</title>\n+ <link rel=\"stylesheet\" href=\"{% static \"css/bootstrap.min.css\" %}\"/>\n+ <link rel=\"stylesheet\" href=\"{% static \"css/selectize.bootstrap3.css\" %}\"/>\n+ <link rel=\"stylesheet\" href=\"{% static \"css/style.css\" %}\"/>\n+ <script src=\"{% static \"js/jquery-1.10.1.min.js\" %}\"></script>\n+ <script src=\"{% static \"js/jquery.stickytableheaders.min.js\" %}\"></script>\n+ <script src=\"{% static \"js/jquery.checkboxes-1.0.6.min.js\" %}\"></script>\n+ <!-- IE8 support of HTML5 elements and media queries -->\n+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n+ <!--[if lt IE 9]>\n+ <script src=\"https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js\">\n+ </script>\n+ <script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n+ <script src=\"http://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.0.8/es5-shim.min.js\"></script>\n+ <![endif]-->\n+ <script src=\"{% static \"js/bootstrap.min.js\" %}\"></script>\n+ <script src=\"{% static \"js/selectize.min.js\" %}\"></script>\n+ <script src=\"{% static \"js/clipboard.min.js\" %}\"></script>\n+ <script>\n+ $(document).ready(function() {\n+ new Clipboard(document.querySelectorAll('button.btn-copy'));\n+ });\n </script>\n- <script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n- <script src=\"http://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.0.8/es5-shim.min.js\"></script>\n- <![endif]-->\n- <script src=\"{% static \"js/bootstrap.min.js\" %}\"></script>\n- <script src=\"{% static \"js/selectize.min.js\" %}\"></script>\n- <script src=\"{% static \"js/clipboard.min.js\" %}\"></script>\n- <script>\n- $(document).ready(function() {\n- new Clipboard(document.querySelectorAll('button.btn-copy'));\n- });\n- </script>\n {% block headers %}{% endblock %}\n- </head>\n- <body>\n- <nav class=\"navbar navbar-inverse navbar-static-top\">\n- <div class=\"container-fluid\">\n- <div class=\"navbar-header\">\n- <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n- <span class=\"sr-only\">Toggle navigation</span>\n- <span class=\"icon-bar\"></span>\n- <span class=\"icon-bar\"></span>\n- <span class=\"icon-bar\"></span>\n- </button>\n- <a class=\"navbar-brand\" href=\"{% url 'project-list' %}\">Patchwork</a>\n- <span class=\"navbar-subbrand\">\n- {% block heading %}{% if project %} {{project.name}}{% endif %}{% endblock %}\n- </span>\n- </div>\n- <div class=\"collapse navbar-collapse\" id=\"navbar-collapse\">\n+ </head>\n+ <body>\n+ <nav class=\"navbar navbar-inverse navbar-static-top\">\n+ <div class=\"container-fluid\">\n+ <div class=\"navbar-header\">\n+ <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n+ <span class=\"sr-only\">Toggle navigation</span>\n+ <span class=\"icon-bar\"></span>\n+ <span class=\"icon-bar\"></span>\n+ <span class=\"icon-bar\"></span>\n+ </button>\n+ <a class=\"navbar-brand\" href=\"{% url 'project-list' %}\">Patchwork</a>\n+ <span class=\"navbar-subbrand\">\n+{% block heading %}\n+{% if project %}\n+ {{ project.name }}\n+{% endif %}\n+{% endblock %}\n+ </span>\n+ </div>\n+ <div class=\"collapse navbar-collapse\" id=\"navbar-collapse\">\n {% block navbarmenu %}\n {% if project %}\n- <ul class=\"nav navbar-nav\">\n- <li class=\"{% block patch_active %}{% endblock %}\">\n- <a href=\"{% url 'patch-list' project_id=project.linkname %}\">\n- <span class=\"glyphicon glyphicon-file\"></span>\n- Patches\n- </a>\n- </li>\n- <li class=\"{% block bundle_active %}{% endblock %}\">\n- <a href=\"{% url 'bundle-list' project_id=project.linkname %}\">\n- <span class=\"glyphicon glyphicon-gift\"></span>\n- Bundles\n- </a>\n- </li>\n- <li class=\"{% block info_active %}{% endblock %}\">\n- <a href=\"{% url 'project-detail' project_id=project.linkname %}\">\n- <span class=\"glyphicon glyphicon-info-sign\"></span>\n- About this project\n- </a>\n- </li>\n- </ul>\n+ <ul class=\"nav navbar-nav\">\n+ <li class=\"{% block patch_active %}{% endblock %}\">\n+ <a href=\"{% url 'patch-list' project_id=project.linkname %}\">\n+ <span class=\"glyphicon glyphicon-file\"></span>\n+ Patches\n+ </a>\n+ </li>\n+ <li class=\"{% block bundle_active %}{% endblock %}\">\n+ <a href=\"{% url 'bundle-list' project_id=project.linkname %}\">\n+ <span class=\"glyphicon glyphicon-gift\"></span>\n+ Bundles\n+ </a>\n+ </li>\n+ <li class=\"{% block info_active %}{% endblock %}\">\n+ <a href=\"{% url 'project-detail' project_id=project.linkname %}\">\n+ <span class=\"glyphicon glyphicon-info-sign\"></span>\n+ About this project\n+ </a>\n+ </li>\n+ </ul>\n {% endif %}\n {% endblock %}\n- <ul class=\"nav navbar-nav navbar-right\">\n+ <ul class=\"nav navbar-nav navbar-right\">\n {% if user.is_authenticated %}\n- <li class=\"dropdown\">\n- <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n- <span class=\"badge\">{{ user.profile.n_todo_patches }}</span>\n- <strong>{{ user.username }}</strong> <span class=\"caret\"></span>\n- </a>\n- <ul class=\"dropdown-menu\" role=\"menu\">\n- <li>\n- <a href=\"{% url 'user-todos' %}\">\n- Reviews pending\n- <span class=\"badge\">{{ user.profile.n_todo_patches }}</span>\n- </a>\n- </li>\n- <li>\n- <a href=\"{% url 'user-bundles' %}\">\n- Bundles\n- </a>\n- </li>\n- <li role=\"separator\" class=\"divider\"></li>\n+ <li class=\"dropdown\">\n+ <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">\n+ <span class=\"badge\">{{ user.profile.n_todo_patches }}</span>\n+ <strong>{{ user.username }}</strong> <span class=\"caret\"></span>\n+ </a>\n+ <ul class=\"dropdown-menu\" role=\"menu\">\n+ <li>\n+ <a href=\"{% url 'user-todos' %}\">\n+ Reviews pending\n+ <span class=\"badge\">{{ user.profile.n_todo_patches }}</span>\n+ </a>\n+ </li>\n+ <li>\n+ <a href=\"{% url 'user-bundles' %}\">\n+ Bundles\n+ </a>\n+ </li>\n+ <li role=\"separator\" class=\"divider\"></li>\n {% if user.is_staff %}\n- <li><a href=\"{% url 'admin:index' %}\">Administration</a></li>\n+ <li><a href=\"{% url 'admin:index' %}\">Administration</a></li>\n {% endif %}\n- <li><a href=\"{% url 'user-profile' %}\">View profile</a></li>\n- <li><a href=\"{% url 'auth_logout' %}\">Logout</a></li>\n- </ul>\n- </li>\n+ <li><a href=\"{% url 'user-profile' %}\">View profile</a></li>\n+ <li><a href=\"{% url 'auth_logout' %}\">Logout</a></li>\n+ </ul>\n+ </li>\n {% else %}\n- <li><a href=\"{% url 'auth_login' %}\">Login</a></li>\n- <li><a href=\"{% url 'user-register' %}\">Register</a></li>\n- <li><a href=\"{% url 'mail-settings' %}\">Mail settings</a></li>\n+ <li><a href=\"{% url 'auth_login' %}\">Login</a></li>\n+ <li><a href=\"{% url 'user-register' %}\">Register</a></li>\n+ <li><a href=\"{% url 'mail-settings' %}\">Mail settings</a></li>\n {% endif %}\n- </ul>\n- </div>\n- </div>\n- </nav>\n+ </ul>\n+ </div>\n+ </div>\n+ </nav>\n {% if messages %}\n- <div id=\"messages\">\n- {% for message in messages %}\n- {# TODO(stephenfin): Make use of message.tags when completely #}\n- {# converted to django.contrib.messages #}\n- <div class=\"message\">{{ message }}</div>\n- {% endfor %}\n- </div>\n+ <div id=\"messages\">\n+{% for message in messages %}\n+{# TODO(stephenfin): Make use of message.tags when completely #}\n+{# converted to django.contrib.messages #}\n+ <div class=\"message\">{{ message }}</div>\n+{% endfor %}\n+ </div>\n {% endif %}\n- <div class=\"container-fluid\">\n-{% block body %}\n-{% endblock %}\n- </div>\n- <div id=\"footer\">\n- <a href=\"http://jk.ozlabs.org/projects/patchwork/\">patchwork</a>\n- patch tracking system | version {{version}} | <a\n- href=\"{% url 'about' %}\">about patchwork</a>\n- </div>\n- </body>\n+ <div class=\"container-fluid\">\n+{% block body %}{% endblock %}\n+ </div>\n+ <div id=\"footer\">\n+ <a href=\"http://jk.ozlabs.org/projects/patchwork/\">patchwork</a>\n+ patch tracking system | version {{ version }} |\n+ <a href=\"{% url 'about' %}\">about patchwork</a>\n+ </div>\n+ </body>\n </html>\ndiff --git templates/registration/password_change_done.html templates/registration/password_change_done.html\nindex 65d89ef6..88b7d26d 100644\n--- templates/registration/password_change_done.html\n+++ templates/registration/password_change_done.html\n@@ -4,7 +4,5 @@\n {% block heading %}Password Change Complete{% endblock %}\n \n {% block body %}\n-\n <p>Your password has been changed successfully.</p>\n-\n {% endblock %}\ndiff --git templates/registration/password_change_form.html templates/registration/password_change_form.html\nindex 8abe55ef..3e9a0788 100644\n--- templates/registration/password_change_form.html\n+++ templates/registration/password_change_form.html\n@@ -4,42 +4,36 @@\n {% block heading %}Password Change{% endblock %}\n \n {% block body %}\n-\n-<p>Please enter your old password, for security's sake, and then enter your new\n-password twice so we can verify you typed it in correctly.</p>\n+<p>\n+ Please enter your old password, for security's sake, and then enter your new\n+ password twice so we can verify you typed it in correctly.\n+</p>\n \n <form method=\"post\">\n-{% csrf_token %}\n-\n-<table class=\"form passwordform\">\n-\n+ {% csrf_token %}\n+ <table class=\"form passwordform\">\n {% if form.errors %}\n- <tr>\n- <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n- </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n+ </tr>\n {% endif %}\n-\n-\n {% for field in form %}\n- <tr>\n- <td>{{ field.label_tag }}</td>\n- <td>\n- {{ field.errors }}\n- {{ field }}\n+ <tr>\n+ <td>{{ field.label_tag }}</td>\n+ <td>\n+ {{ field.errors }}\n+ {{ field }}\n {% if field.help_text %}\n- <div class=\"help_text\"/>{{ field.help_text }}</div>\n+ <div class=\"help_text\"/>{{ field.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n+ </td>\n+ </tr>\n {% endfor %}\n-\n- <tr>\n- <td colspan=\"2\" class=\"error\">\n- <input type=\"submit\" value=\"Change my password\" class=\"default\" />\n- </td>\n- </tr>\n-\n-</table>\n-\n+ <tr>\n+ <td colspan=\"2\" class=\"error\">\n+ <input type=\"submit\" value=\"Change my password\" class=\"default\" />\n+ </td>\n+ </tr>\n+ </table>\n </form>\n {% endblock %}\ndiff --git templates/registration/password_reset_complete.html templates/registration/password_reset_complete.html\nindex 1d88fdff..8678ee89 100644\n--- templates/registration/password_reset_complete.html\n+++ templates/registration/password_reset_complete.html\n@@ -4,6 +4,5 @@\n {% block heading %}Password reset completed{% endblock %}\n \n {% block body %}\n-\n-<p>Your password has been set. You may go ahead and log in now.</p>\n+<p>Your password has been set. You may go ahead and log in now.</p>\n {% endblock %}\ndiff --git templates/registration/password_reset_confirm.html templates/registration/password_reset_confirm.html\nindex 7e1e2f1e..4ab2357f 100644\n--- templates/registration/password_reset_confirm.html\n+++ templates/registration/password_reset_confirm.html\n@@ -4,48 +4,46 @@\n {% block heading %}Password reset confirmation{% endblock %}\n \n {% block body %}\n-\n {% if validlink %}\n-<p>Your username, in case you've forgotten: {{ form.user.get_username }}</p>\n-<p>Please enter your new password twice so we can verify you typed it in\n-correctly</p>\n+<p>\n+ Your username, in case you've forgotten: {{ form.user.get_username }}\n+</p>\n+<p>\n+ Please enter your new password twice so we can verify you typed it in\n+ correctly.\n+</p>\n \n <form method=\"post\">\n-{% csrf_token %}\n-\n-<table class=\"form passwordform\">\n-\n+ {% csrf_token %}\n+ <table class=\"form passwordform\">\n {% if form.errors %}\n- <tr>\n- <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n- </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n+ </tr>\n {% endif %}\n-\n-\n {% for field in form %}\n- <tr>\n- <td>{{ field.label_tag }}</td>\n- <td>\n- {{ field.errors }}\n- {{ field }}\n+ <tr>\n+ <td>{{ field.label_tag }}</td>\n+ <td>\n+ {{ field.errors }}\n+ {{ field }}\n {% if field.help_text %}\n- <div class=\"help_text\"/>{{ field.help_text }}</div>\n+ <div class=\"help_text\"/>{{ field.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n+ </td>\n+ </tr>\n {% endfor %}\n-\n- <tr>\n- <td colspan=\"2\">\n- <input type=\"submit\" value=\"Set my password\" class=\"default\" />\n- </td>\n- </tr>\n-\n-</table>\n-\n+ <tr>\n+ <td colspan=\"2\">\n+ <input type=\"submit\" value=\"Set my password\" class=\"default\" />\n+ </td>\n+ </tr>\n+ </table>\n </form>\n {% else %}\n-<p>The password reset link was invalid, possibly because it has already\n-been used. Please request a new password reset.</p>\n+<p>\n+ The password reset link was invalid, possibly because it has already\n+ been used. Please request a new password reset.\n+</p>\n {% endif %}\n {% endblock %}\ndiff --git templates/registration/password_reset_done.html templates/registration/password_reset_done.html\nindex fe9e551a..6070f767 100644\n--- templates/registration/password_reset_done.html\n+++ templates/registration/password_reset_done.html\n@@ -4,10 +4,12 @@\n {% block heading %}Password reset{% endblock %}\n \n {% block body %}\n-\n-<p>We have emailed you instructions for setting your password.\n-You should be receiving them shortly.</p>\n-<p>If you don't receive an email, please make sure you've entered the\n-address you registered with, and check your spam folder</p>\n-\n+<p>\n+ We have emailed you instructions for setting your password.\n+ You should be receiving them shortly.\n+</p>\n+<p>\n+ If you don't receive an email, please make sure you've entered the\n+ address you registered with, and check your spam folder.\n+</p>\n {% endblock %}\ndiff --git templates/registration/password_reset_email.html templates/registration/password_reset_email.html\nindex bdc28518..b90c13af 100644\n--- templates/registration/password_reset_email.html\n+++ templates/registration/password_reset_email.html\n@@ -5,7 +5,7 @@ your user account on the Patchwork patch-tracking system.\n Please visit the following url and choose a new password:\n \n {% block reset_link %}\n-{{ protocol }}://{{domain}}{% url 'password_reset_confirm' uidb64=uid token=token %}\n+{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}\n {% endblock %}\n \n Happy patchworking.\ndiff --git templates/registration/password_reset_form.html templates/registration/password_reset_form.html\nindex 4718f436..fa6f3f1a 100644\n--- templates/registration/password_reset_form.html\n+++ templates/registration/password_reset_form.html\n@@ -4,42 +4,36 @@\n {% block heading %}Password reset{% endblock %}\n \n {% block body %}\n-\n-<p>Forgotten your password? Enter your email address below, and we will\n-email instructions for setting a new one.</p>\n+<p>\n+ Forgotten your password? Enter your email address below, and we will\n+ email instructions for setting a new one.\n+</p>\n \n <form method=\"post\">\n-{% csrf_token %}\n-\n-<table class=\"form passwordform\">\n-\n+ {% csrf_token %}\n+ <table class=\"form passwordform\">\n {% if form.errors %}\n- <tr>\n- <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n- </tr>\n+ <tr>\n+ <td colspan=\"2\" class=\"error\">Please correct the errors below.</p>\n+ </tr>\n {% endif %}\n-\n-\n {% for field in form %}\n- <tr>\n- <td>{{ field.label_tag }}</td>\n- <td>\n- {{ field.errors }}\n- {{ field }}\n+ <tr>\n+ <td>{{ field.label_tag }}</td>\n+ <td>\n+ {{ field.errors }}\n+ {{ field }}\n {% if field.help_text %}\n- <div class=\"help_text\"/>{{ field.help_text }}</div>\n+ <div class=\"help_text\"/>{{ field.help_text }}</div>\n {% endif %}\n- </td>\n- </tr>\n+ </td>\n+ </tr>\n {% endfor %}\n-\n- <tr>\n- <td colspan=\"2\">\n- <input type=\"submit\" value=\"Reset my password\" class=\"default\" />\n- </td>\n- </tr>\n-\n-</table>\n-\n+ <tr>\n+ <td colspan=\"2\">\n+ <input type=\"submit\" value=\"Reset my password\" class=\"default\" />\n+ </td>\n+ </tr>\n+ </table>\n </form>\n {% endblock %}\n", "prefixes": [ "RFC", "01/19" ] }