[v4,9/9] templates: Add "download series" links

Submitted by Stephen Finucane on March 10, 2017, 5:38 p.m.

Details

Message ID 20170310173807.13407-10-stephen@that.guru
State Accepted
Headers show

Commit Message

Stephen Finucane March 10, 2017, 5:38 p.m.
This will allow users to download entire series including the current
patch. Since a patch can belong to many series a dropdown is used.

Signed-off-by: Stephen Finucane <stephen@that.guru>
---
v4:
- Don't use a dropdown when only a single series is available
v3:
- Add unit tests
---
 patchwork/templates/patchwork/submission.html | 16 ++++++++++++++++
 patchwork/tests/test_detail.py                | 16 ++++++++++++++++
 2 files changed, 32 insertions(+)

Comments

Daniel Axtens April 2, 2017, 9:25 p.m.
Stephen Finucane <stephen@that.guru> writes:

> This will allow users to download entire series including the current
> patch. Since a patch can belong to many series a dropdown is used.
>
> Signed-off-by: Stephen Finucane <stephen@that.guru>
> ---
> v4:
> - Don't use a dropdown when only a single series is available
> v3:
> - Add unit tests
> ---
>  patchwork/templates/patchwork/submission.html | 16 ++++++++++++++++
>  patchwork/tests/test_detail.py                | 16 ++++++++++++++++
>  2 files changed, 32 insertions(+)
>
> diff --git a/patchwork/templates/patchwork/submission.html b/patchwork/templates/patchwork/submission.html
> index 66c1159..e6b78d8 100644
> --- a/patchwork/templates/patchwork/submission.html
> +++ b/patchwork/templates/patchwork/submission.html
> @@ -288,6 +288,22 @@ function toggle_div(link_id, headers_id)
>    <a href="{% url 'patch-mbox' patch_id=submission.id %}"
>     class="btn btn-default" role="button" data-toggle="tooltip"
>     title="Download patch mbox">mbox</a>
> +  {% if submission.series.all|length == 1 %}
> +  <a href="{% url 'series-mbox' series_id=submission.latest_series.id %}"
> +   class="btn btn-default" role="button" data-toggle="tooltip"
Again, not sure what data-toggle=tooltip does. A git grep shows
data-toggle=button, tab, pil, collapse, checkboxes, but I can't find an
=tooltip in CSS or JS.

Again, apart from that:
Reviewed-by: Daniel Axtens <dja@axtens.net>

Regards,
Daniel

> +   title="Download patch mbox">series</a>
> +  {% elif submission.series.all|length > 1 %}
> +  <button type="button" class="btn btn-default dropdown-toggle"
> +   data-toggle="dropdown">
> +   series <span class="caret"></span>
> +  </button>
> +  <ul class="dropdown-menu" role="menu">
> +  {% for series in submission.series.all %}
> +   <li><a href="{% url 'series-mbox' series_id=series.id %}"
> +    >{{ series }}</a></li>
> +  {% endfor %}
> +  </ul>
> +  {% endif %}
>   </div>
>  </h2>
>  
> diff --git a/patchwork/tests/test_detail.py b/patchwork/tests/test_detail.py
> index cf29691..ef93bbf 100644
> --- a/patchwork/tests/test_detail.py
> +++ b/patchwork/tests/test_detail.py
> @@ -25,6 +25,7 @@ from django.test import TestCase
>  from patchwork.tests.utils import create_comment
>  from patchwork.tests.utils import create_cover
>  from patchwork.tests.utils import create_patch
> +from patchwork.tests.utils import create_series
>  
>  
>  class CoverLetterViewTest(TestCase):
> @@ -50,6 +51,21 @@ class PatchViewTest(TestCase):
>          response = self.client.get(requested_url)
>          self.assertRedirects(response, redirect_url)
>  
> +    def test_series_dropdown(self):
> +        patch = create_patch()
> +        series = [create_series() for x in range(5)]
> +
> +        for series_ in series:
> +            series_.add_patch(patch, 1)
> +
> +        response = self.client.get(
> +            reverse('patch-detail', kwargs={'patch_id': patch.id}))
> +
> +        for series_ in series:
> +            self.assertContains(
> +                response,
> +                reverse('series-mbox', kwargs={'series_id': series_.id}))
> +
>  
>  class CommentRedirectTest(TestCase):
>  
> -- 
> 2.9.3
>
> _______________________________________________
> Patchwork mailing list
> Patchwork@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork

Patch hide | download patch | download mbox

diff --git a/patchwork/templates/patchwork/submission.html b/patchwork/templates/patchwork/submission.html
index 66c1159..e6b78d8 100644
--- a/patchwork/templates/patchwork/submission.html
+++ b/patchwork/templates/patchwork/submission.html
@@ -288,6 +288,22 @@  function toggle_div(link_id, headers_id)
   <a href="{% url 'patch-mbox' patch_id=submission.id %}"
    class="btn btn-default" role="button" data-toggle="tooltip"
    title="Download patch mbox">mbox</a>
+  {% if submission.series.all|length == 1 %}
+  <a href="{% url 'series-mbox' series_id=submission.latest_series.id %}"
+   class="btn btn-default" role="button" data-toggle="tooltip"
+   title="Download patch mbox">series</a>
+  {% elif submission.series.all|length > 1 %}
+  <button type="button" class="btn btn-default dropdown-toggle"
+   data-toggle="dropdown">
+   series <span class="caret"></span>
+  </button>
+  <ul class="dropdown-menu" role="menu">
+  {% for series in submission.series.all %}
+   <li><a href="{% url 'series-mbox' series_id=series.id %}"
+    >{{ series }}</a></li>
+  {% endfor %}
+  </ul>
+  {% endif %}
  </div>
 </h2>
 
diff --git a/patchwork/tests/test_detail.py b/patchwork/tests/test_detail.py
index cf29691..ef93bbf 100644
--- a/patchwork/tests/test_detail.py
+++ b/patchwork/tests/test_detail.py
@@ -25,6 +25,7 @@  from django.test import TestCase
 from patchwork.tests.utils import create_comment
 from patchwork.tests.utils import create_cover
 from patchwork.tests.utils import create_patch
+from patchwork.tests.utils import create_series
 
 
 class CoverLetterViewTest(TestCase):
@@ -50,6 +51,21 @@  class PatchViewTest(TestCase):
         response = self.client.get(requested_url)
         self.assertRedirects(response, redirect_url)
 
+    def test_series_dropdown(self):
+        patch = create_patch()
+        series = [create_series() for x in range(5)]
+
+        for series_ in series:
+            series_.add_patch(patch, 1)
+
+        response = self.client.get(
+            reverse('patch-detail', kwargs={'patch_id': patch.id}))
+
+        for series_ in series:
+            self.assertContains(
+                response,
+                reverse('series-mbox', kwargs={'series_id': series_.id}))
+
 
 class CommentRedirectTest(TestCase):