Skip to content

Commit 64a7e3f

Browse files
committed
Move resource path in the URL instead of argument
Signed-off-by: tdruez <[email protected]>
1 parent 37172d5 commit 64a7e3f

File tree

8 files changed

+40
-22
lines changed

8 files changed

+40
-22
lines changed

scanpipe/templates/scanpipe/panels/project_codebase.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</a>
99
</div>
1010
{% for node in codebase_root_tree %}
11-
<a class="panel-block" href="{% url 'project_resource_tree' project.slug %}?path={{ node.name }}">
11+
<a class="panel-block" href="{% url 'project_resource_tree' project.slug node.name %}">
1212
<span class="panel-icon">
1313
<i class="{% if node.is_dir %}fa-solid fa-folder{% else %}fa-regular fa-file{% endif %}"></i>
1414
</span>

scanpipe/templates/scanpipe/resource_tree.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@
6565
}
6666
} else {
6767
target.classList.remove("is-hidden");
68-
const response = await fetch(url + "&tree_panel=true");
68+
const fullUrl = new URL(url, window.location.origin);
69+
fullUrl.searchParams.append('tree_panel', 'true');
70+
const response = await fetch(fullUrl.toString());
6971
target.innerHTML = await response.text();
7072
target.dataset.loaded = "true";
7173
htmx.process(target);

scanpipe/templates/scanpipe/tree/resource_left_pane_tree.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{% for node in children %}
33
<li>
44
{% if node.is_dir %}
5-
<div class="tree-node is-flex is-align-items-center px-1" data-folder data-path="{{ node.path }}"{% if node.has_children %} data-target="{{ node.path|slugify }}" data-url="{% url 'project_resource_tree' slug=project.slug %}?path={{ node.path }}"{% endif %}>
5+
<div class="tree-node is-flex is-align-items-center px-1" data-folder data-path="{{ node.path }}"{% if node.has_children %} data-target="{{ node.path|slugify }}" data-url="{% url 'project_resource_tree' project.slug node.path %}"{% endif %}>
66
<span class="icon is-small chevron mr-1{% if not node.has_children %} is-invisible{% endif %} is-clickable is-flex is-align-items-center" data-chevron>
77
<i class="fas fa-chevron-right"></i>
88
</span>
@@ -12,7 +12,7 @@
1212
data-path="{{ node.path }}"
1313
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ node.path }}"
1414
hx-target="#right-pane"
15-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ node.path }}">
15+
hx-push-url="{% url 'project_resource_tree' project.slug node.path %}">
1616
<span class="icon is-small mr-2">
1717
<i class="fas fa-folder"></i>
1818
</span>
@@ -29,7 +29,7 @@
2929
data-path="{{ node.path }}"
3030
hx-get="{% url 'resource_detail' project.slug node.path %}"
3131
hx-target="#right-pane"
32-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ node.path }}">
32+
hx-push-url="{% url 'project_resource_tree' project.slug node.path %}">
3333
<span class="icon is-small mr-2">
3434
<i class="far fa-file"></i>
3535
</span>

scanpipe/templates/scanpipe/tree/resource_path_breadcrumb.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
{% if not forloop.last %}
1313
<li>
1414
<a
15-
href="{% url 'project_resource_tree' project.slug %}?path={{ subpath }}"
15+
href="{% url 'project_resource_tree' project.slug subpath %}"
1616
class="expand-in-tree"
1717
data-path="{{ subpath }}"
1818
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ subpath }}"
1919
hx-target="#right-pane"
20-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ subpath }}">
20+
hx-push-url="{% url 'project_resource_tree' project.slug subpath %}">
2121
{{ segment }}
2222
</a>
2323
</li>

