summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/tables.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/tables.py')
-rw-r--r--bitbake/lib/toaster/toastergui/tables.py162
1 files changed, 83 insertions, 79 deletions
diff --git a/bitbake/lib/toaster/toastergui/tables.py b/bitbake/lib/toaster/toastergui/tables.py
index 2bbef637aa..a0eb69591b 100644
--- a/bitbake/lib/toaster/toastergui/tables.py
+++ b/bitbake/lib/toaster/toastergui/tables.py
@@ -118,7 +118,7 @@ class LayersTable(ToasterTable):
118 </a> 118 </a>
119 {% if data.get_vcs_link_url %} 119 {% if data.get_vcs_link_url %}
120 <a target="_blank" href="{{ data.get_vcs_link_url }}"> 120 <a target="_blank" href="{{ data.get_vcs_link_url }}">
121 <i class="icon-share get-info"></i> 121 <span class="glyphicon glyphicon-new-window"></span>
122 </a> 122 </a>
123 {% endif %} 123 {% endif %}
124 ''' 124 '''
@@ -135,7 +135,7 @@ class LayersTable(ToasterTable):
135 </a> 135 </a>
136 {% if data.dirpath and data.get_vcs_dirpath_link_url %} 136 {% if data.dirpath and data.get_vcs_dirpath_link_url %}
137 <a target="_blank" href="{{ data.get_vcs_dirpath_link_url }}"> 137 <a target="_blank" href="{{ data.get_vcs_dirpath_link_url }}">
138 <i class="icon-share get-info"></i> 138 <span class="glyphicon glyphicon-new-window"></span>
139 </a> 139 </a>
140 {% endif %}''' 140 {% endif %}'''
141 141
@@ -166,8 +166,8 @@ class LayersTable(ToasterTable):
166 deps_template = ''' 166 deps_template = '''
167 {% with ods=data.dependencies.all%} 167 {% with ods=data.dependencies.all%}
168 {% if ods.count %} 168 {% if ods.count %}
169 <a class="btn" title="<a href='{% url "layerdetails" extra.pid data.id %}'>{{data.layer.name}}</a> dependencies" 169 <a class="btn btn-default" title="<a href='{% url "layerdetails" extra.pid data.id %}'>{{data.layer.name}}</a> dependencies"
170 data-content="<ul class='unstyled'> 170 data-content="<ul class='list-unstyled'>
171 {% for i in ods%} 171 {% for i in ods%}
172 <li><a href='{% url "layerdetails" extra.pid i.depends_on.pk %}'>{{i.depends_on.layer.name}}</a></li> 172 <li><a href='{% url "layerdetails" extra.pid i.depends_on.pk %}'>{{i.depends_on.layer.name}}</a></li>
173 {% endfor %} 173 {% endfor %}
@@ -196,7 +196,7 @@ class MachinesTable(ToasterTable):
196 196
197 def __init__(self, *args, **kwargs): 197 def __init__(self, *args, **kwargs):
198 super(MachinesTable, self).__init__(*args, **kwargs) 198 super(MachinesTable, self).__init__(*args, **kwargs)
199 self.empty_state = "No machines maybe you need to do a build?" 199 self.empty_state = "Toaster has no machine information for this project. Sadly, machine information cannot be obtained from builds, so this page will remain empty."
200 self.title = "Compatible machines" 200 self.title = "Compatible machines"
201 self.default_orderby = "name" 201 self.default_orderby = "name"
202 202
@@ -264,7 +264,7 @@ class MachinesTable(ToasterTable):
264 field_name="layer_version__get_vcs_reference") 264 field_name="layer_version__get_vcs_reference")
265 265
266 machine_file_template = '''<code>conf/machine/{{data.name}}.conf</code> 266 machine_file_template = '''<code>conf/machine/{{data.name}}.conf</code>
267 <a href="{{data.get_vcs_machine_file_link_url}}" target="_blank"><i class="icon-share get-info"></i></a>''' 267 <a href="{{data.get_vcs_machine_file_link_url}}" target="_blank"><span class="glyphicon glyphicon-new-window"></i></a>'''
268 268
269 self.add_column(title="Machine file", 269 self.add_column(title="Machine file",
270 hidden=True, 270 hidden=True,
@@ -307,7 +307,11 @@ class LayerMachinesTable(MachinesTable):
307 self.add_column(title="Description", 307 self.add_column(title="Description",
308 field_name="description") 308 field_name="description")
309 309
310 select_btn_template = '<a href="{% url "project" extra.pid %}?setMachine={{data.name}}" class="btn btn-block select-machine-btn" {% if extra.in_prj == 0%}disabled="disabled"{%endif%}>Select machine</a>' 310 select_btn_template = '''
311 <a href="{% url "project" extra.pid %}?setMachine={{data.name}}"
312 class="btn btn-default btn-block select-machine-btn
313 {% if extra.in_prj == 0%}disabled{%endif%}">Select machine</a>
314 '''
311 315
312 self.add_column(title="Select machine", 316 self.add_column(title="Select machine",
313 static_data_name="add-del-layers", 317 static_data_name="add-del-layers",
@@ -319,10 +323,10 @@ class RecipesTable(ToasterTable):
319 323
320 def __init__(self, *args, **kwargs): 324 def __init__(self, *args, **kwargs):
321 super(RecipesTable, self).__init__(*args, **kwargs) 325 super(RecipesTable, self).__init__(*args, **kwargs)
322 self.empty_state = "Toaster has no recipe information. To generate recipe information you can configure a layer source then run a build." 326 self.empty_state = "Toaster has no recipe information. To generate recipe information you need to run a build."
323 327
324 build_col = { 'title' : "Build", 328 build_col = { 'title' : "Build",
325 'help_text' : "Add or delete recipes to and from your project", 329 'help_text' : "Before building a recipe, you might need to add the corresponding layer to your project",
326 'hideable' : False, 330 'hideable' : False,
327 'filter_name' : "in_current_project", 331 'filter_name' : "in_current_project",
328 'static_data_name' : "add-del-layers", 332 'static_data_name' : "add-del-layers",
@@ -383,7 +387,7 @@ class RecipesTable(ToasterTable):
383 recipe_file_template = ''' 387 recipe_file_template = '''
384 <code>{{data.file_path}}</code> 388 <code>{{data.file_path}}</code>
385 <a href="{{data.get_vcs_recipe_file_link_url}}" target="_blank"> 389 <a href="{{data.get_vcs_recipe_file_link_url}}" target="_blank">
386 <i class="icon-share get-info"></i> 390 <span class="glyphicon glyphicon-new-window"></i>
387 </a> 391 </a>
388 ''' 392 '''
389 393
@@ -454,7 +458,11 @@ class LayerRecipesTable(RecipesTable):
454 self.add_column(title="Description", 458 self.add_column(title="Description",
455 field_name="get_description_or_summary") 459 field_name="get_description_or_summary")
456 460
457 build_recipe_template ='<button class="btn btn-block build-recipe-btn" data-recipe-name="{{data.name}}" {%if extra.in_prj == 0 %}disabled="disabled"{%endif%}>Build recipe</button>' 461 build_recipe_template = '''
462 <a class="btn btn-default btn-block build-recipe-btn
463 {% if extra.in_prj == 0 %}disabled{% endif %}"
464 data-recipe-name="{{data.name}}">Build recipe</a>
465 '''
458 466
459 self.add_column(title="Build recipe", 467 self.add_column(title="Build recipe",
460 static_data_name="add-del-layers", 468 static_data_name="add-del-layers",
@@ -497,7 +505,8 @@ class CustomImagesTable(ToasterTable):
497 recipe_file_template = ''' 505 recipe_file_template = '''
498 {% if data.get_base_recipe_file %} 506 {% if data.get_base_recipe_file %}
499 <code>{{data.name}}_{{data.version}}.bb</code> 507 <code>{{data.name}}_{{data.version}}.bb</code>
500 <a href="{% url 'customrecipedownload' extra.pid data.pk %}" class="icon-download-alt get-help" title="Download recipe file"></a> 508 <a href="{% url 'customrecipedownload' extra.pid data.pk %}"
509 class="glyphicon glyphicon-download-alt get-help" title="Download recipe file"></a>
501 {% endif %}''' 510 {% endif %}'''
502 511
503 self.add_column(title="Recipe file", 512 self.add_column(title="Recipe file",
@@ -505,18 +514,20 @@ class CustomImagesTable(ToasterTable):
505 static_data_template=recipe_file_template) 514 static_data_template=recipe_file_template)
506 515
507 approx_packages_template = ''' 516 approx_packages_template = '''
517 {% if data.get_all_packages.count > 0 %}
508 <a href="{% url 'customrecipe' extra.pid data.id %}"> 518 <a href="{% url 'customrecipe' extra.pid data.id %}">
509 {{data.get_all_packages.count}} 519 {{data.get_all_packages.count}}
510 </a>''' 520 </a>
521 {% endif %}'''
511 522
512 self.add_column(title="Approx packages", 523 self.add_column(title="Packages",
513 static_data_name='approx_packages', 524 static_data_name='approx_packages',
514 static_data_template=approx_packages_template) 525 static_data_template=approx_packages_template)
515 526
516 527
517 build_btn_template = ''' 528 build_btn_template = '''
518 <button data-recipe-name="{{data.name}}" 529 <button data-recipe-name="{{data.name}}"
519 class="btn btn-block build-recipe-btn" style="margin-top: 5px;" > 530 class="btn btn-default btn-block build-recipe-btn">
520 Build 531 Build
521 </button>''' 532 </button>'''
522 533
@@ -704,7 +715,8 @@ class PackagesTable(ToasterTable):
704 715
705 self.add_column(title="License", 716 self.add_column(title="License",
706 field_name="license", 717 field_name="license",
707 orderable=True) 718 orderable=True,
719 hidden=True)
708 720
709 721
710 self.add_column(title="Dependencies", 722 self.add_column(title="Dependencies",
@@ -847,26 +859,22 @@ class ProjectsTable(ToasterTable):
847 last_activity_on_template = ''' 859 last_activity_on_template = '''
848 {% load project_url_tag %} 860 {% load project_url_tag %}
849 <span data-project-field="updated"> 861 <span data-project-field="updated">
850 <a href="{% project_url data %}">
851 {{data.updated | date:"d/m/y H:i"}} 862 {{data.updated | date:"d/m/y H:i"}}
852 </a>
853 </span> 863 </span>
854 ''' 864 '''
855 865
856 release_template = ''' 866 release_template = '''
857 <span data-project-field="release"> 867 <span data-project-field="release">
858 {% if data.release %} 868 {% if data.release %}
859 <a href="{% url 'project' data.id %}#project-details"> 869 {{data.release.name}}
860 {{data.release.name}}
861 </a>
862 {% elif data.is_default %} 870 {% elif data.is_default %}
863 <span class="muted">Not applicable</span> 871 <span class="text-muted">Not applicable</span>
864 <i class="icon-question-sign get-help hover-help" 872 <span class="glyphicon glyphicon-question-sign get-help hover-help"
865 data-original-title="This project does not have a release set. 873 title="This project does not have a release set.
866 It simply collects information about the builds you start from 874 It simply collects information about the builds you start from
867 the command line while Toaster is running" 875 the command line while Toaster is running"
868 style="visibility: hidden;"> 876 style="visibility: hidden;">
869 </i> 877 </span>
870 {% else %} 878 {% else %}
871 No release available 879 No release available
872 {% endif %} 880 {% endif %}
@@ -876,16 +884,14 @@ class ProjectsTable(ToasterTable):
876 machine_template = ''' 884 machine_template = '''
877 <span data-project-field="machine"> 885 <span data-project-field="machine">
878 {% if data.is_default %} 886 {% if data.is_default %}
879 <span class="muted">Not applicable</span> 887 <span class="text-muted">Not applicable</span>
880 <i class="icon-question-sign get-help hover-help" 888 <span class="glyphicon glyphicon-question-sign get-help hover-help"
881 data-original-title="This project does not have a machine 889 title="This project does not have a machine
882 set. It simply collects information about the builds you 890 set. It simply collects information about the builds you
883 start from the command line while Toaster is running" 891 start from the command line while Toaster is running"
884 style="visibility: hidden;"></i> 892 style="visibility: hidden;"></span>
885 {% else %} 893 {% else %}
886 <a href="{% url 'project' data.id %}#machine-distro"> 894 {{data.get_current_machine_name}}
887 {{data.get_current_machine_name}}
888 </a>
889 {% endif %} 895 {% endif %}
890 </span> 896 </span>
891 ''' 897 '''
@@ -895,20 +901,16 @@ class ProjectsTable(ToasterTable):
895 <a href="{% url 'projectbuilds' data.id %}"> 901 <a href="{% url 'projectbuilds' data.id %}">
896 {{data.get_number_of_builds}} 902 {{data.get_number_of_builds}}
897 </a> 903 </a>
898 {% else %}
899 <span class="muted">0</span>
900 {% endif %} 904 {% endif %}
901 ''' 905 '''
902 906
903 last_build_outcome_template = ''' 907 last_build_outcome_template = '''
904 {% if data.get_number_of_builds > 0 %} 908 {% if data.get_number_of_builds > 0 %}
905 <a href="{% url 'builddashboard' data.get_last_build_id %}"> 909 {% if data.get_last_outcome == extra.Build.SUCCEEDED %}
906 {% if data.get_last_outcome == extra.Build.SUCCEEDED %} 910 <span class="glyphicon glyphicon-ok-circle"></span>
907 <i class="icon-ok-sign success"></i> 911 {% elif data.get_last_outcome == extra.Build.FAILED %}
908 {% elif data.get_last_outcome == extra.Build.FAILED %} 912 <span class="glyphicon glyphicon-minus-sign"></span>
909 <i class="icon-minus-sign error"></i> 913 {% endif %}
910 {% endif %}
911 </a>
912 {% endif %} 914 {% endif %}
913 ''' 915 '''
914 916
@@ -922,7 +924,7 @@ class ProjectsTable(ToasterTable):
922 924
923 errors_template = ''' 925 errors_template = '''
924 {% if data.get_number_of_builds > 0 and data.get_last_errors > 0 %} 926 {% if data.get_number_of_builds > 0 and data.get_last_errors > 0 %}
925 <a class="errors.count error" 927 <a class="errors.count text-danger"
926 href="{% url "builddashboard" data.get_last_build_id %}#errors"> 928 href="{% url "builddashboard" data.get_last_build_id %}#errors">
927 {{data.get_last_errors}} error{{data.get_last_errors | pluralize}} 929 {{data.get_last_errors}} error{{data.get_last_errors | pluralize}}
928 </a> 930 </a>
@@ -931,7 +933,7 @@ class ProjectsTable(ToasterTable):
931 933
932 warnings_template = ''' 934 warnings_template = '''
933 {% if data.get_number_of_builds > 0 and data.get_last_warnings > 0 %} 935 {% if data.get_number_of_builds > 0 and data.get_last_warnings > 0 %}
934 <a class="warnings.count warning" 936 <a class="warnings.count text-warning"
935 href="{% url "builddashboard" data.get_last_build_id %}#warnings"> 937 href="{% url "builddashboard" data.get_last_build_id %}#warnings">
936 {{data.get_last_warnings}} warning{{data.get_last_warnings | pluralize}} 938 {{data.get_last_warnings}} warning{{data.get_last_warnings | pluralize}}
937 </a> 939 </a>
@@ -940,9 +942,7 @@ class ProjectsTable(ToasterTable):
940 942
941 image_files_template = ''' 943 image_files_template = '''
942 {% if data.get_number_of_builds > 0 and data.get_last_outcome == extra.Build.SUCCEEDED %} 944 {% if data.get_number_of_builds > 0 and data.get_last_outcome == extra.Build.SUCCEEDED %}
943 <a href="{% url "builddashboard" data.get_last_build_id %}#images"> 945 {{data.get_last_build_extensions}}
944 {{data.get_last_build_extensions}}
945 </a>
946 {% endif %} 946 {% endif %}
947 ''' 947 '''
948 948
@@ -978,7 +978,7 @@ class ProjectsTable(ToasterTable):
978 static_data_name='machine', 978 static_data_name='machine',
979 static_data_template=machine_template) 979 static_data_template=machine_template)
980 980
981 self.add_column(title='Number of builds', 981 self.add_column(title='Builds',
982 help_text='The number of builds which have been run \ 982 help_text='The number of builds which have been run \
983 for the project', 983 for the project',
984 hideable=False, 984 hideable=False,
@@ -1108,19 +1108,17 @@ class BuildsTable(ToasterTable):
1108 1108
1109 def setup_columns(self, *args, **kwargs): 1109 def setup_columns(self, *args, **kwargs):
1110 outcome_template = ''' 1110 outcome_template = '''
1111 <a href="{% url "builddashboard" data.id %}"> 1111 {% if data.outcome == data.SUCCEEDED %}
1112 {% if data.outcome == data.SUCCEEDED %} 1112 <span class="glyphicon glyphicon-ok-circle"></span>
1113 <i class="icon-ok-sign success"></i> 1113 {% elif data.outcome == data.FAILED %}
1114 {% elif data.outcome == data.FAILED %} 1114 <span class="glyphicon glyphicon-minus-sign"></span>
1115 <i class="icon-minus-sign error"></i> 1115 {% endif %}
1116 {% endif %}
1117 </a>
1118 1116
1119 {% if data.cooker_log_path %} 1117 {% if data.cooker_log_path %}
1120 &nbsp; 1118 &nbsp;
1121 <a href="{% url "build_artifact" data.id "cookerlog" data.id %}"> 1119 <a href="{% url "build_artifact" data.id "cookerlog" data.id %}">
1122 <i class="icon-download-alt get-help" 1120 <span class="glyphicon glyphicon-download-alt get-help"
1123 data-original-title="Download build log"></i> 1121 data-original-title="Download build log"></span>
1124 </a> 1122 </a>
1125 {% endif %} 1123 {% endif %}
1126 ''' 1124 '''
@@ -1135,45 +1133,39 @@ class BuildsTable(ToasterTable):
1135 ''' 1133 '''
1136 1134
1137 machine_template = ''' 1135 machine_template = '''
1138 <a href="{% url "builddashboard" data.id %}"> 1136 {{data.machine}}
1139 {{data.machine}}
1140 </a>
1141 ''' 1137 '''
1142 1138
1143 started_on_template = ''' 1139 started_on_template = '''
1144 <a href="{% url "builddashboard" data.id %}"> 1140 {{data.started_on | date:"d/m/y H:i"}}
1145 {{data.started_on | date:"d/m/y H:i"}}
1146 </a>
1147 ''' 1141 '''
1148 1142
1149 completed_on_template = ''' 1143 completed_on_template = '''
1150 <a href="{% url "builddashboard" data.id %}"> 1144 {{data.completed_on | date:"d/m/y H:i"}}
1151 {{data.completed_on | date:"d/m/y H:i"}}
1152 </a>
1153 ''' 1145 '''
1154 1146
1155 failed_tasks_template = ''' 1147 failed_tasks_template = '''
1156 {% if data.failed_tasks.count == 1 %} 1148 {% if data.failed_tasks.count == 1 %}
1157 <a href="{% url "task" data.id data.failed_tasks.0.id %}"> 1149 <a class="text-danger" href="{% url "task" data.id data.failed_tasks.0.id %}">
1158 <span class="error"> 1150 <span>
1159 {{data.failed_tasks.0.recipe.name}}.{{data.failed_tasks.0.task_name}} 1151 {{data.failed_tasks.0.recipe.name}} {{data.failed_tasks.0.task_name}}
1160 </span> 1152 </span>
1161 </a> 1153 </a>
1162 <a href="{% url "build_artifact" data.id "tasklogfile" data.failed_tasks.0.id %}"> 1154 <a href="{% url "build_artifact" data.id "tasklogfile" data.failed_tasks.0.id %}">
1163 <i class="icon-download-alt" 1155 <span class="glyphicon glyphicon-download-alt get-help"
1164 data-original-title="Download task log file"> 1156 title="Download task log file">
1165 </i> 1157 </span>
1166 </a> 1158 </a>
1167 {% elif data.failed_tasks.count > 1 %} 1159 {% elif data.failed_tasks.count > 1 %}
1168 <a href="{% url "tasks" data.id %}?filter=outcome%3A{{extra.Task.OUTCOME_FAILED}}"> 1160 <a href="{% url "tasks" data.id %}?filter=outcome%3A{{extra.Task.OUTCOME_FAILED}}">
1169 <span class="error">{{data.failed_tasks.count}} tasks</span> 1161 <span class="text-danger">{{data.failed_tasks.count}} tasks</span>
1170 </a> 1162 </a>
1171 {% endif %} 1163 {% endif %}
1172 ''' 1164 '''
1173 1165
1174 errors_template = ''' 1166 errors_template = '''
1175 {% if data.errors_no %} 1167 {% if data.errors_no %}
1176 <a class="errors.count error" href="{% url "builddashboard" data.id %}#errors"> 1168 <a class="errors.count text-danger" href="{% url "builddashboard" data.id %}#errors">
1177 {{data.errors_no}} error{{data.errors_no|pluralize}} 1169 {{data.errors_no}} error{{data.errors_no|pluralize}}
1178 </a> 1170 </a>
1179 {% endif %} 1171 {% endif %}
@@ -1181,7 +1173,7 @@ class BuildsTable(ToasterTable):
1181 1173
1182 warnings_template = ''' 1174 warnings_template = '''
1183 {% if data.warnings_no %} 1175 {% if data.warnings_no %}
1184 <a class="warnings.count warning" href="{% url "builddashboard" data.id %}#warnings"> 1176 <a class="warnings.count text-warning" href="{% url "builddashboard" data.id %}#warnings">
1185 {{data.warnings_no}} warning{{data.warnings_no|pluralize}} 1177 {{data.warnings_no}} warning{{data.warnings_no|pluralize}}
1186 </a> 1178 </a>
1187 {% endif %} 1179 {% endif %}
@@ -1196,9 +1188,7 @@ class BuildsTable(ToasterTable):
1196 1188
1197 image_files_template = ''' 1189 image_files_template = '''
1198 {% if data.outcome == extra.Build.SUCCEEDED %} 1190 {% if data.outcome == extra.Build.SUCCEEDED %}
1199 <a href="{% url "builddashboard" data.id %}#images">
1200 {{data.get_image_file_extensions}} 1191 {{data.get_image_file_extensions}}
1201 </a>
1202 {% endif %} 1192 {% endif %}
1203 ''' 1193 '''
1204 1194
@@ -1416,10 +1406,10 @@ class AllBuildsTable(BuildsTable):
1416 {{data.project.name}} 1406 {{data.project.name}}
1417 </a> 1407 </a>
1418 {% if data.project.is_default %} 1408 {% if data.project.is_default %}
1419 <i class="icon-question-sign get-help hover-help" title="" 1409 <span class="glyphicon glyphicon-question-sign get-help hover-help" title=""
1420 data-original-title="This project shows information about 1410 data-original-title="This project shows information about
1421 the builds you start from the command line while Toaster is 1411 the builds you start from the command line while Toaster is
1422 running" style="visibility: hidden;"></i> 1412 running" style="visibility: hidden;"></span>
1423 {% endif %} 1413 {% endif %}
1424 ''' 1414 '''
1425 1415
@@ -1469,7 +1459,6 @@ class ProjectBuildsTable(BuildsTable):
1469 """ 1459 """
1470 self.project_id = kwargs['pid'] 1460 self.project_id = kwargs['pid']
1471 super(ProjectBuildsTable, self).setup_queryset(*args, **kwargs) 1461 super(ProjectBuildsTable, self).setup_queryset(*args, **kwargs)
1472
1473 project = Project.objects.get(pk=self.project_id) 1462 project = Project.objects.get(pk=self.project_id)
1474 self.queryset = self.queryset.filter(project=project) 1463 self.queryset = self.queryset.filter(project=project)
1475 1464
@@ -1483,8 +1472,23 @@ class ProjectBuildsTable(BuildsTable):
1483 self.project_id = kwargs['pid'] 1472 self.project_id = kwargs['pid']
1484 context = super(ProjectBuildsTable, self).get_context_data(**kwargs) 1473 context = super(ProjectBuildsTable, self).get_context_data(**kwargs)
1485 1474
1475 empty_state_template = '''
1476 This project has no builds.
1477 <a href="{% url 'projectimagerecipes' data.pid %}">
1478 Choose a recipe to build</a>
1479 '''
1480 context['empty_state'] = self.render_static_data(empty_state_template,
1481 kwargs)
1482
1486 project = Project.objects.get(pk=self.project_id) 1483 project = Project.objects.get(pk=self.project_id)
1487 context['mru'] = Build.get_recent(project) 1484 context['mru'] = Build.get_recent(project)
1488 context['project'] = project 1485 context['project'] = project
1489 1486
1487 self.setup_queryset(**kwargs)
1488 if self.queryset.count() == 0 and \
1489 project.build_set.filter(outcome=Build.IN_PROGRESS).count() > 0:
1490 context['build_in_progress_none_completed'] = True
1491 else:
1492 context['build_in_progress_none_completed'] = False
1493
1490 return context 1494 return context