Skip to content

Commit a03e52f

Browse files
committed
Move resource path in the URL path instead of query string
Signed-off-by: tdruez <[email protected]>
1 parent 5aa3299 commit a03e52f

File tree

7 files changed

+33
-23
lines changed

7 files changed

+33
-23
lines changed

scanpipe/templates/scanpipe/resource_tree.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
{% if resource.is_file %}
3333
hx-get="{% url 'resource_detail' project.slug resource.path %}"
3434
{% else %}
35-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ path }}"
35+
hx-get="{% url 'project_resource_tree_table' project.slug path %}"
3636
{% endif %}
3737
hx-trigger="load"
3838
hx-target="this">

scanpipe/templates/scanpipe/tree/resource_left_pane_tree.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
class="is-flex is-align-items-center folder-meta is-clickable"
1111
data-folder-click
1212
data-path="{{ node.path }}"
13-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ node.path }}"
13+
hx-get="{% url 'project_resource_tree_table' project.slug node.path %}"
1414
hx-target="#right-pane"
1515
hx-push-url="{% url 'project_resource_tree' project.slug node.path %}">
1616
<span class="icon is-small mr-2">

scanpipe/templates/scanpipe/tree/resource_path_breadcrumb.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
href="{% url 'project_resource_tree' project.slug subpath %}"
1616
class="expand-in-tree"
1717
data-path="{{ subpath }}"
18-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ subpath }}"
18+
hx-get="{% url 'project_resource_tree_table' project.slug subpath %}"
1919
hx-target="#right-pane"
2020
hx-push-url="{% url 'project_resource_tree' project.slug subpath %}">
2121
{{ segment }}

scanpipe/templates/scanpipe/tree/resource_table.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<tr
1515
class="expand-in-tree is-clickable"
1616
data-path="{{ parent_path }}"
17-
hx-get="{% url 'project_resource_tree_table' project.slug %}{% if parent_path %}?path={{ parent_path }}{% endif %}"
17+
hx-get="{% url 'project_resource_tree_table' project.slug parent_path %}"
1818
hx-target="#right-pane"
1919
hx-push-url="{% url 'project_resource_tree' project.slug parent_path %}">
2020
<td colspan="5">
@@ -43,7 +43,7 @@
4343
class="expand-in-tree"
4444
href="{% url 'project_resource_tree' project.slug resource.path %}"
4545
data-path="{{ resource.path }}"
46-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ resource.path }}"
46+
hx-get="{% url 'project_resource_tree_table' project.slug resource.path %}"
4747
hx-target="#right-pane"
4848
hx-push-url="{% url 'project_resource_tree' project.slug resource.path %}">
4949
{{ resource.name }}
@@ -84,7 +84,7 @@
8484
{% if page_obj.has_previous %}
8585
<a
8686
class="pagination-previous"
87-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ path }}&page={{ page_obj.previous_page_number }}"
87+
hx-get="{% url 'project_resource_tree_table' project.slug path %}?page={{ page_obj.previous_page_number }}"
8888
hx-target="#right-pane"
8989
hx-push-url="{% url 'project_resource_tree' project.slug path %}?page={{ page_obj.previous_page_number }}">
9090
Previous
@@ -93,7 +93,7 @@
9393
{% if page_obj.has_next %}
9494
<a
9595
class="pagination-next"
96-
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ path }}&page={{ page_obj.next_page_number }}"
96+
hx-get="{% url 'project_resource_tree_table' project.slug path%}?page={{ page_obj.next_page_number }}"
9797
hx-target="#right-pane"
9898
hx-push-url="{% url 'project_resource_tree' project.slug path %}?page={{ page_obj.next_page_number }}">
9999
Next page

scanpipe/tests/test_views.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1644,22 +1644,26 @@ def test_scanpipe_views_resource_tree_children_path(self):
16441644
self.assertTrue(dir1.has_children)
16451645

16461646
def test_scanpipe_views_project_resource_tree_table_view_with_path_directory(self):
1647-
make_resource_directory(self.project1, path="parent")
1648-
make_resource_file(self.project1, path="parent/child1.txt")
1649-
make_resource_file(self.project1, path="parent/child2.py")
1647+
resource1 = make_resource_directory(self.project1, path="parent+special&chars")
1648+
make_resource_file(self.project1, path="parent+special&chars/child1.txt")
1649+
make_resource_file(self.project1, path="parent+special&chars/child2.py")
16501650

16511651
url = reverse(
1652-
"project_resource_tree_table", kwargs={"slug": self.project1.slug}
1652+
"project_resource_tree_table",
1653+
kwargs={"slug": self.project1.slug, "path": resource1.path},
16531654
)
1654-
response = self.client.get(url + "?path=parent")
1655+
response = self.client.get(url)
16551656

