Skip to content

Commit e0768bc

Browse files
committed
[BUGFIX] "Home" link in the breadcrumb redirects to the "Services" page
On some pages of Promgen, the Home link in the breadcrumb is redirected to the Services page instead of the Home page. We have fixed all these errors by using the "breadcrumb" template tag. We also made some improvements to this template tag to handle the Farm object and add the "v-pre" tag by default.
1 parent c7389a5 commit e0768bc

14 files changed

+33
-62
lines changed

promgen/templates/promgen/farm_detail.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{% extends "base.html" %}
22
{% load i18n %}
3+
{% load promgen %}
34

45
{% block content %}
56

@@ -12,11 +13,7 @@ <h1>
1213
</h1>
1314
</div>
1415

15-
<ol class="breadcrumb" v-pre>
16-
<li><a href="{% url 'service-list' %}">Home</a></li>
17-
<li><a href="{% url 'farm-list' %}">Farms</a></li>
18-
<li class="active"><a href="{% url 'farm-detail' farm.id %}">{{ farm.name }}</a></li>
19-
</ol>
16+
{% breadcrumb farm %}
2017

2118
<div class="row" v-pre>
2219

promgen/templates/promgen/farm_duplicate.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

5-
<ol class="breadcrumb">
6-
<li><a href="{% url 'service-list' %}">Home</a></li>
7-
<li class="active">Convert Farm</li>
8-
</ol>
6+
{% breadcrumb label="Convert Farm" %}
97

108
<div class="panel panel-warning" v-pre>
119
<div class="panel-heading">Error converting farm. Duplicate detected</div>

promgen/templates/promgen/farm_form.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header" v-pre>
67
<h1>Project: {{ project.name }}</h1>
78
</div>
89

9-
<ol class="breadcrumb" v-pre>
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li><a href="{% url 'service-detail' project.service.id %}">{{ project.service.name }}</a></li>
12-
<li><a href="{% url 'project-detail' project.id %}">{{ project.name }}</a></li>
13-
<li class="active">{{ view.button_label }}</li>
14-
</ol>
10+
{% breadcrumb project view.button_label %}
1511

1612
<form method="post" v-pre>{% csrf_token %}
1713
{{ form.as_p }}

promgen/templates/promgen/host_404.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block title %}No hosts found for {{ slug }}{% endblock %}
45

@@ -7,10 +8,7 @@
78
<h1>Host: {{ slug }}</h1>
89
</div>
910

10-
<ol class="breadcrumb" v-pre>
11-
<li><a href="{% url 'service-list' %}">Home</a></li>
12-
<li class="active">{{ slug }}</li>
13-
</ol>
11+
{% breadcrumb label=slug %}
1412

1513
<div class="alert alert-danger" role="alert" v-pre>
1614
No hosts found for {{ slug }}

promgen/templates/promgen/host_detail.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
{% extends "base.html" %}
22
{% load i18n %}
3+
{% load promgen %}
34
{% block content %}
45

56
<div class="page-header" v-pre>
67
<h1>Host: {{ slug }}</h1>
78
</div>
89

9-
<ol class="breadcrumb" v-pre>
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li class="active">{{ slug }}</li>
12-
</ol>
10+
{% breadcrumb label=slug %}
1311

1412
<div style="display:none" data-instance="{{slug}}" class="panel panel-danger promgen-alert">
1513
<div class="panel-heading">Alerts</div>

promgen/templates/promgen/host_form.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
{% extends "base.html" %}
22
{% load i18n %}
3+
{% load promgen %}
34

45
{% block content %}
56

67
<div class="page-header" v-pre>
78
<h1>Farm: {{ farm.name }}</h1>
89
</div>
910

10-
<ol class="breadcrumb" v-pre>
11-
<li><a href="{% url 'service-list' %}">Home</a></li>
12-
<li><a href="{% url 'service-detail' project.service.id %}">{{ project.service.name }}</a></li>
13-
<li><a href="{% url 'project-detail' project.id %}">{{ project.name }}</a></li>
14-
<li class="active">Add hosts to {{ farm.name }}</li>
15-
</ol>
11+
{% breadcrumb project label="Add hosts to "|add:farm.name %}
1612

1713
<form action="{% url 'hosts-add' farm.id %}" method="post" v-pre>{% csrf_token %}
1814
<table>

promgen/templates/promgen/host_list.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header">
67
<h1>Hosts</h1>
78
</div>
89

