bitbake: toastergui: show relative paths in configvars view
PATCH 1/1 bitbake: toastergui: show relative paths in configvars view
Strip topdir from paths to config files in configvars view. Got rid of specific filter cut_layer_path_prefix.
[YOCTO #7463]
--- .../lib/toaster/toastergui/templates/configvars.html | 4 ++-- .../lib/toaster/toastergui/templatetags/projecttags.py | 17 ++++------------- bitbake/lib/toaster/toastergui/views.py | 8 ++------ 3 files changed, 8 insertions(+), 21 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +2 -2
@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">
@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +4 -13
@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath import re from django import template from django.utils import timezone
@@ -313,16 +314,6 @@ def is_shaid(text): 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 +def cut_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) else fullpath
bitbake/lib/toaster/toastergui/views.py +2 -6
@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1326,11 +1327,6 @@ def configvars(request, build_id): 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:
@@ -1353,7 +1349,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',
Signature · 1 line
2.1.4
Quoted 2 lines · Ed Bartosh
Strip topdir from paths to config files in configvars view. Got rid of specific filter
cut_layer_path_prefix.
The paths in the variables table are not looking as expected when I apply this. The paths to local.conf and bblayers.conf do show now as relative paths, but paths to files inside a layer become full paths (instead of relative paths). So instead of seeing
meta/conf/bitbake.conf
I see
/home/<user>/<poky_dir>/meta/conf/bitbake.conf
I've uploaded an screenshot here
All paths in this table should be relative paths.
Cheers
Belén
Quoted 126 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
.../lib/toaster/toastergui/templates/configvars.html | 4 ++--.../lib/toaster/toastergui/templatetags/projecttags.py| 17
++++-------------bitbake/lib/toaster/toastergui/views.py| 8 ++------3 files changed, 8 insertions(+), 21 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -55,7 +55,7 @@ <td class="variable_value"><a data-toggle="modal"href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1 53}}</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
| cut_layer_path_prefix:layer_names}}
+ {{variable.vhistory.all | filter_setin_files:file_filter
| cut_path_prefix:topdir}}{% endautoescape %} {% endif %} </a></td> <td class="description">bitbake/lib/toaster/toastergui/templates/configvars.html +0
-1@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:topdir}}</t d><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -313,16 +314,6 @@ def is_shaid(text): return False@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-7-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 falsematches
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-3- 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):
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +3
-3- parts = re.split(lname, fullpath, 1) - return lname + parts[1] - return fullpath +def cut_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) elsefullpath
bitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +0
-1@@ -1326,11 +1327,6 @@ def configvars(request, build_id): variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) - layers =
Layer.objects.filter(layer_version_layer__projectlayer__project__build=bui ld_id).order_by("-name")bitbake/lib/toaster/toastergui/views.py +1
-5- 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:@@ -1353,7 +1349,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Signature · 7 lines
2.1.4 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
PATCH 1/1 bitbake: toastergui: show relative paths in configvars view
Stripped topdir from paths to config files in configvars view.
[YOCTO #7463]
--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 6 ++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +2 -2
@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">
@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +6 -0
@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath import re from django import template from django.utils import timezone
@@ -326,3 +327,8 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) else fullpath
bitbake/lib/toaster/toastergui/views.py +2 -0
@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',
Signature · 1 line
2.1.4
On Tue, May 05, 2015 at 03:57:13PM +0300, Ed Bartosh wrote:
Sorry, wrong list. Please ignore.
Quoted 77 lines
Stripped topdir from paths to config files in configvars view.
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 6 ++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +2
-2@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +6
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath import re from django import template from django.utils import timezone@@ -326,3 +327,8 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) else fullpathbitbake/lib/toaster/toastergui/views.py +2
-0@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',Signature · 1 line
2.1.4
Signature · 3 lines
-- Regards, Ed
PATCH 1/1 bitbake: toastergui: show relative paths in configvars view
In reply to Barros Pena, BelenStripped topdir from paths to config files in configvars view.
[YOCTO #7463]
--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 6 ++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +2 -2
@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">
@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +6 -0
@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath import re from django import template from django.utils import timezone
@@ -326,3 +327,8 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) else fullpath
bitbake/lib/toaster/toastergui/views.py +2 -0
@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',
Signature · 1 line
2.1.4
Quoted 1 line · Ed Bartosh
Stripped topdir from paths to config files in configvars view.
Almost! Most paths are now ok, but we still seem to be showing full paths for files inside the /bitbake directory.
It can be seen quite well it in this screenshot:
http://i.imgur.com/Kk4WmeB.png
Thanks!!
Belén
Quoted 97 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 6 ++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -55,7 +55,7 @@ <td class="variable_value"><a data-toggle="modal"href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1 53}}</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
| cut_layer_path_prefix:layer_names}}
+ {{variable.vhistory.all | filter_setin_files:file_filter
| cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}}{% endautoescape %} {% endif %} </a></td> <td class="description">bitbake/lib/toaster/toastergui/templates/configvars.html +0
-1@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{ vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +5
-0@@ -326,3 +327,8 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir from the fullpath.""" + return relpath(fullpath, topdir) if fullpath.startswith(topdir) elsefullpath
bitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +1
-0@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Signature · 7 lines
2.1.4 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
PATCH v3 1/1 bitbake: toastergui: show relative paths in configvars view
Stripped topdir and its parent directory from paths to config files in configvars view.
[YOCTO #7463]
tbs
--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 9 +++++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +2 -2
@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">
@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +9 -0
@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath, dirname import re from django import template from django.utils import timezone
@@ -326,3 +327,11 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir and its parent directory from the fullpath.""" + for prefix in (topdir, dirname(topdir)): + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) + return fullpath
bitbake/lib/toaster/toastergui/views.py +2 -0
@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',
Signature · 1 line
2.1.4
PATCH v4 1/1 bitbake: toastergui: show relative paths in configvars view
In reply to Barros Pena, BelenStripped topdir and its parent directory from paths to config files in configvars view.
[YOCTO #7463]
--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 9 +++++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +2 -2
@@ -55,7 +55,7 @@ <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 | cut_layer_path_prefix:layer_names}} + {{variable.vhistory.all | filter_setin_files:file_filter | cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}} {% endautoescape %} {% endif %} </a></td> <td class="description">
@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +9 -0
@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath, dirname import re from django import template from django.utils import timezone
@@ -326,3 +327,11 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir and its parent directory from the fullpath.""" + for prefix in (topdir, dirname(topdir)): + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) + return fullpath
bitbake/lib/toaster/toastergui/views.py +2 -0
@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # 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',
Signature · 1 line
2.1.4
Hi Ed,
Thanks for the patch set - impressive work :).
I would appreciate if, in the future, you could put all patches on a branch on poky-contrib and mail in the branch name in the subject, such as:
[review-request] branch/name
This would trigger the yocto automated tester which doesn't currently process individual patches.
Thank you,
Alex
Quoted 99 lines · Ed Bartosh
Stripped topdir and its parent directory from paths to config files in configvars view.
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>--- bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 9 +++++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -55,7 +55,7 @@ <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
| cut_layer_path_prefix:layer_names}}
+ {{variable.vhistory.all | filter_setin_files:file_filter
| cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}}{% endautoescape %} {% endif %} </a></td> <td class="description">bitbake/lib/toaster/toastergui/templates/configvars.html +0
-1@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
+ <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td></tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +9
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from datetime import datetime, timedelta +from os.path import relpath, dirname import re from django import template from django.utils import timezone@@ -326,3 +327,11 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir and its parent directory from the fullpath.""" + for prefix in (topdir, dirname(topdir)): + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) + return fullpathbitbake/lib/toaster/toastergui/views.py +2
-0@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',--
2.1.4--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster
Signature · 3 lines
Alex Damian Yocto Project SSG / OTC
Quoted 2 lines · Ed Bartosh
Stripped topdir and its parent directory from paths to config files in configvars view.
Ed, I am so sorry about this :( But there are still a couple of issues with the paths:
1. Paths to files inside /bitbake are showing the parent of the /bitbake directory. Here is an example in the BBFILES variable
http://i.imgur.com/xfUutMN.png
I spoke to Paul Eggleton and he thinks we should be showing that path from the /bitbake directory. So in the screenshot above, the path should be:
bitbake/lib/bb/cooker.py
2. Something strange is going on when you apply a filter to the table. It's a bit hard to explain, so this is how to reproduce it.
* Build something. When the build is done, click on the build target name, then click on 'Configuration' in the left nav.
* Search for 'DISTRO_VERSION'. The path looks as expected.
* Now click on the little filter button in the "Set in file" column heading.
* In the options listed, select the radio button for "Distro configuration variables", then click the "Apply" button
The table shows the paths to the 2 distro files that touched the DISTRO_VERSION variable: this works as expected. But the second path is showing in full. However, if you click on the variable name, in the history the paths display correctly.
This only happens when you use a filter AND a single table cell shows more than one path.
I am really sorry about this: didn't think this was going to be so tricky :/
Cheers
Belén
Quoted 99 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
bitbake/lib/toaster/toastergui/templates/configvars.html | 4 ++-- bitbake/lib/toaster/toastergui/templatetags/projecttags.py | 9 +++++++++ bitbake/lib/toaster/toastergui/views.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -55,7 +55,7 @@ <td class="variable_value"><a data-toggle="modal"href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1 53}}</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
| cut_layer_path_prefix:layer_names}}
+ {{variable.vhistory.all | filter_setin_files:file_filter
| cut_layer_path_prefix:layer_names | cut_topdir_path_prefix:topdir}}{% endautoescape %} {% endif %} </a></td> <td class="description">bitbake/lib/toaster/toastergui/templates/configvars.html +0
-1@@ -115,7 +115,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names|cut_topdir_path_prefix:topdir}}</td><td>{{vh.operation}}</td><td>{{ vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath, dirname
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +8
-0@@ -326,3 +327,11 @@ def cut_layer_path_prefix(fullpath,layer_names): parts = re.split(lname, fullpath, 1) return lname + parts[1] return fullpath + [email protected] +def cut_topdir_path_prefix(fullpath, topdir): + """Cut topdir and its parent directory from the fullpath.""" + for prefix in (topdir, dirname(topdir)): + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) + return fullpathbitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +39,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +1
-0@@ -1326,6 +1327,7 @@ def configvars(request, build_id): 'default_orderby' : 'variable_name:+', 'search_term':search_term, 'layer_names' : layer_names, + 'topdir': dirname(build_dir), # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Signature · 7 lines
2.1.4 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
PATCH v5 1/1 bitbake: toastergui: show relative paths in configvars view
Reworked filtering of config paths.
Stripped clone paths, topdir and its parent directory from the paths to config files in configvars view.
[YOCTO #7463]
--- .../toaster/toastergui/templates/configvars.html | 10 +-- .../toaster/toastergui/templatetags/projecttags.py | 76 +++++++--------------- bitbake/lib/toaster/toastergui/views.py | 19 ++++-- 3 files changed, 42 insertions(+), 63 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +6 -4
@@ -54,9 +54,11 @@ <td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td> <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 | cut_layer_path_prefix:layer_names}} - {% endautoescape %} {% endif %} + {% if variable.vhistory.all %} + {% for path in variable.vhistory.all|filter_setin_files:file_filter %} + {{path|cut_path_prefix:dirstostrip}}<p> + {% endfor %} + {% endif %} </a></td> <td class="description"> {% if variable.description %}
@@ -115,7 +117,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +23 -53
92 lines not on this page · raw message
bitbake/lib/toaster/toastergui/views.py +13 -6
@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency from orm.models import Target_Installed_Package, Target_File, Target_Image_File, BuildArtifact +from bldcontrol.models import BuildEnvironment, BuildRequest +from bldcontrol import bbcontroller from django.views.decorators.cache import cache_control from django.core.urlresolvers import reverse from django.core.exceptions import MultipleObjectsReturned
@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1298,11 +1301,6 @@ def configvars(request, build_id): 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:
@@ -1315,6 +1313,15 @@ def configvars(request, build_id): file_filter += '/bitbake.conf' build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_log_path) + clones = [] + for breq in BuildRequest.objects.filter(build_id=build_id): + bc = bbcontroller.getBuildEnvironmentController(pk = breq.environment.id) + for brl in breq.brlayer_set.all(): + localdirname = bc.getGitCloneDirectory(brl.giturl, brl.commit) + if not localdirname.startswith("/"): + localdirname = os.path.join(bc.be.sourcedir, localdirname) + clones.append(localdirname) + context = { 'objectname': 'configvars', 'object_search_display':'BitBake variables',
@@ -1325,7 +1332,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'dirstostrip': clones + [dirname(build_dir), dirname(dirname(build_dir))], # 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',
Signature · 1 line
2.1.4
PATCH v6 1/1 bitbake: toastergui: show relative paths in configvars view
In reply to Barros Pena, BelenReworked filtering of config paths.
Stripped clone paths, topdir and its parent directory from the paths to config files in configvars view.
[YOCTO #7463]
--- .../toaster/toastergui/templates/configvars.html | 10 +-- .../toaster/toastergui/templatetags/projecttags.py | 76 +++++++--------------- bitbake/lib/toaster/toastergui/views.py | 19 ++++-- 3 files changed, 42 insertions(+), 63 deletions(-)
bitbake/lib/toaster/toastergui/templates/configvars.html +6 -4
@@ -54,9 +54,11 @@ <td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td> <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 | cut_layer_path_prefix:layer_names}} - {% endautoescape %} {% endif %} + {% if variable.vhistory.all %} + {% for path in variable.vhistory.all|filter_setin_files:file_filter %} + {{path|cut_path_prefix:dirstostrip}}<p> + {% endfor %} + {% endif %} </a></td> <td class="description"> {% if variable.description %}
@@ -115,7 +117,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> - <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer_names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> </tr> {%endfor%} </tbody>
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +23 -53
92 lines not on this page · raw message
bitbake/lib/toaster/toastergui/views.py +13 -6
@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable from orm.models import Task_Dependency, Recipe_Dependency, Package, Package_File, Package_Dependency from orm.models import Target_Installed_Package, Target_File, Target_Image_File, BuildArtifact +from bldcontrol.models import BuildEnvironment, BuildRequest +from bldcontrol import bbcontroller from django.views.decorators.cache import cache_control from django.core.urlresolvers import reverse from django.core.exceptions import MultipleObjectsReturned
@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, date from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json +from os.path import dirname # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately
@@ -1298,11 +1301,6 @@ def configvars(request, build_id): 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:
@@ -1315,6 +1313,15 @@ def configvars(request, build_id): file_filter += '/bitbake.conf' build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_log_path) + clones = [] + for breq in BuildRequest.objects.filter(build_id=build_id): + bc = bbcontroller.getBuildEnvironmentController(pk = breq.environment.id) + for brl in breq.brlayer_set.all(): + localdirname = bc.getGitCloneDirectory(brl.giturl, brl.commit) + if not localdirname.startswith("/"): + localdirname = os.path.join(bc.be.sourcedir, localdirname) + clones.append(localdirname) + context = { 'objectname': 'configvars', 'object_search_display':'BitBake variables',
@@ -1325,7 +1332,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'dirstostrip': clones + [dirname(build_dir), dirname(dirname(build_dir))], # 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',
Signature · 1 line
2.1.4
Quoted 4 lines · Ed Bartosh
Reworked filtering of config paths.
Stripped clone paths, topdir and its parent directory from the paths to config files in configvars view.
This works for me. Thanks!
Belén
Quoted 234 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
.../toaster/toastergui/templates/configvars.html | 10 +--.../toaster/toastergui/templatetags/projecttags.py| 76
+++++++---------------bitbake/lib/toaster/toastergui/views.py| 19 ++++--3 files changed, 42 insertions(+), 63 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -54,9 +54,11 @@ <td class="variable_name"><a data-toggle="modal"href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
<td class="variable_value"><a data-toggle="modal"
href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1 53}}</a></td><td class="file"><a data-toggle="modal"href="#variable-{{variable.pk}}">
bitbake/lib/toaster/toastergui/templates/configvars.html +0
-2- {% if variable.vhistory.all %} {% autoescape off %} - {{variable.vhistory.all | filter_setin_files:file_filter| cut_layer_path_prefix:layer_names}}
bitbake/lib/toaster/toastergui/templates/configvars.html +2
-1- {% endautoescape %} {% endif %} + {% if variable.vhistory.all %} + {% for path invariable.vhistory.all|filter_setin_files:file_filter %}
bitbake/lib/toaster/toastergui/templates/configvars.html +3
-1+ {{path|cut_path_prefix:dirstostrip}}<p> + {% endfor %} + {% endif %} </a></td> <td class="description"> {% if variable.description %}@@ -115,7 +117,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip }}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -182,47 +183,23 @@ def variable_parent_name(value): return re.sub('_[a-z].*', '', value)@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-37-def filter_setin_files(file_list,matchstr): - """ filter/search the 'set in' file lists. Note - that this output is not autoescaped to allow - the <p> marks, but this is safe as the data - is file paths - """ - - # no filters, show last file (if any) - if matchstr == ":": - if file_list: - return file_list[len(file_list)-1].file_name - else: - return '' - - search, filter = matchstr.partition(':')[::2] - htmlstr="" - # match only filters - if search == '': - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - - # match only search string, plus always last file - if filter == "": - for i in range(len(file_list)-1): - if re.search(search,file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - if htmlstr.find(file_list[len(file_list)-1].file_name) < 0: - htmlstr += file_list[len(file_list)-1].file_name - return htmlstr - - # match filter or search string - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name) or
re.search(search,file_list[i].file_name):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +17
-4- if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - +def filter_setin_files(file_list, matchstr): + """Filter/search the 'set in' file lists.""" + result = [] + search, filter = matchstr.split(':') + for pattern in (search, filter): + if pattern: + for fobj in file_list: + fname = fobj.file_name + if fname not in result and re.search(pattern, fname): + result.append(fname) + + # no filter, show last file (if any) + last = list(file_list)[-1].file_name + if not filter and last not in result: + result.append(last) + + return result@register.filter
defstring_slice(strvar,slicevar):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -313,16 +290,9 @@ def is_shaid(text): return False@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-7-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 falsematches
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-3- 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):
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +5
-2- parts = re.split(lname, fullpath, 1) - return lname + parts[1] +def cut_path_prefix(fullpath, prefixes): + """Cut path prefix from fullpath.""" + for prefix in prefixes: + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) return fullpathbitbake/lib/toaster/toastergui/views.py +0
-0@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect from orm.models import Build, Target, Task, Layer, Layer_Version,Recipe, LogMessage, Variable
from orm.models importTask_Dependency,Recipe_Dependency, Package,Package_File,Package_Dependency
from orm.models importTarget_Installed_Package,Target_File,Target_Image_File, BuildArtifactbitbake/lib/toaster/toastergui/views.py +2
-0+from bldcontrol.models import BuildEnvironment, BuildRequest +from bldcontrol import bbcontrollerfrom django.views.decorators.cache import
cache_controlfrom django.core.urlresolvers import reverse
from django.core.exceptions import MultipleObjectsReturnedbitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +0
-1@@ -1298,11 +1301,6 @@ def configvars(request, build_id): variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) - layers =
Layer.objects.filter(layer_version_layer__projectlayer__project__build=bui ld_id).order_by("-name")bitbake/lib/toaster/toastergui/views.py +0
-4- 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:@@ -1315,6 +1313,15 @@ def configvars(request, build_id): file_filter += '/bitbake.conf'build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_lo
g_path)bitbake/lib/toaster/toastergui/views.py +3
-0+ clones = [] + for breq in BuildRequest.objects.filter(build_id=build_id): + bc = bbcontroller.getBuildEnvironmentController(pk =breq.environment.id)
bitbake/lib/toaster/toastergui/views.py +2
-0+ for brl in breq.brlayer_set.all(): + localdirname = bc.getGitCloneDirectory(brl.giturl,brl.commit)
bitbake/lib/toaster/toastergui/views.py +2
-0+ if not localdirname.startswith("/"): + localdirname = os.path.join(bc.be.sourcedir,localdirname)
bitbake/lib/toaster/toastergui/views.py +3
-1+ clones.append(localdirname) + context = { 'objectname': 'configvars', 'object_search_display':'BitBake variables',@@ -1325,7 +1332,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'dirstostrip': clones + [dirname(build_dir), dirname(dirname(build_dir))], # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Signature · 7 lines
2.1.4 -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
Taken for submission,
Can you please post new patches as branches on poky-contrib ?
Thank you,
Alex
Quoted 253 lines · Belen
Quoted 4 lines · Ed Bartosh
Reworked filtering of config paths.
Stripped clone paths, topdir and its parent directory from the paths to config files in configvars view.
This works for me. Thanks!
Belén
Quoted 18 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
.../toaster/toastergui/templates/configvars.html | 10 +--.../toaster/toastergui/templatetags/projecttags.py| 76
+++++++---------------bitbake/lib/toaster/toastergui/views.py| 19 ++++--3 files changed, 42 insertions(+), 63 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -54,9 +54,11 @@ <td class="variable_name"><a data-toggle="modal"Quoted 3 lines
href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
<td class="variable_value"><a data-toggle="modal"
href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1
Quoted 205 lines
53}}</a></td>
<td class="file"><a data-toggle="modal"href="#variable-{{variable.pk}}">
bitbake/lib/toaster/toastergui/templates/configvars.html +0
-2- {% if variable.vhistory.all %} {% autoescape off %} - {{variable.vhistory.all | filter_setin_files:file_filter| cut_layer_path_prefix:layer_names}}
bitbake/lib/toaster/toastergui/templates/configvars.html +2
-1- {% endautoescape %} {% endif %} + {% if variable.vhistory.all %} + {% for path invariable.vhistory.all|filter_setin_files:file_filter %}
bitbake/lib/toaster/toastergui/templates/configvars.html +3
-1+ {{path|cut_path_prefix:dirstostrip}}<p> + {% endfor %} + {% endif %} </a></td> <td class="description"> {% if variable.description %}@@ -115,7 +117,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip }}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -182,47 +183,23 @@ def variable_parent_name(value): return re.sub('_[a-z].*', '', value)@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-37-def filter_setin_files(file_list,matchstr): - """ filter/search the 'set in' file lists. Note - that this output is not autoescaped to allow - the <p> marks, but this is safe as the data - is file paths - """ - - # no filters, show last file (if any) - if matchstr == ":": - if file_list: - return file_list[len(file_list)-1].file_name - else: - return '' - - search, filter = matchstr.partition(':')[::2] - htmlstr="" - # match only filters - if search == '': - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - - # match only search string, plus always last file - if filter == "": - for i in range(len(file_list)-1): - if re.search(search,file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - if htmlstr.find(file_list[len(file_list)-1].file_name) < 0: - htmlstr += file_list[len(file_list)-1].file_name - return htmlstr - - # match filter or search string - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name) or
re.search(search,file_list[i].file_name):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +17
-4- if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - +def filter_setin_files(file_list, matchstr): + """Filter/search the 'set in' file lists.""" + result = [] + search, filter = matchstr.split(':') + for pattern in (search, filter): + if pattern: + for fobj in file_list: + fname = fobj.file_name + if fname not in result and re.search(pattern, fname): + result.append(fname) + + # no filter, show last file (if any) + last = list(file_list)[-1].file_name + if not filter and last not in result: + result.append(last) + + return result@register.filter
defstring_slice(strvar,slicevar):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -313,16 +290,9 @@ def is_shaid(text): return False@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-7-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 falsematches
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-3- 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):
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +5
-2- parts = re.split(lname, fullpath, 1) - return lname + parts[1] +def cut_path_prefix(fullpath, prefixes): + """Cut path prefix from fullpath.""" + for prefix in prefixes: + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) return fullpathbitbake/lib/toaster/toastergui/views.py +0
-0@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect from orm.models import Build, Target, Task, Layer, Layer_Version,Recipe, LogMessage, Variable
from orm.models importTask_Dependency,Recipe_Dependency, Package,Package_File,Package_Dependency
from orm.models importTarget_Installed_Package,Target_File,Target_Image_File, BuildArtifactbitbake/lib/toaster/toastergui/views.py +2
-0+from bldcontrol.models import BuildEnvironment, BuildRequest +from bldcontrol import bbcontrollerfrom django.views.decorators.cache import
cache_controlfrom django.core.urlresolvers import reverse
from django.core.exceptions import MultipleObjectsReturnedbitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +0
-1@@ -1298,11 +1301,6 @@ def configvars(request, build_id): variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) - layers =
Layer.objects.filter(layer_version_layer__projectlayer__project__build=bui ld_id).order_by("-name")bitbake/lib/toaster/toastergui/views.py +0
-4- 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:@@ -1315,6 +1313,15 @@ def configvars(request, build_id): file_filter += '/bitbake.conf'build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_lo
g_path)bitbake/lib/toaster/toastergui/views.py +3
-0+ clones = [] + for breq in BuildRequest.objects.filter(build_id=build_id): + bc = bbcontroller.getBuildEnvironmentController(pk =breq.environment.id)
bitbake/lib/toaster/toastergui/views.py +2
-0+ for brl in breq.brlayer_set.all(): + localdirname = bc.getGitCloneDirectory(brl.giturl,brl.commit)
bitbake/lib/toaster/toastergui/views.py +2
-0+ if not localdirname.startswith("/"): + localdirname = os.path.join(bc.be.sourcedir,localdirname)
bitbake/lib/toaster/toastergui/views.py +3
-1+ clones.append(localdirname) + context = { 'objectname': 'configvars', 'object_search_display':'BitBake variables',@@ -1325,7 +1332,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'dirstostrip': clones + [dirname(build_dir), dirname(dirname(build_dir))], # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Quoted 8 lines
--
2.1.4--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster
Signature · 3 lines
Alex Damian Yocto Project SSG / OTC
Quoted 4 lines · Alexandru
Taken for submission,
Can you please post new patches as branches on poky-contrib ?
I started doing it as soon as I've got push rights to poky-contrib.
BTW, this patch is in ed/toaster/relative-path and I submitted this branch for review 3 days ago:
https://lists.yoctoproject.org/pipermail/toaster/2015-May/002159.html
Regards,
Ed
Quoted 266 lines
Thank you,
AlexQuoted 253 lines · Belen
Quoted 4 lines · Ed Bartosh
Reworked filtering of config paths.
Stripped clone paths, topdir and its parent directory from the paths to config files in configvars view.
This works for me. Thanks!
Belén
Quoted 18 lines
[YOCTO #7463]
Signed-off-by Ed Bartosh <[email protected]>---
.../toaster/toastergui/templates/configvars.html | 10 +--.../toaster/toastergui/templatetags/projecttags.py| 76
+++++++---------------bitbake/lib/toaster/toastergui/views.py| 19 ++++--3 files changed, 42 insertions(+), 63 deletions(-)bitbake/lib/toaster/toastergui/templates/configvars.html +0
-0@@ -54,9 +54,11 @@ <td class="variable_name"><a data-toggle="modal"Quoted 3 lines
href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
<td class="variable_value"><a data-toggle="modal"
href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:1
Quoted 205 lines
53}}</a></td>
<td class="file"><a data-toggle="modal"href="#variable-{{variable.pk}}">
bitbake/lib/toaster/toastergui/templates/configvars.html +0
-2- {% if variable.vhistory.all %} {% autoescape off %} - {{variable.vhistory.all | filter_setin_files:file_filter| cut_layer_path_prefix:layer_names}}
bitbake/lib/toaster/toastergui/templates/configvars.html +2
-1- {% endautoescape %} {% endif %} + {% if variable.vhistory.all %} + {% for path invariable.vhistory.all|filter_setin_files:file_filter %}
bitbake/lib/toaster/toastergui/templates/configvars.html +3
-1+ {{path|cut_path_prefix:dirstostrip}}<p> + {% endfor %} + {% endif %} </a></td> <td class="description"> {% if variable.description %}@@ -115,7 +117,7 @@ <tbody> {% for vh in variable.vhistory.all %} <tr> -<td>{{forloop.counter}}</td><td>{{vh.file_name|cut_layer_path_prefix:layer _names}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> + <td>{{forloop.counter}}</td><td>{{vh.file_name|cut_path_prefix:dirstostrip }}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
</tr> {%endfor%} </tbody>bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -20,6 +20,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.from datetime import datetime, timedelta
+from os.path import relpath
import re
from django import template
from django.utils import timezonebitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -182,47 +183,23 @@ def variable_parent_name(value): return re.sub('_[a-z].*', '', value)@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-37-def filter_setin_files(file_list,matchstr): - """ filter/search the 'set in' file lists. Note - that this output is not autoescaped to allow - the <p> marks, but this is safe as the data - is file paths - """ - - # no filters, show last file (if any) - if matchstr == ":": - if file_list: - return file_list[len(file_list)-1].file_name - else: - return '' - - search, filter = matchstr.partition(':')[::2] - htmlstr="" - # match only filters - if search == '': - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - - # match only search string, plus always last file - if filter == "": - for i in range(len(file_list)-1): - if re.search(search,file_list[i].file_name): - if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - if htmlstr.find(file_list[len(file_list)-1].file_name) < 0: - htmlstr += file_list[len(file_list)-1].file_name - return htmlstr - - # match filter or search string - for i in range(len(file_list)): - if re.search(filter, file_list[i].file_name) or
re.search(search,file_list[i].file_name):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +17
-4- if htmlstr.find(file_list[i].file_name + "<p>") < 0: - htmlstr += file_list[i].file_name + "<p>" - return htmlstr - +def filter_setin_files(file_list, matchstr): + """Filter/search the 'set in' file lists.""" + result = [] + search, filter = matchstr.split(':') + for pattern in (search, filter): + if pattern: + for fobj in file_list: + fname = fobj.file_name + if fname not in result and re.search(pattern, fname): + result.append(fname) + + # no filter, show last file (if any) + last = list(file_list)[-1].file_name + if not filter and last not in result: + result.append(last) + + return result@register.filter
defstring_slice(strvar,slicevar):bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-0@@ -313,16 +290,9 @@ def is_shaid(text): return False@register.filter
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-7-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 falsematches
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +0
-3- 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):
bitbake/lib/toaster/toastergui/templatetags/projecttags.py +5
-2- parts = re.split(lname, fullpath, 1) - return lname + parts[1] +def cut_path_prefix(fullpath, prefixes): + """Cut path prefix from fullpath.""" + for prefix in prefixes: + if fullpath.startswith(prefix): + return relpath(fullpath, prefix) return fullpathbitbake/lib/toaster/toastergui/views.py +0
-0@@ -28,6 +28,8 @@ from django.shortcuts import render, redirect from orm.models import Build, Target, Task, Layer, Layer_Version,Recipe, LogMessage, Variable
from orm.models importTask_Dependency,Recipe_Dependency, Package,Package_File,Package_Dependency
from orm.models importTarget_Installed_Package,Target_File,Target_Image_File, BuildArtifactbitbake/lib/toaster/toastergui/views.py +2
-0+from bldcontrol.models import BuildEnvironment, BuildRequest +from bldcontrol import bbcontrollerfrom django.views.decorators.cache import
cache_controlfrom django.core.urlresolvers import reverse
from django.core.exceptions import MultipleObjectsReturnedbitbake/lib/toaster/toastergui/views.py +0
-0@@ -39,6 +41,7 @@ from datetime import timedelta, datetime, datefrom django.utils import formats
from toastergui.templatetags.projecttags import json as jsonfilter import json
+from os.path import dirname# all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriatelybitbake/lib/toaster/toastergui/views.py +0
-1@@ -1298,11 +1301,6 @@ def configvars(request, build_id): variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) - layers =
Layer.objects.filter(layer_version_layer__projectlayer__project__build=bui ld_id).order_by("-name")bitbake/lib/toaster/toastergui/views.py +0
-4- 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:@@ -1315,6 +1313,15 @@ def configvars(request, build_id): file_filter += '/bitbake.conf'build_dir=re.sub("/tmp/log/.*","",Build.objects.get(pk=build_id).cooker_lo
g_path)bitbake/lib/toaster/toastergui/views.py +3
-0+ clones = [] + for breq in BuildRequest.objects.filter(build_id=build_id): + bc = bbcontroller.getBuildEnvironmentController(pk =breq.environment.id)
bitbake/lib/toaster/toastergui/views.py +2
-0+ for brl in breq.brlayer_set.all(): + localdirname = bc.getGitCloneDirectory(brl.giturl,brl.commit)
bitbake/lib/toaster/toastergui/views.py +2
-0+ if not localdirname.startswith("/"): + localdirname = os.path.join(bc.be.sourcedir,localdirname)
bitbake/lib/toaster/toastergui/views.py +3
-1+ clones.append(localdirname) + context = { 'objectname': 'configvars', 'object_search_display':'BitBake variables',@@ -1325,7 +1332,7 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - 'layer_names' : layer_names, + 'dirstostrip': clones + [dirname(build_dir), dirname(dirname(build_dir))], # Specifies the display of columns for the table, appearancein "Edit columns" box, toggling default show/hide, and specifying filters for columns
'tablecols' : [ {'name': 'Variable',Quoted 8 lines
--
2.1.4--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster--
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toasterSignature · 3 lines
Alex Damian Yocto Project SSG / OTC
Signature · 3 lines
-- Regards, Ed