mirror of https://github.com/sipwise/repoapi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.8 KiB
102 lines
3.8 KiB
# Copyright (C) 2015-2020 The Sipwise Team - http://sipwise.com
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the Free
|
|
# Software Foundation, either version 3 of the License, or (at your option)
|
|
# any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
# more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
from django.http import HttpResponseNotFound
|
|
from django.shortcuts import get_object_or_404
|
|
from django.shortcuts import render
|
|
from natsort import humansorted
|
|
|
|
from .conf import settings
|
|
from build.models import BuildRelease
|
|
from repoapi.models import JenkinsBuildInfo as jbi
|
|
|
|
|
|
def index(request):
|
|
context = {"releases": humansorted(jbi.objects.releases(), reverse=True)}
|
|
return render(request, "panel/index.html", context)
|
|
|
|
|
|
def release_uuid(request, _uuid):
|
|
br = get_object_or_404(BuildRelease, uuid=_uuid)
|
|
projects = jbi.objects.release_projects_full(
|
|
br.release, release_uuid=br.uuid
|
|
)
|
|
queued_projects = [x for x in br.queued_projects_list if x not in projects]
|
|
release_jobs = BuildRelease.objects.release_jobs_full(br.uuid)
|
|
context = {
|
|
"stats_queued": True,
|
|
"build_release": br,
|
|
"projects": projects,
|
|
"release_jobs_size": len(settings.BUILD_RELEASE_JOBS),
|
|
"release_jobs": release_jobs,
|
|
"total": len(br.projects_list),
|
|
"queued_projects": queued_projects,
|
|
}
|
|
return render(request, "panel/release_uuid.html", context)
|
|
|
|
|
|
def release(request, _release):
|
|
if jbi.objects.is_release(_release):
|
|
projects = jbi.objects.release_projects_full(_release)
|
|
context = {"release": _release, "projects": projects}
|
|
return render(request, "panel/release.html", context)
|
|
else:
|
|
return HttpResponseNotFound("release {} not found".format(_release))
|
|
|
|
|
|
def project(request, _release, _project):
|
|
if jbi.objects.is_project(_release, _project):
|
|
_latest_uuid = jbi.objects.latest_uuid_js(_release, _project)
|
|
uuids = jbi.objects.release_project_uuids_set(_release, _project)
|
|
context = {
|
|
"project": _project,
|
|
"release": _release,
|
|
"uuids": uuids,
|
|
"latest_uuid": _latest_uuid,
|
|
}
|
|
return render(request, "panel/project.html", context)
|
|
else:
|
|
return HttpResponseNotFound("project {} not found".format(_project))
|
|
|
|
|
|
def uuid(request, _release, _project, _uuid):
|
|
if jbi.objects.is_uuid(_release, _project, _uuid):
|
|
_latest_uuid = jbi.objects.is_latest_uuid_js(_release, _project, _uuid)
|
|
context = {
|
|
"project": _project,
|
|
"release": _release,
|
|
"uuid": _uuid,
|
|
"latest_uuid": _latest_uuid,
|
|
}
|
|
return render(request, "panel/project_uuid.html", context)
|
|
else:
|
|
return HttpResponseNotFound("uuid {} not found".format(_uuid))
|
|
|
|
|
|
def latest_uuid(request, _release, _project):
|
|
if jbi.objects.is_project(_release, _project):
|
|
_latest_uuid = jbi.objects.latest_uuid_js(_release, _project)
|
|
if _latest_uuid is not None:
|
|
context = {
|
|
"project": _project,
|
|
"release": _release,
|
|
"uuid": _latest_uuid["tag"],
|
|
"latest_uuid": _latest_uuid,
|
|
}
|
|
return render(request, "panel/project_uuid.html", context)
|
|
else:
|
|
return HttpResponseNotFound("no latest uuid")
|
|
else:
|
|
return HttpResponseNotFound("project {} not found".format(_project))
|