def get(self, request, *args, **kwargs): """ Returns a list of builds in JSON format. """ project = None project_id = request.GET.get('project_id', None) if project_id: try: project = Project.objects.get(pk=project_id) except: # if project lookup fails, assume no project pass recent_build_objs = Build.get_recent(project) recent_builds = [] for build_obj in recent_build_objs: dashboard_url = reverse('builddashboard', args=(build_obj.pk,)) buildtime_url = reverse('buildtime', args=(build_obj.pk,)) rebuild_url = \ reverse('xhr_buildrequest', args=(build_obj.project.pk,)) cancel_url = \ reverse('xhr_buildrequest', args=(build_obj.project.pk,)) build = {} build['id'] = build_obj.pk build['dashboard_url'] = dashboard_url buildrequest_id = None if hasattr(build_obj, 'buildrequest'): buildrequest_id = build_obj.buildrequest.pk build['buildrequest_id'] = buildrequest_id if build_obj.recipes_to_parse > 0: build['recipes_parsed_percentage'] = \ int((build_obj.recipes_parsed / build_obj.recipes_to_parse) * 100) else: build['recipes_parsed_percentage'] = 0 if build_obj.repos_to_clone > 0: build['repos_cloned_percentage'] = \ int((build_obj.repos_cloned / build_obj.repos_to_clone) * 100) else: build['repos_cloned_percentage'] = 0 build['progress_item'] = build_obj.progress_item tasks_complete_percentage = 0 if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED): tasks_complete_percentage = 100 elif build_obj.outcome == Build.IN_PROGRESS: tasks_complete_percentage = build_obj.completeper() build['tasks_complete_percentage'] = tasks_complete_percentage build['state'] = build_obj.get_state() build['errors'] = build_obj.errors.count() build['dashboard_errors_url'] = dashboard_url + '#errors' build['warnings'] = build_obj.warnings.count() build['dashboard_warnings_url'] = dashboard_url + '#warnings' build['buildtime'] = sectohms(build_obj.timespent_seconds) build['buildtime_url'] = buildtime_url build['rebuild_url'] = rebuild_url build['cancel_url'] = cancel_url build['is_default_project_build'] = build_obj.project.is_default build['build_targets_json'] = \ template_json(get_tasks(build_obj.target_set.all())) # convert completed_on time to user's timezone completed_on = timezone.localtime(build_obj.completed_on) completed_on_template = '%H:%M' if self._was_yesterday_or_earlier(completed_on): completed_on_template = '%d/%m/%Y ' + completed_on_template build['completed_on'] = completed_on.strftime( completed_on_template) targets = [] target_objs = build_obj.get_sorted_target_list() for target_obj in target_objs: if target_obj.task: targets.append(target_obj.target + ':' + target_obj.task) else: targets.append(target_obj.target) build['targets'] = ' '.join(targets) # abbreviated form of the full target list abbreviated_targets = '' num_targets = len(targets) if num_targets > 0: abbreviated_targets = targets[0] if num_targets > 1: abbreviated_targets += (' +%s' % (num_targets - 1)) build['targets_abbreviated'] = abbreviated_targets recent_builds.append(build) return JsonResponse(recent_builds, safe=False)
def get(self, request, *args, **kwargs): """ Returns a list of builds in JSON format. """ project = None project_id = request.GET.get('project_id', None) if project_id: try: project = Project.objects.get(pk=project_id) except: # if project lookup fails, assume no project pass recent_build_objs = Build.get_recent(project) recent_builds = [] for build_obj in recent_build_objs: dashboard_url = reverse('builddashboard', args=(build_obj.pk, )) buildtime_url = reverse('buildtime', args=(build_obj.pk, )) rebuild_url = \ reverse('xhr_buildrequest', args=(build_obj.project.pk,)) cancel_url = \ reverse('xhr_buildrequest', args=(build_obj.project.pk,)) build = {} build['id'] = build_obj.pk build['dashboard_url'] = dashboard_url buildrequest_id = None if hasattr(build_obj, 'buildrequest'): buildrequest_id = build_obj.buildrequest.pk build['buildrequest_id'] = buildrequest_id build['recipes_parsed_percentage'] = \ int((build_obj.recipes_parsed / build_obj.recipes_to_parse) * 100) tasks_complete_percentage = 0 if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED): tasks_complete_percentage = 100 elif build_obj.outcome == Build.IN_PROGRESS: tasks_complete_percentage = build_obj.completeper() build['tasks_complete_percentage'] = tasks_complete_percentage build['state'] = build_obj.get_state() build['errors'] = build_obj.errors.count() build['dashboard_errors_url'] = dashboard_url + '#errors' build['warnings'] = build_obj.warnings.count() build['dashboard_warnings_url'] = dashboard_url + '#warnings' build['buildtime'] = sectohms(build_obj.timespent_seconds) build['buildtime_url'] = buildtime_url build['rebuild_url'] = rebuild_url build['cancel_url'] = cancel_url build['is_default_project_build'] = build_obj.project.is_default build['build_targets_json'] = \ template_json(get_tasks(build_obj.target_set.all())) # convert completed_on time to user's timezone completed_on = timezone.localtime(build_obj.completed_on) completed_on_template = '%H:%M' if self._was_yesterday_or_earlier(completed_on): completed_on_template = '%d/%m/%Y ' + completed_on_template build['completed_on'] = completed_on.strftime( completed_on_template) targets = [] target_objs = build_obj.get_sorted_target_list() for target_obj in target_objs: if target_obj.task: targets.append(target_obj.target + ':' + target_obj.task) else: targets.append(target_obj.target) build['targets'] = ' '.join(targets) # abbreviated form of the full target list abbreviated_targets = '' num_targets = len(targets) if num_targets > 0: abbreviated_targets = targets[0] if num_targets > 1: abbreviated_targets += (' +%s' % (num_targets - 1)) build['targets_abbreviated'] = abbreviated_targets recent_builds.append(build) return JsonResponse(recent_builds, safe=False)
def get(self, request, *args, **kwargs): """ Returns a list of builds in JSON format. """ mrb_type = "all" project = None project_id = request.GET.get("project_id", None) if project_id: try: mrb_type = "project" project = Project.objects.get(pk=project_id) except: # if project lookup fails, assume no project pass recent_build_objs = Build.get_recent(project) recent_builds = [] # for timezone conversion tz = timezone.get_current_timezone() for build_obj in recent_build_objs: dashboard_url = reverse("builddashboard", args=(build_obj.pk,)) buildtime_url = reverse("buildtime", args=(build_obj.pk,)) rebuild_url = reverse("xhr_buildrequest", args=(build_obj.project.pk,)) cancel_url = reverse("xhr_buildrequest", args=(build_obj.project.pk,)) build = {} build["id"] = build_obj.pk build["dashboard_url"] = dashboard_url buildrequest_id = None if hasattr(build_obj, "buildrequest"): buildrequest_id = build_obj.buildrequest.pk build["buildrequest_id"] = buildrequest_id build["recipes_parsed_percentage"] = int((build_obj.recipes_parsed / build_obj.recipes_to_parse) * 100) tasks_complete_percentage = 0 if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED): tasks_complete_percentage = 100 elif build_obj.outcome == Build.IN_PROGRESS: tasks_complete_percentage = build_obj.completeper() build["tasks_complete_percentage"] = tasks_complete_percentage build["state"] = build_obj.get_state() build["errors"] = build_obj.errors.count() build["dashboard_errors_url"] = dashboard_url + "#errors" build["warnings"] = build_obj.warnings.count() build["dashboard_warnings_url"] = dashboard_url + "#warnings" build["buildtime"] = sectohms(build_obj.timespent_seconds) build["buildtime_url"] = buildtime_url build["rebuild_url"] = rebuild_url build["cancel_url"] = cancel_url build["is_default_project_build"] = build_obj.project.is_default build["build_targets_json"] = json(get_tasks(build_obj.target_set.all())) # convert completed_on time to user's timezone completed_on = timezone.localtime(build_obj.completed_on) completed_on_template = "%H:%M" if self._was_yesterday_or_earlier(completed_on): completed_on_template = "%d/%m/%Y " + completed_on_template build["completed_on"] = completed_on.strftime(completed_on_template) targets = [] target_objs = build_obj.get_sorted_target_list() for target_obj in target_objs: if target_obj.task: targets.append(target_obj.target + ":" + target_obj.task) else: targets.append(target_obj.target) build["targets"] = " ".join(targets) # abbreviated form of the full target list abbreviated_targets = "" num_targets = len(targets) if num_targets > 0: abbreviated_targets = targets[0] if num_targets > 1: abbreviated_targets += " +%s" % (num_targets - 1) build["targets_abbreviated"] = abbreviated_targets recent_builds.append(build) return JsonResponse(recent_builds, safe=False)