16561657
self.assertEqual(200, response.status_code)
1657-
self.assertEqual("parent", response.context["path"])
1658+
self.assertEqual(resource1.path, response.context["path"])
16581659
resources = list(response.context["resources"])
16591660
self.assertEqual(2, len(resources))
16601661

16611662
resource_paths = [r.path for r in resources]
1662-
self.assertEqual(["parent/child1.txt", "parent/child2.py"], resource_paths)
1663+
self.assertEqual(
1664+
["parent+special&chars/child1.txt", "parent+special&chars/child2.py"],
1665+
resource_paths,
1666+
)
16631667

16641668
def test_scanpipe_views_project_resource_tree_view_with_path_file(self):
16651669
resource = make_resource_file(self.project1, path="specific_file.txt")
@@ -1678,10 +1682,10 @@ def test_scanpipe_views_project_resource_tree_table_view_empty_directory(self):
16781682
make_resource_directory(self.project1, path="empty_dir")
16791683

16801684
url = reverse(
1681-
"project_resource_tree_table", kwargs={"slug": self.project1.slug}
1685+
"project_resource_tree_table",
1686+
kwargs={"slug": self.project1.slug, "path": "empty_dir"},
16821687
)
1683-
response = self.client.get(url + "?path=empty_dir")
1684-
1688+
response = self.client.get(url)
16851689
self.assertEqual(200, response.status_code)
16861690
self.assertEqual("empty_dir", response.context["path"])
16871691
resources = list(response.context["resources"])
@@ -1695,17 +1699,18 @@ def test_scanpipe_views_project_resource_tree_table_view_pagination(self):
16951699
make_resource_file(self.project1, path="parent/file3.txt", parent_path="parent")
16961700

16971701
url = reverse(
1698-
"project_resource_tree_table", kwargs={"slug": self.project1.slug}
1702+
"project_resource_tree_table",
1703+
kwargs={"slug": self.project1.slug, "path": "parent"},
16991704
)
17001705

1701-
response = self.client.get(url + "?path=parent")
1706+
response = self.client.get(url)
17021707
self.assertEqual(200, response.status_code)
17031708
self.assertTrue(response.context["is_paginated"])
17041709
self.assertEqual(1, response.context["page_obj"].number)
17051710
self.assertTrue(response.context["page_obj"].has_next())
17061711
self.assertFalse(response.context["page_obj"].has_previous())
17071712

1708-
response = self.client.get(url + "?path=parent&page=2")
1713+
response = self.client.get(url + "?page=2")
17091714
self.assertEqual(200, response.status_code)
17101715
self.assertEqual(2, response.context["page_obj"].number)
17111716
self.assertFalse(response.context["page_obj"].has_next())

scanpipe/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@
141141
views.ProjectResourceTreeView.as_view(),
142142
name="project_resource_tree",
143143
),
144+
path(
145+
"project/<slug:slug>/resource_tree_table/<path:path>/",
146+
views.ProjectResourceTreeTableView.as_view(),
147+
name="project_resource_tree_table",
148+
),
144149
path(
145150
"project/<slug:slug>/resource_tree_table/",
146151
views.ProjectResourceTreeTableView.as_view(),

scanpipe/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2740,7 +2740,7 @@ class ProjectResourceTreeView(ConditionalLoginRequired, generic.DetailView):
27402740
def get(self, request, *args, **kwargs):
27412741
slug = self.kwargs.get("slug")
27422742
project = get_object_or_404(Project, slug=slug)
2743-
path = self.kwargs.get("path")
2743+
path = self.kwargs.get("path", "")
27442744
parent_path = path if request.GET.get("tree_panel") == "true" else ""
27452745

27462746
children = (
@@ -2781,7 +2781,7 @@ class ProjectResourceTreeTableView(
27812781
context_object_name = "resources"
27822782

27832783
def get_queryset(self):
2784-
path = self.request.GET.get("path", "")
2784+
path = self.kwargs.get("path", "")
27852785
return (
27862786
super()
27872787
.get_queryset()
@@ -2800,7 +2800,7 @@ def get_queryset(self):
28002800

28012801
def get_context_data(self, **kwargs):
28022802
context = super().get_context_data(**kwargs)
2803-
path = self.request.GET.get("path", "")
2803+
path = self.kwargs.get("path", "")
28042804
context["path"] = path
28052805

28062806
segments = path.strip("/").split("/")

0 commit comments

Comments
 (0)