Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
UI: Ellipsize playbook paths from the left when it's too long
Ellipsizing from the right is not helpful since it tends to hide the most important parts from the paths like the playbook file and the directory it's located in. truncatepath is taken from an implementation in ara 0.x [1]. [1]: fac4d33 Change-Id: Ia2b8121fb497490e702e244dd3b31db55031c998
- Loading branch information
David Moreau Simard
committed
Apr 20, 2020
1 parent
6e881dd
commit fb898cc
Showing
2 changed files
with
53 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# Copyright (c) 2020 Red Hat, Inc. | ||
# | ||
# This file is part of ARA Records Ansible. | ||
# | ||
# ARA is free software: you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License as published by | ||
# the Free Software Foundation, either version 3 of the License, or | ||
# (at your option) any later version. | ||
# | ||
# ARA is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU General Public License | ||
# along with ARA. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
import os | ||
|
||
from django import template | ||
from django.template.defaultfilters import stringfilter | ||
|
||
register = template.Library() | ||
|
||
|
||
@register.filter(name="truncatepath") | ||
@stringfilter | ||
def truncatepath(path, count): | ||
""" | ||
Truncates a path to less than 'count' characters. | ||
Paths are truncated on path separators. | ||
We prepend an ellipsis when we return a truncated path. | ||
""" | ||
try: | ||
length = int(count) | ||
except ValueError: | ||
return path | ||
|
||
# Return immediately if there's nothing to truncate | ||
if len(path) < length: | ||
return path | ||
|
||
dirname, basename = os.path.split(path) | ||
while dirname: | ||
if len(dirname) + len(basename) < length: | ||
break | ||
dirlist = dirname.split("/") | ||
dirlist.pop(0) | ||
dirname = "/".join(dirlist) | ||
|
||
return "..." + os.path.join(dirname, basename) |