scanpipe/templates/scanpipe/tree/resource_table.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
data-path="{{ parent_path }}"
1717
hx-get="{% url 'project_resource_tree_table' project.slug %}{% if parent_path %}?path={{ parent_path }}{% endif %}"
1818
hx-target="#right-pane"
19-
hx-push-url="{% url 'project_resource_tree' project.slug %}{% if parent_path %}?path={{ parent_path }}{% endif %}">
19+
hx-push-url="{% url 'project_resource_tree' project.slug parent_path %}">
2020
<td colspan="5">
2121
<div class="is-flex is-align-items-center">
2222
<span class="icon is-small mr-2">
@@ -41,19 +41,19 @@
4141
{% if resource.is_dir %}
4242
<a
4343
class="expand-in-tree"
44-
href="{% url 'project_resource_tree' project.slug %}?path={{ resource.path }}"
44+
href="{% url 'project_resource_tree' project.slug resource.path %}"
4545
data-path="{{ resource.path }}"
4646
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ resource.path }}"
4747
hx-target="#right-pane"
48-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ resource.path }}">
48+
hx-push-url="{% url 'project_resource_tree' project.slug resource.path %}">
4949
{{ resource.name }}
5050
</a>
5151
{% else %}
5252
<a
5353
href="{% url 'resource_detail' project.slug resource.path %}"
5454
hx-get="{% url 'resource_detail' project.slug resource.path %}"
5555
hx-target="#right-pane"
56-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ resource.path }}">
56+
hx-push-url="{% url 'project_resource_tree' project.slug resource.path %}">
5757
{{ resource.name }}
5858
</a>
5959
{% endif %}
@@ -86,7 +86,7 @@
8686
class="pagination-previous"
8787
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ path }}&page={{ page_obj.previous_page_number }}"
8888
hx-target="#right-pane"
89-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ path }}&page={{ page_obj.previous_page_number }}">
89+
hx-push-url="{% url 'project_resource_tree' project.slug path %}?page={{ page_obj.previous_page_number }}">
9090
Previous
9191
</a>
9292
{% endif %}
@@ -95,7 +95,7 @@
9595
class="pagination-next"
9696
hx-get="{% url 'project_resource_tree_table' project.slug %}?path={{ path }}&page={{ page_obj.next_page_number }}"
9797
hx-target="#right-pane"
98-
hx-push-url="{% url 'project_resource_tree' project.slug %}?path={{ path }}&page={{ page_obj.next_page_number }}">
98+
hx-push-url="{% url 'project_resource_tree' project.slug path %}?page={{ page_obj.next_page_number }}">
9999
Next page
100100
</a>
101101
{% endif %}

scanpipe/tests/test_views.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -672,12 +672,17 @@ def test_scanpipe_views_project_codebase_view(self):
672672

673673
(self.project1.codebase_path / "dir1").mkdir()
674674
(self.project1.codebase_path / "dir1/dir2").mkdir()
675-
(self.project1.codebase_path / "file.txt").touch()
675+
(self.project1.codebase_path / "file+.txt").touch()
676676

677677
response = self.client.get(url)
678-
resource_tree_url = reverse("project_resource_tree", args=[self.project1.slug])
679-
self.assertContains(response, f"{resource_tree_url}?path=dir1")
680-
self.assertContains(response, f"{resource_tree_url}?path=file.txt")
678+
resource_tree_url = reverse(
679+
"project_resource_tree", args=[self.project1.slug, "dir1"]
680+
)
681+
self.assertContains(response, resource_tree_url)
682+
resource_tree_url = reverse(
683+
"project_resource_tree", args=[self.project1.slug, "file+.txt"]
684+
)
685+
self.assertContains(response, resource_tree_url)
681686

682687
def test_scanpipe_views_project_codebase_view_ordering(self):
683688
url = reverse("project_codebase", args=[self.project1.slug])
@@ -1622,8 +1627,11 @@ def test_scanpipe_views_resource_tree_children_path(self):
16221627
make_resource_file(self.project1, path="parent/dir1")
16231628
make_resource_file(self.project1, path="parent/dir1/child2.txt")
16241629

1625-
url = reverse("project_resource_tree", kwargs={"slug": self.project1.slug})
1626-
response = self.client.get(url + "?path=parent&tree_panel=true")
1630+
url = reverse(
1631+
"project_resource_tree",
1632+
kwargs={"slug": self.project1.slug, "path": "parent"},
1633+
)
1634+
response = self.client.get(url + "?tree_panel=true")
16271635
children = response.context["children"]
16281636

16291637
child1 = children[0]
@@ -1656,8 +1664,11 @@ def test_scanpipe_views_project_resource_tree_table_view_with_path_directory(sel
16561664
def test_scanpipe_views_project_resource_tree_view_with_path_file(self):
16571665
resource = make_resource_file(self.project1, path="specific_file.txt")
16581666

1659-
url = reverse("project_resource_tree", kwargs={"slug": self.project1.slug})
1660-
response = self.client.get(url + f"?path={resource.path}")
1667+
url = reverse(
1668+
"project_resource_tree",
1669+
kwargs={"slug": self.project1.slug, "path": resource.path},
1670+
)
1671+
response = self.client.get(url)
16611672

16621673
self.assertEqual(200, response.status_code)
16631674
self.assertEqual("specific_file.txt", response.context["path"])

scanpipe/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@
131131
views.ProjectCodebasePanelView.as_view(),
132132
name="project_codebase",
133133
),
134+
path(
135+
"project/<slug:slug>/resource_tree/<path:path>/",
136+
views.ProjectResourceTreeView.as_view(),
137+
name="project_resource_tree",
138+
),
134139
path(
135140
"project/<slug:slug>/resource_tree/",
136141
views.ProjectResourceTreeView.as_view(),

scanpipe/views.py

Lines changed: 1 addition & 1 deletion
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 = request.GET.get("path", "")
2743+
path = self.kwargs.get("path")
27442744
parent_path = path if request.GET.get("tree_panel") == "true" else ""
27452745

27462746
children = (

0 commit comments

Comments
 (0)