9-
<ol class="breadcrumb">
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li class="active">All Hosts</li>
12-
</ol>
10+
{% breadcrumb label="All Hosts" %}
11+
1312
{% include "promgen/pagination_short.html" with page_obj=host_groups %}
1413
<div class="panel panel-default">
1514
<table class="table table-bordered table-condensed">

promgen/templates/promgen/import_form.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header">
67
<h1>Import Configs</h1>
78
</div>
89

9-
<ol class="breadcrumb">
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li class="active">Import Service</li>
12-
</ol>
10+
{% breadcrumb label="Import Service" %}
1311

1412
<div class="panel panel-default">
1513
<div class="panel-heading">Import Targets</div>

promgen/templates/promgen/link_farm.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header" v-pre>
67
<h1>Project: {{ project.name }}</h1>
78
</div>
89

9-
<ol class="breadcrumb" v-pre>
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li><a href="{% url 'service-detail' project.service.id %}">{{ project.service.name }}</a></li>
12-
<li><a href="{% url 'project-detail' project.id %}">{{ project.name }}</a></li>
13-
<li class="active">Link Farm {{ source }}</li>
14-
</ol>
10+
{% breadcrumb project label="Link Farm "|add:source %}
1511

1612
<div class="panel panel-default" v-pre>
1713
<div class="panel-heading">

promgen/templates/promgen/rule_import.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header">
67
<h1>Import Rules</h1>
78
</div>
89

9-
<ol class="breadcrumb">
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li class="active">Import Rule</li>
12-
</ol>
10+
{% breadcrumb label="Import Rule" %}
1311

1412
<div class="panel panel-default">
1513
<div class="panel-heading">Import Rules</div>

promgen/templates/promgen/rule_list.html

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
<h1>Rules</h1>
88
</div>
99

10-
<ol class="breadcrumb">
11-
<li><a href="{% url 'service-list' %}">Home</a></li>
12-
<li class="active">List Rules</li>
13-
</ol>
10+
{% breadcrumb label="List Rules" %}
1411
{% include "promgen/pagination_short.html" %}
1512
{% regroup rule_list by content_object as grouped_rule_list %}
1613

promgen/templates/promgen/search.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
{% extends "base.html" %}
22
{% load i18n %}
3+
{% load promgen %}
34
{% block content %}
45

56
<div class="page-header">
67
<h1>Search</h1>
78
</div>
89

9-
<ol class="breadcrumb">
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li class="active">Search</li>
12-
</ol>
10+
{% breadcrumb label="Search" %}
1311

1412
{% include "promgen/pagination_short.html" %}
1513
{% if service_list %}

promgen/templates/promgen/url_form.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
{% extends "base.html" %}
2+
{% load promgen %}
23

34
{% block content %}
45

56
<div class="page-header">
67
<h1 v-pre>Project: {{ project.name }}</h1>
78
</div>
89

9-
<ol class="breadcrumb" v-pre>
10-
<li><a href="{% url 'service-list' %}">Home</a></li>
11-
<li><a href="{% url 'service-detail' project.service.id %}">{{ project.service.name }}</a></li>
12-
<li><a href="{% url 'project-detail' project.id %}">{{ project.name }}</a></li>
13-
<li class="active">Add URL to {{ farm.name }}</li>
14-
</ol>
10+
{% breadcrumb project label="Add URL" %}
1511

1612
<form action="{% url 'url-new' project.id %}" method="post" v-pre>{% csrf_token %}
1713
<table>

promgen/templatetags/promgen.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ def sender(obj):
155155
if obj.content_type.model == "project":
156156
yield from project(obj.content_object)
157157

158+
def farm(obj):
159+
yield reverse("farm-list"), _("Farms")
160+
yield obj.get_absolute_url(), obj.name
161+
158162
def generator():
159163
yield reverse("home"), _("Home")
160164
if isinstance(instance, models.Sender):
@@ -169,9 +173,11 @@ def generator():
169173
yield from rule(instance)
170174
if isinstance(instance, models.Alert):
171175
yield from alert(instance)
176+
if isinstance(instance, models.Farm):
177+
yield from farm(instance)
172178

173179
def to_tag():
174-
yield '<ol class="breadcrumb">'
180+
yield '<ol class="breadcrumb" v-pre>'
175181
for href, text in generator():
176182
yield format_html('<li><a href="{}">{}</a></li>', mark_safe(href), text)
177183
if label:

0 commit comments

Comments
 (0)