diff --git a/bitbake/lib/toaster/toastergui/templates/basebuildpage.html b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html index b7a4dd21ed..105ad85ed4 100644 --- a/bitbake/lib/toaster/toastergui/templates/basebuildpage.html +++ b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html @@ -24,6 +24,7 @@ $('#breadcrumb > li').append(""); $('#breadcrumb > li:last').addClass("active"); $('#breadcrumb > li:last > span').remove(); + console.log("done"); }); diff --git a/bitbake/lib/toaster/toastergui/templates/configvars.html b/bitbake/lib/toaster/toastergui/templates/configvars.html index cbe3c6876f..89576733c2 100644 --- a/bitbake/lib/toaster/toastergui/templates/configvars.html +++ b/bitbake/lib/toaster/toastergui/templates/configvars.html @@ -56,7 +56,7 @@ {% if variable.vhistory.all %} {% for path in variable.vhistory.all|filter_setin_files:file_filter %} - {{path|cut_path_prefix:dirstostrip}}
+ {{path}}
{% endfor %} {% endif %}
@@ -117,7 +117,7 @@ {% for vh in variable.vhistory.all %} - {{forloop.counter}}{{vh.file_name|cut_path_prefix:dirstostrip}}{{vh.operation}}{{vh.line_number}} + {{forloop.counter}}{{vh.file_name}}{{vh.operation}}{{vh.line_number}} {%endfor%} diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index bfae304587..060d680b85 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py @@ -27,7 +27,6 @@ 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 @@ -41,36 +40,33 @@ from django.utils import formats from toastergui.templatetags.projecttags import json as jsonfilter import json from os.path import dirname +import itertools # all new sessions should come through the landing page; # determine in which mode we are running in, and redirect appropriately def landing(request): - if toastermain.settings.MANAGED: - from bldcontrol.models import BuildRequest - if BuildRequest.objects.count() == 0 and Project.objects.count() > 0: - return redirect(reverse('all-projects'), permanent = False) + if Build.objects.count() == 0 and Project.objects.count() > 0: + return redirect(reverse('all-projects'), permanent = False) - if BuildRequest.objects.all().count() > 0: - return redirect(reverse('all-builds'), permanent = False) - else: - if Build.objects.all().count() > 0: - return redirect(reverse('all-builds'), permanent = False) + if Build.objects.all().count() > 0: + return redirect(reverse('all-builds'), permanent = False) - context = {} - if toastermain.settings.MANAGED: - context['lvs_nos'] = Layer_Version.objects.all().count() + context = {'lvs_nos' : Layer_Version.objects.all().count()} return render(request, 'landing.html', context) # returns a list for most recent builds; for use in the Project page, xhr_ updates, and other places, as needed def _project_recent_build_list(prj): - return map(lambda x: { + data = [] + # take the most recent 3 completed builds, plus any builds in progress + for x in itertools.chain(prj.build_set.filter(outcome__lt=Build.IN_PROGRESS).order_by("-pk")[:3], prj.build_set.filter(outcome=Build.IN_PROGRESS).order_by("-pk")): + d = { "id": x.pk, - "targets" : map(lambda y: {"target": y.target, "task": y.task }, x.brtarget_set.all()), - "status": x.get_state_display(), - "errors": map(lambda y: {"type": y.errtype, "msg": y.errmsg, "tb": y.traceback}, x.brerror_set.all()), - "updated": x.updated.strftime('%s')+"000", - "command_time": (x.updated - x.created).total_seconds(), + "targets" : map(lambda y: {"target": y.target, "task": None }, x.target_set.all()), # TODO: create the task entry in the Target table + "status": x.get_outcome_display(), + "errors": map(lambda y: {"type": y.lineno, "msg": y.message, "tb": y.pathname}, x.logmessage_set.filter(level__gte=LogMessage.WARNING)), + "updated": x.completed_on.strftime('%s')+"000", + "command_time": (x.completed_on - x.started_on).total_seconds(), "br_page_url": reverse('buildrequestdetails', args=(x.project.id, x.pk) ), "build" : map( lambda y: {"id": y.pk, "status": y.get_outcome_display(), @@ -82,9 +78,11 @@ def _project_recent_build_list(prj): "warnings": y.warnings_no, "completeper": y.completeper() if y.outcome == Build.IN_PROGRESS else "0", "eta": y.eta().strftime('%s')+"000" if y.outcome == Build.IN_PROGRESS else "0", - }, Build.objects.filter(buildrequest = x)), - }, list(prj.buildrequest_set.filter(Q(state__lt=BuildRequest.REQ_COMPLETED) or Q(state=BuildRequest.REQ_DELETED)).order_by("-pk")) + - list(prj.buildrequest_set.filter(state__in=[BuildRequest.REQ_COMPLETED, BuildRequest.REQ_FAILED]).order_by("-pk")[:3])) + }, [x]), + } + data.append(d) + + return data @@ -1372,15 +1370,6 @@ 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', @@ -1391,7 +1380,6 @@ def configvars(request, build_id): 'total_count':queryset_with_search.count(), 'default_orderby' : 'variable_name:+', 'search_term':search_term, - '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', @@ -1872,7 +1860,7 @@ if True: # shows the "all builds" page for managed mode; it displays build requests (at least started!) instead of actual builds - @_template_renderer("managed_builds.html") + @_template_renderer("builds.html") def builds(request): # define here what parameters the view needs in the GET portion in order to # be able to display something. 'count' and 'page' are mandatory for all views @@ -2184,10 +2172,7 @@ if True: # Shows the edit project page @_template_renderer('project.html') def project(request, pid): - try: - prj = Project.objects.get(id = pid) - except Project.DoesNotExist: - return HttpResponseNotFound("

Project id " + pid + " is unavailable

") + prj = Project.objects.get(id = pid) try: puser = User.objects.get(id = prj.user_id) @@ -2249,8 +2234,8 @@ if True: context = { "project" : prj, "lvs_nos" : Layer_Version.objects.all().count(), - "completedbuilds": BuildRequest.objects.filter(project_id = pid).exclude(state__lte = BuildRequest.REQ_INPROGRESS).exclude(state=BuildRequest.REQ_DELETED), - "prj" : {"name": prj.name, "release": { "id": prj.release.pk, "name": prj.release.name, "desc": prj.release.description}}, + "completedbuilds": Build.objects.filter(project_id = pid).filter(outcome__lte = Build.IN_PROGRESS), + "prj" : {"name": prj.name, }, #"buildrequests" : prj.buildrequest_set.filter(state=BuildRequest.REQ_QUEUED), "builds" : _project_recent_build_list(prj), "layers" : map(lambda x: { @@ -2270,6 +2255,9 @@ if True: "project_html": 1, } + if prj.release is not None: + context["prj"]["release"] = { "id": prj.release.pk, "name": prj.release.name, "desc": prj.release.description} + try: context["machine"] = {"name": prj.projectvariable_set.get(name="MACHINE").value} except ProjectVariable.DoesNotExist: