[PATCH v4 1/5] patch-list: clean up patch-list page

Raxel Gutierrez raxel at google.com
Tue Aug 24 04:28:29 AEST 2021


Add ids to table cells, and rename selectors using hyphen delimited
strings to clean up and improve readability of patch-list.html. Also,
create a partial template errors.html for errors that render with form
submission.These changes make the code healthier, ready for change, and
overall more readable.

No user-visible change should be noticed.

Signed-off-by: Raxel Gutierrez <raxel at google.com>
---
 htdocs/css/style.css                          | 16 ++--
 htdocs/js/bundle.js                           | 12 +--
 .../patchwork/partials/patch-list.html        | 84 +++++++++----------
 patchwork/templates/patchwork/submission.html |  6 +-
 patchwork/tests/views/test_bundles.py         | 20 ++---
 patchwork/tests/views/test_patch.py           |  6 +-
 patchwork/views/__init__.py                   |  4 +-
 patchwork/views/bundle.py                     |  2 +-
 8 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/htdocs/css/style.css b/htdocs/css/style.css
index 9156aa6e..4ad503da 100644
--- a/htdocs/css/style.css
+++ b/htdocs/css/style.css
@@ -134,25 +134,25 @@ table.pw-list > thead {
     background-color: white;
 }
 
-a.colinactive, a.colactive {
+a.col-inactive, a.col-active {
     color: black;
     text-decoration: none;
 }
 
-a.colinactive:hover {
+a.col-inactive:hover {
     color: red;
 }
 
 div.filters {
 }
 
-div.patchforms {
+div.patch-forms {
     margin-top: 1em;
 }
 
 /* list order manipulation */
 
-table.patchlist tr.draghover {
+table.patch-list tr.draghover {
     background: #e8e8e8 !important;
 }
 
@@ -228,7 +228,7 @@ table.patch-meta tr th, table.patch-meta tr td {
 }
 
 /* checks forms */
-/* TODO(stephenfin): Merge this with 'div.patchform' rules */
+/* TODO(stephenfin): Merge this with 'div.patch-form' rules */
 .checks {
     border: 1px solid gray;
     margin: 0.5em 1em;
@@ -406,7 +406,7 @@ table.bundlelist td
 }
 
 /* forms that appear for a patch */
-div.patchform {
+div.patch-form {
     border: thin solid #080808;
     padding-left: 0.6em;
     padding-right: 0.6em;
@@ -414,7 +414,7 @@ div.patchform {
     margin: 0.5em 5em 0.5em 10px;
 }
 
-div.patchform h3 {
+div.patch-form h3 {
     margin-top: 0em;
     margin-left: -0.6em;
     margin-right: -0.6em;
@@ -424,7 +424,7 @@ div.patchform h3 {
     font-size: 100%;
 }
 
-div.patchform ul {
+div.patch-form ul {
     list-style-type: none;
     padding-left: 0.2em;
     margin-top: 0em;
diff --git a/htdocs/js/bundle.js b/htdocs/js/bundle.js
index c969d0be..2a721d0d 100644
--- a/htdocs/js/bundle.js
+++ b/htdocs/js/bundle.js
@@ -6,8 +6,8 @@ function order_button_click(node)
 {
     var rows, form;
 
-    form = $("#reorderform");
-    rows = $("#patchlist").get(0).tBodies[0].rows;
+    form = $("#reorder-form");
+    rows = $("#patch-list").get(0).tBodies[0].rows;
 
     if (rows.length < 1)
         return;
@@ -35,18 +35,18 @@ function order_button_click(node)
         $("#reorder\\-cancel").css("display", "inline");
 
         /* show help text */
-        $("#reorderhelp").text('Drag & drop rows to reorder');
+        $("#reorder-help").text('Drag & drop rows to reorder');
 
         /* enable drag & drop on the patches list */
-        $("#patchlist").tableDnD({
+        $("#patch-list").tableDnD({
             onDragClass: 'dragging',
             onDragStart: function() { dragging = true; },
             onDrop: function() { dragging = false; }
         });
 
         /* replace zebra striping with hover */
-        $("#patchlist tbody tr").css("background", "inherit");
-        $("#patchlist tbody tr").hover(drag_hover_in, drag_hover_out);
+        $("#patch-list tbody tr").css("background", "inherit");
+        $("#patch-list tbody tr").hover(drag_hover_in, drag_hover_out);
     }
 
     editing_order = !editing_order;
diff --git a/patchwork/templates/patchwork/partials/patch-list.html b/patchwork/templates/patchwork/partials/patch-list.html
index 02d6dff8..80ae6908 100644
--- a/patchwork/templates/patchwork/partials/patch-list.html
+++ b/patchwork/templates/patchwork/partials/patch-list.html
@@ -9,14 +9,14 @@
 {% include "patchwork/partials/pagination.html" %}
 
 {% if order.editable %}
-<table class="patchlist">
+<table class="patch-list">
  <tr>
-  <td class="patchlistreorder">
-   <form method="post" id="reorderform">
+  <td class="patch-list-reorder">
+   <form method="post" id="reorder-form">
     {% csrf_token %}
-    <input type="hidden" name="form" value="reorderform"/>
+    <input type="hidden" name="form" value="reorder-form"/>
     <input type="hidden" name="order_start" value="0"/>
-    <span id="reorderhelp"></span>
+    <span id="reorder-help"></span>
     <input id="reorder-cancel" type="button" value="Cancel"
      onClick="order_cancel_click(this)"/>
     <input id="reorder-change" type="button" value="Change order"
@@ -29,7 +29,7 @@
 
 {% if page.paginator.long_page and user.is_authenticated %}
 <div class="floaty">
- <a title="jump to form" href="#patchforms">
+ <a title="jump to form" href="#patch-forms">
   <span style="font-size: 120%">▾</span>
  </a>
 </div>
@@ -52,9 +52,9 @@ $(document).ready(function() {
 
 <form method="post">
 {% csrf_token %}
-<input type="hidden" name="form" value="patchlistform"/>
+<input type="hidden" name="form" value="patch-list-form"/>
 <input type="hidden" name="project" value="{{project.id}}"/>
-<table id="patchlist" class="table table-hover table-extra-condensed table-striped pw-list"
+<table id="patch-list" class="table table-hover table-extra-condensed table-striped pw-list"
        data-toggle="checkboxes" data-range="true">
  <thead>
   <tr>
@@ -72,23 +72,23 @@ $(document).ready(function() {
 
    <th>
     {% if order.name == "name" %}
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       <span class="glyphicon glyphicon-chevron-{{ order.updown }}"></span>
      </a>
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       Patch
      </a>
     {% else %}
      {% if not order.editable %}
-     <a class="colinactive" href="{% listurl order="name" %}">Patch</a>
+     <a class="col-inactive" href="{% listurl order="name" %}">Patch</a>
      {% else %}
-     <span class="colinactive">Patch</span>
+     <span class="col-inactive">Patch</span>
      {% endif %}
     {% endif %}
    </th>
 
    <th>
-    <span class="colinactive">Series</span>
+    <span class="col-inactive">Series</span>
    </th>
 
    <th>
@@ -101,70 +101,70 @@ $(document).ready(function() {
 
    <th>
     {% if order.name == "date" %}
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       <span class="glyphicon glyphicon-chevron-{{ order.updown }}"></span>
      </a>
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       Date
      </a>
     {% else %}
      {% if not order.editable %}
-     <a class="colinactive" href="{% listurl order="date" %}">Date</a>
+     <a class="col-inactive" href="{% listurl order="date" %}">Date</a>
      {% else %}
-     <span class="colinactive">Date</span>
+     <span class="col-inactive">Date</span>
      {% endif %}
     {% endif %}
    </th>
 
    <th>
     {% if order.name == "submitter" %}
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       <span class="glyphicon glyphicon-chevron-{{ order.updown }}"></span>
      </a>
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       Submitter
      </a>
     {% else %}
      {% if not order.editable %}
-     <a class="colinactive" href="{% listurl order="submitter" %}">
+     <a class="col-inactive" href="{% listurl order="submitter" %}">
       Submitter
      </a>
      {% else %}
-     <span class="colinactive">Submitter</span>
+     <span class="col-inactive">Submitter</span>
      {% endif %}
     {% endif %}
    </th>
 
    <th>
     {% if order.name == "delegate" %}
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       <span class="glyphicon glyphicon-chevron-{{ order.updown }}"></span>
      </a>
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       Delegate
      </a>
     {% else %}
      {% if not order.editable %}
-     <a class="colinactive" href="{% listurl order="delegate" %}">Delegate</a>
+     <a class="col-inactive" href="{% listurl order="delegate" %}">Delegate</a>
      {% else %}
-     <span class="colinactive">Delegate</span>
+     <span class="col-inactive">Delegate</span>
      {% endif %}
     {% endif %}
    </th>
 
    <th>
     {% if order.name == "state" %}
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       <span class="glyphicon glyphicon-chevron-{{ order.updown }}"></span>
      </a>
-     <a class="colactive" href="{% listurl order=order.reversed_name %}">
+     <a class="col-active" href="{% listurl order=order.reversed_name %}">
       State
      </a>
     {% else %}
      {% if not order.editable %}
-     <a class="colinactive" href="{% listurl order="state" %}">State</a>
+     <a class="col-inactive" href="{% listurl order="state" %}">State</a>
      {% else %}
-     <span class="colinactive">State</span>
+     <span class="col-inactive">State</span>
      {% endif %}
     {% endif %}
    </th>
@@ -174,9 +174,9 @@ $(document).ready(function() {
 
  <tbody>
  {% for patch in page.object_list %}
-  <tr id="patch_row:{{patch.id}}">
+  <tr id="patch-row:{{patch.id}}">
    {% if user.is_authenticated %}
-   <td style="text-align: center;">
+   <td id="select-patch:{{patch.id}}" style="text-align: center;">
     <input type="checkbox" name="patch_id:{{patch.id}}"/>
    </td>
    {% endif %}
@@ -188,24 +188,24 @@ $(document).ready(function() {
     </button>
    </td>
    {% endif %}
-   <td>
+   <td id="patch-name:{{patch.id}}">
     <a href="{% url 'patch-detail' project_id=project.linkname msgid=patch.url_msgid %}">
      {{ patch.name|default:"[no subject]"|truncatechars:100 }}
     </a>
    </td>
-   <td>
+   <td id="patch-series:{{patch.id}}">
     {% if patch.series %}
     <a href="?series={{patch.series.id}}">
      {{ patch.series|truncatechars:100 }}
     </a>
     {% endif %}
    </td>
-   <td class="text-nowrap">{{ patch|patch_tags }}</td>
-   <td class="text-nowrap">{{ patch|patch_checks }}</td>
-   <td class="text-nowrap">{{ patch.date|date:"Y-m-d" }}</td>
-   <td>{{ patch.submitter|personify:project }}</td>
-   <td>{{ patch.delegate.username }}</td>
-   <td>{{ patch.state }}</td>
+   <td id="patch-tags:{{patch.id}}" class="text-nowrap">{{ patch|patch_tags }}</td>
+   <td id="patch-checks:{{patch.id}}" class="text-nowrap">{{ patch|patch_checks }}</td>
+   <td id="patch-date:{{patch.id}}" class="text-nowrap">{{ patch.date|date:"Y-m-d" }}</td>
+   <td id="patch-submitter:{{patch.id}}">{{ patch.submitter|personify:project }}</td>
+   <td id="patch-delegate:{{patch.id}}">{{ patch.delegate.username }}</td>
+   <td id="patch-state:{{patch.id}}">{{ patch.state }}</td>
   </tr>
  {% empty %}
   <tr>
@@ -218,10 +218,10 @@ $(document).ready(function() {
 {% if page.paginator.count %}
 {% include "patchwork/partials/pagination.html" %}
 
-<div class="patchforms" id="patchforms">
+<div class="patch-forms" id="patch-forms">
 
 {% if patchform %}
- <div class="patchform patchform-properties">
+ <div class="patch-form patch-form-properties">
   <h3>Properties</h3>
     <table class="form">
      <tr>
@@ -257,7 +257,7 @@ $(document).ready(function() {
 {% endif %}
 
 {% if user.is_authenticated %}
- <div class="patchform patchform-bundle">
+ <div class="patch-form patch-form-bundle">
   <h3>Bundling</h3>
    <table class="form">
     <tr>
diff --git a/patchwork/templates/patchwork/submission.html b/patchwork/templates/patchwork/submission.html
index 2238e82e..b617d366 100644
--- a/patchwork/templates/patchwork/submission.html
+++ b/patchwork/templates/patchwork/submission.html
@@ -135,9 +135,9 @@
 {% endif %}
 </table>
 
-<div class="patchforms">
+<div class="patch-forms">
 {% if patchform %}
- <div class="patchform patchform-properties">
+ <div class="patch-form patch-form-properties">
   <h3>Patch Properties</h3>
    <form method="post">
     {% csrf_token %}
@@ -175,7 +175,7 @@
 {% endif %}
 
 {% if createbundleform %}
- <div class="patchform patchform-bundle">
+ <div class="patch-form patch-form-bundle">
   <h3>Bundling</h3>
    <table class="form">
     <tr>
diff --git a/patchwork/tests/views/test_bundles.py b/patchwork/tests/views/test_bundles.py
index 6a744093..e265eb69 100644
--- a/patchwork/tests/views/test_bundles.py
+++ b/patchwork/tests/views/test_bundles.py
@@ -353,7 +353,7 @@ class BundleCreateFromListTest(BundleTestBase):
 
     def test_create_empty_bundle(self):
         newbundlename = 'testbundle-new'
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'bundle_name': newbundlename,
                   'action': 'Create',
                   'project': self.project.id}
@@ -369,7 +369,7 @@ class BundleCreateFromListTest(BundleTestBase):
         newbundlename = 'testbundle-new'
         patch = self.patches[0]
 
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'bundle_name': newbundlename,
                   'action': 'Create',
                   'project': self.project.id,
@@ -393,7 +393,7 @@ class BundleCreateFromListTest(BundleTestBase):
 
         n_bundles = Bundle.objects.count()
 
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'bundle_name': '',
                   'action': 'Create',
                   'project': self.project.id,
@@ -414,7 +414,7 @@ class BundleCreateFromListTest(BundleTestBase):
         newbundlename = 'testbundle-dup'
         patch = self.patches[0]
 
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'bundle_name': newbundlename,
                   'action': 'Create',
                   'project': self.project.id,
@@ -489,7 +489,7 @@ class BundleAddFromListTest(BundleTestBase):
 
     def test_add_to_empty_bundle(self):
         patch = self.patches[0]
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'action': 'Add',
                   'project': self.project.id,
                   'bundle_id': self.bundle.id,
@@ -509,7 +509,7 @@ class BundleAddFromListTest(BundleTestBase):
     def test_add_to_non_empty_bundle(self):
         self.bundle.append_patch(self.patches[0])
         patch = self.patches[1]
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'action': 'Add',
                   'project': self.project.id,
                   'bundle_id': self.bundle.id,
@@ -538,7 +538,7 @@ class BundleAddFromListTest(BundleTestBase):
         count = self.bundle.patches.count()
         patch = self.patches[0]
 
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'action': 'Add',
                   'project': self.project.id,
                   'bundle_id': self.bundle.id,
@@ -559,7 +559,7 @@ class BundleAddFromListTest(BundleTestBase):
         count = self.bundle.patches.count()
         patch = self.patches[0]
 
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'action': 'Add',
                   'project': self.project.id,
                   'bundle_id': self.bundle.id,
@@ -650,7 +650,7 @@ class BundleInitialOrderTest(BundleTestBase):
         newbundlename = 'testbundle-new'
 
         # need to define our querystring explicity to enforce ordering
-        params = {'form': 'patchlistform',
+        params = {'form': 'patch-list-form',
                   'bundle_name': newbundlename,
                   'action': 'Create',
                   'project': self.project.id,
@@ -704,7 +704,7 @@ class BundleReorderTest(BundleTestBase):
                                              patch=self.patches[start]).patch
 
         slice_ids = neworder_ids[start:end]
-        params = {'form': 'reorderform',
+        params = {'form': 'reorder-form',
                   'order_start': firstpatch.id,
                   'neworder': slice_ids}
 
diff --git a/patchwork/tests/views/test_patch.py b/patchwork/tests/views/test_patch.py
index 1a1243cf..22ee0c19 100644
--- a/patchwork/tests/views/test_patch.py
+++ b/patchwork/tests/views/test_patch.py
@@ -71,7 +71,7 @@ class PatchListOrderingTest(TestCase):
                          date=date)
 
     def _extract_patch_ids(self, response):
-        id_re = re.compile(r'<tr id="patch_row:(\d+)"')
+        id_re = re.compile(r'<tr id="patch-row:(\d+)"')
         ids = [int(m.group(1))
                for m in id_re.finditer(response.content.decode())]
 
@@ -304,7 +304,7 @@ class PatchViewTest(TestCase):
 
 class PatchUpdateTest(TestCase):
 
-    properties_form_id = 'patchform-properties'
+    properties_form_id = 'patch-form-properties'
 
     def setUp(self):
         self.project = create_project()
@@ -318,7 +318,7 @@ class PatchUpdateTest(TestCase):
         self.base_data = {
             'action': 'Update',
             'project': str(self.project.id),
-            'form': 'patchlistform',
+            'form': 'patch-list-form',
             'archived': '*',
             'delegate': '*',
             'state': '*'
diff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py
index 3efe90cd..7700b734 100644
--- a/patchwork/views/__init__.py
+++ b/patchwork/views/__init__.py
@@ -221,12 +221,12 @@ def generic_list(request, project, view, view_args=None, filter_settings=None,
         # we only pass the post data to the MultiplePatchForm if that was
         # the actual form submitted
         data_tmp = None
-        if data and data.get('form', '') == 'patchlistform':
+        if data and data.get('form', '') == 'patch-list-form':
             data_tmp = data
 
         properties_form = MultiplePatchForm(project, data=data_tmp)
 
-    if request.method == 'POST' and data.get('form') == 'patchlistform':
+    if request.method == 'POST' and data.get('form') == 'patch-list-form':
         action = data.get('action', '').lower()
 
         # special case: the user may have hit enter in the 'create bundle'
diff --git a/patchwork/views/bundle.py b/patchwork/views/bundle.py
index 3e227f4c..977d2301 100644
--- a/patchwork/views/bundle.py
+++ b/patchwork/views/bundle.py
@@ -106,7 +106,7 @@ def bundle_detail(request, username, bundlename):
             form = BundleForm(instance=bundle)
 
         if (request.method == 'POST' and
-            request.POST.get('form') == 'reorderform'):
+            request.POST.get('form') == 'reorder-form'):
             order = get_object_or_404(
                 BundlePatch,
                 bundle=bundle,
-- 
2.33.0.rc2.250.ged5fa647cd-goog



More information about the Patchwork mailing list