MT#7247 reduce initial load, take two

* call the js using the already known data
* fix flake8 + django-jenkins error

Change-Id: If4a133270aa97c7ada173c074a368313e77d3deb
changes/72/7472/4
Victor Seva 10 years ago
parent f9159bb4ee
commit 1689bab0de

@ -281,7 +281,7 @@ function clean_uuids(release, project) {
}
}
function create_new_uuid(release, project, values) {
function create_new_uuid(release, project, values, update=true) {
var uuid = values.tag;
if (uuid == null || $.release[project].uuids.has(uuid)) {
return;
@ -296,11 +296,18 @@ function create_new_uuid(release, project, values) {
$.release[project][uuid] = { failed: false, jobs: new Set(),};
create_new_uuid_panel(project, uuid);
update_uuid_info(release, project, uuid);
if(update) {
update_uuid_info(release, project, uuid);
} else {
if(values.latest) {
$.release[project].last_uuid = uuid;
showLatestUUID(project, uuid);
}
}
set_project_status(project, {created: true});
}
function create_new_project(release, project) {
function create_new_project(release, project, update=true) {
if ($.release.projects.has(project)) {
return;
}
@ -309,7 +316,9 @@ function create_new_project(release, project) {
interval: 5000, last_uuid: null, removed_uuids: new Set()};
create_new_project_panel(project);
get_uuids_for_project(release, project);
if (update) {
get_uuids_for_project(release, project);
}
}
/******************************************************************/

@ -1,4 +1,5 @@
{% extends "panel/base.html" %}
{% load jsonify %}
{% block title %}{{ release }}{% endblock %}
{% block navlist %}
<li class="active"><a href="#">{{ release }}</a></li>
@ -23,8 +24,22 @@ $( document ).ready(function() {
$.release.timer = setInterval(function(){
update_info('{{release}}');
}, $.release.interval);
{% for project in projects %}
create_new_project('{{ release }}', '{{ project.projectname }}');
{% for projectname, project in projects.iteritems %}
create_new_project('{{ release }}', '{{ projectname }}', false);
{% for uuid, uuid_value in project.iteritems %}
{% if uuid_value.latest %}
values = {tag: '{{ uuid }}', latest: true };
{% else %}
values = {tag: '{{ uuid }}', latest: false };
{% endif %}
create_new_uuid('{{ release }}', '{{ projectname }}', values, false);
{% for jobname, job in uuid_value.iteritems %}
{% if jobname != 'latest' %}
data = {{ job|jsonify }};
create_new_job('{{ release }}', '{{ projectname }}', '{{ uuid }}', data);
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
});
</script>

@ -23,7 +23,7 @@ def index(request):
def release(request, _release):
projects = jbi.objects.release_projects(_release, flat=False)
projects = jbi.objects.release_projects_full(_release)
context = {'release': _release,
'projects': projects}
return render(request, 'panel/release.html', context)

@ -16,6 +16,7 @@ import logging
import re
from django.db import models
from django.forms.models import model_to_dict
from repoapi.tasks import get_jbi_files
logger = logging.getLogger(__name__)
@ -25,6 +26,22 @@ commit_re = re.compile(r"^(\w{7}) ")
class JenkinsBuildInfoManager(models.Manager):
def release_projects_full(self, release):
res = dict()
for project in self.release_projects(release):
res[project] = dict()
uuids = self.release_project_uuids(release, project)
for uuid in uuids:
res[project][uuid] = dict()
jobs = self.jobs_by_uuid(release, project, uuid)
for job in jobs:
res[project][uuid][job.jobname] = model_to_dict(job)
# date is not editable... so not in the result
res[project][uuid][job.jobname]['date'] = job.date
uuid = self.latest_uuid(release, project)['tag']
res[project][uuid]['latest'] = True
return res
def releases(self, flat=True):
res = self.get_queryset().values('param_release').distinct()
if flat:

@ -38,6 +38,7 @@ INSTALLED_APPS = [
'django_extensions',
'django_assets',
'djcelery',
'jsonify',
]
MIDDLEWARE_CLASSES = (

@ -32,6 +32,9 @@ api_patterns = [
url(r'^release/(?P<release>[^/]+)/$',
views.ProjectList.as_view(),
name='project-list'),
url(r'^release_full/(?P<release>[^/]+)/$',
views.ProjectFullList.as_view(),
name='project-fulllist'),
url(r'^release/(?P<release>[^/]+)/(?P<project>[^/]+)/latest/$',
views.LatestUUID.as_view(),
name='latestuuid-list'),

@ -86,6 +86,13 @@ class ProjectList(APIView):
return Response(projects)
class ProjectFullList(APIView):
def get(self, request, release, _format=None):
projects = jbi.objects.release_projects_full(release)
return Response(projects)
class ProjectUUIDList(APIView):
def get(self, request, release, project, _format=None):

@ -10,3 +10,4 @@ six
webassets
django-celery
flower
django-jsonify

@ -1,6 +1,6 @@
-r common.txt
django-jenkins
flake8
django-jenkins==0.19
flake8==2.6
pep8
pylint
coverage

@ -5,7 +5,7 @@ FROM docker.mgm.sipwise.com/sipwise-jessie:latest
# is updated with the current date. It will force refresh of all
# of the base images and things like `apt-get update` won't be using
# old cached versions when the Dockerfile is built.
ENV REFRESHED_AT 2016-07-19
ENV REFRESHED_AT 2016-08-02
RUN apt-get update
RUN apt-get install --assume-yes python2.7 python2.7-dev python-distribute python-pip git screen

@ -10,3 +10,4 @@ six
webassets
django-celery
flower
django-jsonify

@ -1,6 +1,6 @@
-r common.txt
django-jenkins
flake8
django-jenkins==0.19
flake8==2.6
pep8
pylint
coverage

Loading…
Cancel
Save