<td class="variable_value"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:153}}</a></td>
<td class="file"><a data-toggle="modal" href="#variable-{{variable.pk}}">
{% if variable.vhistory.all %} {% autoescape off %}
- {{variable.vhistory.all | filter_setin_files:file_filter }}
+ {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names}}
{% endautoescape %} {% endif %}
</a></td>
<td class="description">
<tbody>
{% for vh in variable.vhistory.all %}
<tr>
- <td>{{forloop.counter}}</td><td>{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
+ <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
</tr>
{%endfor%}
</tbody>
return False
except ValueError:
return False
+
+@register.filter
+def cut_layer_path_prefix(fullpath,layer_names):
+ ### if some part of the full local path to a layer matches
+ ### an entry in layer_names (sorted desc), return the layer
+ ### name relative path.
+ for lname in layer_names:
+ # import rpdb; rpdb.set_trace()
+ # only try layer names that are non-trivial to avoid false matches
+ if len(lname) >= 4:
+ # match layer name with as a subdir / or for remote layers /_
+ if re.search('/' + lname, fullpath) or re.search('/_' + lname, fullpath):
+ parts = re.split(lname, fullpath, 1)
+ return lname + parts[1]
+ return fullpath
variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1))
+ layers = Layer.objects.filter(layer_version_layer__projectlayer__project__build=build_id).order_by("-name")
+ layer_names = map(lambda layer : layer.name, layers)
+ # special case for meta built-in layer
+ layer_names.append('meta')
+
# show all matching files (not just the last one)
file_filter= search_term + ":"
if filter_string.find('/conf/') > 0:
'total_count':queryset_with_search.count(),
'default_orderby' : 'variable_name:+',
'search_term':search_term,
+ 'layer_names' : layer_names,
# Specifies the display of columns for the table, appearance in "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [
{'name': 'Variable',