summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'python/tbc_www/views.py')
-rw-r--r--python/tbc_www/views.py459
1 files changed, 0 insertions, 459 deletions
diff --git a/python/tbc_www/views.py b/python/tbc_www/views.py
deleted file mode 100644
index c272c50..0000000
--- a/python/tbc_www/views.py
+++ /dev/null
@@ -1,459 +0,0 @@
-# Copyright 1998-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-from django.shortcuts import render, get_object_or_404, HttpResponseRedirect, redirect
-from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
-from django.conf import settings
-from django.urls import reverse
-from tbc_www.forms import BugForm, BugzillaUser
-from tbc_www.utils.bugzillasubmit import addnewbug
-from gentoo_www.models import SiteSettings, Layout, Pages, SubPages, Sponsors, Posts, Bugzilla
-from tbc_www.models import EbuildsMetadata, BuildLogs, BuildJobs, BuildLogsQa, \
- BuildJobsUse, Categories, CategoriesMetadata, Packages, PackagesMetadata, Ebuilds, \
- Repos, EbuildsKeywords, BuildLogsErrors, EbuildsRestrictions, EbuildsIuse, PackagesRepoman, \
- BuildLogsConfig, BuildLogsUse, BuildLogsRepoman, PackagesEmails, Jobs
-import re
-import gzip
-import os
-
-def default_TmpDict(pagerequest):
- site = get_object_or_404(SiteSettings)
- page = get_object_or_404(Pages, nav1 = pagerequest)
- jobs = get_object_or_404(Jobs, JobType = 'esync')
- pages = Pages.objects.all()
- if page.SubMenu:
- subpages = SubPages.objects.filter(PageId = page.PageId)
- else:
- subpages = False
- TmpDict = {'site' : site}
- TmpDict['page'] = page
- TmpDict['pages'] = pages
- TmpDict['subpages'] = subpages
- TmpDict['smappages'] = SubPages.objects.all()
- TmpDict['jobs'] = jobs
- return TmpDict
-
-def fail_status(buildlog_id):
- BU_tmp = BuildLogsUse.objects.filter(BuildLogId = buildlog_id)
- Test = False
- if BU_tmp != []:
- for BU in BU_tmp:
- if BU.Status:
- if BU.UseId.Flag == 'test':
- Test = True
- adict = {}
- adict['repoman'] = False
- adict['qa'] = False
- adict['others'] = False
- adict['build'] = False
- adict['TestRun'] = Test
- BE_tmp = BuildLogsErrors.objects.filter(BuildLogId__BuildLogId = buildlog_id)
- for BE in BE_tmp:
- if BE.ErrorId.ErrorId == 1:
- adict['repoman'] = True
- if BE.ErrorId.ErrorId == 2:
- adict['qa'] = True
- if BE.ErrorId.ErrorId == 3:
- adict['others'] = True
- if BE.ErrorId.ErrorId == 4:
- adict['test'] = True
- if BE.ErrorId.ErrorId >= 5:
- adict['build'] = True
- adict['builderror'] = BE.ErrorId.ErrorName
- if BE.ErrorId.ErrorName != 'install':
- adict['TestRun'] = False
- return adict
-
-def home(request):
- pagerequest = 'home'
- Lines = 10
- TmpDict = default_TmpDict(pagerequest)
- TmpDict['PM'] = PackagesMetadata.objects.filter(New = True)
- alist = []
- for EM in EbuildsMetadata.objects.filter(Updated = True):
- adict = {}
- adict['EbuildId'] = EM.EbuildId.EbuildId
- adict['C'] = EM.EbuildId.PackageId.CategoryId.Category
- adict['P'] = EM.EbuildId.PackageId.Package
- adict['CId'] = EM.EbuildId.PackageId.CategoryId.CategoryId
- adict['PId'] = EM.EbuildId.PackageId.PackageId
- adict['V'] = EM.EbuildId.Version
- adict['R'] = EM.EbuildId.PackageId.RepoId.Repo
- adict['TimeStamp'] = EM.EbuildId.TimeStamp
- adict['CommitId'] = EM.Commit
- adict['CommitMsg'] = EM.CommitMsg
- adict['Descriptions'] = EM.Descriptions
- adict['EK_tmp'] = EbuildsKeywords.objects.filter(EbuildId__EbuildId = EM.EbuildId.EbuildId)
- alist.append(adict)
- TmpDict['EM_list'] = alist
- alist = []
- for BL in BuildLogs.objects.filter(New = True):
- adict2 = {}
- adict2['BuildLogId'] = BL.BuildLogId
- adict2['C'] = BL.EbuildId.PackageId.CategoryId.Category
- adict2['P'] = BL.EbuildId.PackageId.Package
- adict2['V'] = BL.EbuildId.Version
- adict2['R'] = BL.EbuildId.PackageId.RepoId.Repo
- adict2['SummeryText'] = BL.SummeryText
- adict2['Fail'] = BL.Fail
- if BL.Fail:
- adict2['BE_tmp'] = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
- alist.append(adict2)
- TmpDict['BL_tmp'] = alist
- adict = {}
- BJ_Tmp = BuildJobs.objects.filter(New = True)
- for BJ in BJ_Tmp:
- adict2 = {}
- adict2['EbuildId'] = BJ.EbuildId.EbuildId
- adict2['C'] = BJ.EbuildId.PackageId.CategoryId.Category
- adict2['P'] = BJ.EbuildId.PackageId.Package
- adict2['V'] = BJ.EbuildId.Version
- adict2['R'] = BJ.EbuildId.PackageId.RepoId.Repo
- adict2['Status'] = BJ.Status
- adict2['title'] = "Setup: " + BJ.SetupId.Setup + "\n" + "Profile: " + BJ.SetupId.Profile + "\n"
- BJU = BuildJobsUse.objects.filter(BuildJobId = BJ.BuildJobId)
- if not BJU == []:
- use_enable = []
- use_disable = []
- for BU in BJU:
- if BU.Status:
- use_enable.append(BU.UseId.Flag)
- else:
- use_disable.append(BU.UseId.Flag)
- if not use_enable == []:
- adict2['title'] = adict2['title'] + "Enable: "
- for use in use_enable:
- adict2['title'] = adict2['title'] + use + " "
- adict2['title'] = adict2['title'] + "\n"
- if not use_disable == []:
- adict2['title'] = adict2['title'] + "Disable: "
- for use in use_disable:
- adict2['title'] = adict2['title'] + use + " "
- adict2['title'] = adict2['title'] + "\n"
- adict[BJ.BuildJobId] = adict2
- TmpDict['BJ'] = adict
- TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines]
- return render(request, 'pages/' + pagerequest + '/index.html', TmpDict)
-
-def categories(request):
- pagerequest = 'packages'
- TmpDict = default_TmpDict(pagerequest)
- alphabet_list = map(chr, range(97, 123))
- CM_tmp = CategoriesMetadata.objects.filter(CategoryId__Active = True).order_by('CategoryId__Category')
- list2 = []
- for a in alphabet_list:
- alist = []
- for CM in CM_tmp:
- if a == CM.CategoryId.Category[:1]:
- adict = {}
- adict['CategoryId'] = CM.CategoryId.CategoryId
- adict['Category'] = CM.CategoryId.Category
- adict['Descriptions'] = CM.Descriptions
- alist.append(adict)
- adict2 = {}
- adict2['letter'] = a
- adict2['CM_list'] = alist
- if alist != []:
- list2.append(adict2)
- TmpDict['CM_tmp'] = list2
- return render(request, 'pages/categories/index.html', TmpDict)
-
-def packages(request, category_id):
- pagerequest = 'packages'
- TmpDict = default_TmpDict(pagerequest)
- alist = []
- TmpDict['PM_tmp'] = PackagesMetadata.objects.filter(PackageId__CategoryId_id = category_id).filter(PackageId__Active = True)
- TmpDict['C'] = get_object_or_404(CategoriesMetadata, CategoryId__CategoryId = category_id)
- return render(request, 'pages/categories/packages/index.html', TmpDict)
-
-def versions(request, package_id):
- pagerequest = 'packages'
- TmpDict = default_TmpDict(pagerequest)
- P = get_object_or_404(PackagesMetadata, PackageId__PackageId = package_id)
- TmpDict['P'] = P
- alist =[]
- EM_tmp = EbuildsMetadata.objects.filter(EbuildId__Active = True).filter(EbuildId__PackageId__PackageId = P.PackageId.PackageId)
- for EM in EM_tmp:
- adict = {}
- ebuild_id = EM.EbuildId.EbuildId
- adict['EbuildId'] = ebuild_id
- adict['Slot'] = EM.Slot
- adict['Version'] = EM.EbuildId.Version
- adict['TimeStamp'] = EM.EbuildId.TimeStamp
- adict['EK_tmp'] = EbuildsKeywords.objects.filter(EbuildId__EbuildId = ebuild_id)
- adict['EU_tmp'] = EbuildsIuse.objects.filter(EbuildId__EbuildId = ebuild_id)
- adict['ER_tmp'] = EbuildsRestrictions.objects.filter(EbuildId__EbuildId = ebuild_id)
- BL_tmp = BuildLogs.objects.filter(EbuildId__EbuildId = ebuild_id)
- adict['BL_tmp'] = BL_tmp
- alist2 = []
- for BL in BL_tmp:
- adict2 = {}
- adict2['BuildLogId'] = BL.BuildLogId
- adict2['repoman'] = False
- adict2['qa'] = False
- adict2['Blo'] = False
- adict2['Blb'] = False
- if BL.Fail:
- adict2['fail'] = True
- BE_tmp = BuildLogsErrors.objects.filter(BuildLogId__BuildLogId = BL.BuildLogId)
- for BE in BE_tmp:
- if BE.ErrorId.ErrorId == 1:
- adict2['repoman'] = True
- if BE.ErrorId.ErrorId == 2:
- adict2['qa'] = True
- if BE.ErrorId.ErrorId == 3:
- adict2['Blo'] = True
- if BE.ErrorId.ErrorId >= 4:
- adict2['Blb'] = True
- adict2['Ble'] = BE.ErrorId.ErrorName
- alist2.append(adict2)
- adict['fi_tmp'] = alist2
- alist.append(adict)
- TmpDict['EM_info'] = alist
- return render(request, 'pages/categories/packages/versions/index.html', TmpDict)
-
-def new_build_req(request):
- pagerequest = 'build_req'
- TmpDict = default_TmpDict(pagerequest)
- adict = {}
- BJ_Tmp = BuildJobs.objects.order_by('-TimeStamp')
- for BJ in BJ_Tmp:
- adict2 = {}
- adict2['EbuildId'] = BJ.EbuildId.EbuildId
- adict2['C'] = BJ.EbuildId.PackageId.CategoryId.Category
- adict2['P'] = BJ.EbuildId.PackageId.Package
- adict2['V'] = BJ.EbuildId.Version
- adict2['R'] = BJ.EbuildId.PackageId.RepoId.Repo
- adict2['Status'] = BJ.Status
- adict2['title'] = "Setup: " + BJ.SetupId.Setup + "\n" + "Profile: " + BJ.SetupId.Profile + "\n"
- BJU = BuildJobsUse.objects.filter(BuildJobId = BJ.BuildJobId)
- if not BJU == []:
- use_enable = []
- use_disable = []
- for BU in BJU:
- if BU.Status:
- use_enable.append(BU.UseId.Flag)
- else:
- use_disable.append(BU.UseId.Flag)
- if not use_enable == []:
- adict2['title'] = adict2['title'] + "Enable: "
- for use in use_enable:
- adict2['title'] = adict2['title'] + use + " "
- adict2['title'] = adict2['title'] + "\n"
- if not use_disable == []:
- adict2['title'] = adict2['title'] + "Disable: "
- for use in use_disable:
- adict2['title'] = adict2['title'] + use + " "
- adict2['title'] = adict2['title'] + "\n"
- adict[BJ.BuildJobId] = adict2
- TmpDict['BJ'] = adict
- return render(request, 'pages/build_req/index.html', TmpDict)
-
-def new_repoman(request):
- pagerequest = 'new'
- Lines = 30
- TmpDict = default_TmpDict(pagerequest)
- TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines]
- return render(request, 'pages/' + pagerequest + '/repoman/index.html', TmpDict)
-
-def new_logs(request):
- pagerequest = 'logs'
- TmpDict = default_TmpDict(pagerequest)
- alist = []
- for BL in BuildLogs.objects.order_by('-TimeStamp').filter(New = True):
- adict2 = {}
- adict2['BuildLogId'] = BL.BuildLogId
- adict2['C'] = BL.EbuildId.PackageId.CategoryId.Category
- adict2['P'] = BL.EbuildId.PackageId.Package
- adict2['V'] = BL.EbuildId.Version
- adict2['R'] = BL.EbuildId.PackageId.RepoId.Repo
- adict2['Fail'] = BL.Fail
- adict2['SummeryText'] = BL.SummeryText
- if BL.Fail:
- adict2['FI'] = fail_status(BL.BuildLogId)
- alist.append(adict2)
- TmpDict['BL_tmp'] = alist
- TmpDict['QA_tmp'] = BuildLogsQa.objects.filter(BuildLogId__New = True)
- TmpDict['RM_tmp'] = BuildLogsRepoman.objects.filter(BuildLogId__New = True)
- return render(request, 'pages/logs/index.html', TmpDict)
-
-def new_build_logs_all(request):
- pagerequest = 'logs'
- object_on_page = 50
- TmpDict = default_TmpDict(pagerequest)
- BL_tmp = BuildLogs.objects.order_by('-TimeStamp').filter(Fail = True)
- alist = []
- for BL in BL_tmp:
- adict = {}
- adict['BuildLogId'] = BL.BuildLogId
- adict['C'] = BL.EbuildId.PackageId.CategoryId.Category
- adict['P'] = BL.EbuildId.PackageId.Package
- adict['V'] = BL.EbuildId.Version
- adict['R'] = BL.EbuildId.PackageId.RepoId.Repo
- adict['Fail'] = BL.Fail
- adict['SummeryText'] = BL.SummeryText
- if BL.Fail:
- adict['FI'] = fail_status(BL.BuildLogId)
- alist.append(adict)
- paginator = Paginator(alist, object_on_page)
- page = request.GET.get('page')
- try:
- BL_tmp = paginator.page(page)
- except PageNotAnInteger:
- # If page is not an integer, deliver first page.
- BL_tmp = paginator.page(1)
- except EmptyPage:
- # If page is out of range (e.g. 9999), deliver last page of results.
- BL_tmp = paginator.page(paginator.num_pages)
- TmpDict['BL_tmp'] = BL_tmp
- return render(request, 'pages/logs/all/build/index.html', TmpDict)
-
-def new_logs_build(request, buildlog_id):
- pagerequest = 'logs'
- TmpDict = default_TmpDict(pagerequest)
- TmpDict['Bugzillalogin'] = False
- B = BuildLogs.objects.get(BuildLogId = buildlog_id)
- EM = EbuildsMetadata.objects.get(EbuildId = B.EbuildId.EbuildId)
- PM = PackagesMetadata.objects.get(PackageId__PackageId = B.EbuildId.PackageId.PackageId)
- BLI = {}
- BLI['BuildLogId'] = buildlog_id
- BLI['EbuildId'] = B.EbuildId.EbuildId
- BLI['C'] = B.EbuildId.PackageId.CategoryId.Category
- BLI['P'] = B.EbuildId.PackageId.Package
- BLI['V'] = B.EbuildId.Version
- BLI['R'] = B.EbuildId.PackageId.RepoId.Repo
- BLI['EC'] = EM.Commit
- BLI['PD'] = EM.Descriptions
- BLI['PC'] = PM.Gitlog
- BLI['Fail'] = B.Fail
- BLI['Summery_text'] = B.SummeryText
- if B.BugId == "0":
- BLI['BugId'] = False
- else:
- BLI['BugId'] = B.BugId
- BC = BuildLogsConfig.objects.get(BuildLogId = buildlog_id)
- #CEO_tmp = ConfigsEmergeOptions.objects.filter(ConfigId = BC.ConfigId.ConfigId)
- BU_tmp = BuildLogsUse.objects.filter(BuildLogId = buildlog_id)
- config_eoption = []
- BLI['configid'] = BC.ConfigId.ConfigId
- BLI['hostname'] = BC.ConfigId.HostName
- BLI['config'] = BC.ConfigId.SetupId.Setup
- BLI['profile'] = BC.ConfigId.SetupId.Profile
- BLI['logid'] = BC.LogId
- BLI['logname'] = BC.LogName[1:]
- BLI['emerge_info_text'] = BC.EInfoId.EmergeInfoText
- #for CEO in CEO_tmp:
- # config_eoption.append(CEO.EmergeOptionId.EOption)
- #BLI['emerge_option'] = config_eoption
- if not BU_tmp == []:
- use_enable = []
- use_disable = []
- for BU in BU_tmp:
- if BU.Status:
- use_enable.append(BU.UseId.Flag)
- else:
- use_disable.append(BU.UseId.Flag)
- if not use_enable == []:
- BLI['use_enable'] = use_enable
- if not use_disable == []:
- BLI['use_disable'] = use_disable
- TmpDict['FI'] = fail_status(buildlog_id)
- try:
- BRQ = BuildLogsQa.objects.get(BuildLogId = B.BuildLogId)
- BLI['QA'] = BRQ.SummeryText
- except BuildLogsQa.DoesNotExist as e:
- BLI['QA'] = False
- try:
- BRR = BuildLogsRepoman.objects.get(BuildLogId = B.BuildLogId)
- BLI['Repoman'] = BRR.SummeryText
- except BuildLogsRepoman.DoesNotExist as e:
- BLI['Repoman'] = False
- TmpDict['BLI'] = BLI
- return render(request, 'pages/logs/build/index.html', TmpDict)
-
-def submit_to_bugzilla(request, form, buildlog_id):
- BC = BuildLogsConfig.objects.get(BuildLogId = buildlog_id)
- b = Bugzilla.objects.get(Username=request.user.username)
- args = {}
- args['product'] = form.cleaned_data['Product']
- args['component'] = form.cleaned_data['Component']
- args['version'] = form.cleaned_data['Version']
- args['summary'] = form.cleaned_data['Summary']
- args['description'] = form.cleaned_data['Description']
- args['comment'] = form.cleaned_data['EmergeInfo']
- args['assigned_to'] = form.cleaned_data['AssigendTo']
- args['password'] = request.session['bugzillapassword']
- args['username'] = b.Bugzillaname
- LogFile = BC.ConfigId.HostName + '/' + BC.ConfigId.SetupId.Setup + BC.LogName
- LogDir = settings.STATIC_ROOT + '/logs/'
- Filesize = os.path.getsize(LogDir + LogFile)/1024
- if Filesize > 900:
- #FIXME UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
- with open(LogDir + LogFile, 'rb') as orig_file:
- with gzip.open('/tmp' + BC.LogName + '.gz', 'wb') as zipped_file:
- zipped_file.writelines(orig_file)
- args['filename'] = '/tmp' + BC.LogName + '.gz'
- args['content_type'] = 'application/gzip'
- else:
- args['filename'] = LogDir + LogFile
- args['content_type'] = 'text/plain'
- args['comment_attach'] = 'Build log'
- newbug = addnewbug(args)
- return newbug
-
-def buildinfo_bugzilla(request, buildlog_id):
- pagerequest = 'logs'
- TmpDict = default_TmpDict(pagerequest)
- B = get_object_or_404(BuildLogs, BuildLogId = buildlog_id)
- C = B.EbuildId.PackageId.CategoryId.Category
- P = B.EbuildId.PackageId.Package
- V = B.EbuildId.Version
- R = B.EbuildId.PackageId.RepoId.Repo
- if request.method == 'POST':
- form = BugForm(request.POST)
- if form.is_valid():
- newbug = submit_to_bugzilla(request, form, buildlog_id)
- B.BugId = newbug.id
- B.save()
- return redirect('new_logs_build', buildlog_id=buildlog_id)
- else:
- if B.Fail == 'True':
- F = get_object_or_404(BuildLogsErrors, BuildLogId = buildlog_id)
- FailText = " : " + F.ErrorId.ErrorName
- else:
- FailText = ""
- E = get_object_or_404(BuildLogsConfig, BuildLogId = buildlog_id)
- PE = get_object_or_404(PackagesEmails, PackageId__PackageId = B.EbuildId.PackageId.PackageId)
- form = BugForm()
- form.fields['Product'].initial = 'Gentoo Linux'
- form.fields['Version'].initial = 'unspecified'
- form.fields['Summary'].initial = '[TEST][Tinderbox-cluster]=' + C + '/' + P + '-' + V + '::' + R + FailText
- form.fields['Description'].initial = B.SummeryText
- form.fields['EmergeInfo'].initial = E.EInfoId.EmergeInfoText
- form.fields['AssigendTo'].initial = PE.EmailId.Email
-
- TmpDict['form'] = form
- TmpDict['B'] = B
- return render(request, 'pages/logs/build/submitbug/index.html', TmpDict)
-
-def set_bugzilla_user(request):
- pagerequest = 'home'
- TmpDict = default_TmpDict(pagerequest)
- if request.method == 'POST':
- form = BugzillaUser(request.POST)
- if form.is_valid():
- b = Bugzilla.objects.get(Username=request.user.username)
- if b == []:
- b = Bugzilla(Bugzillaname = form.cleaned_data['BugzillaName'], Username = request.user.username)
- b.save()
- else:
- if b.Bugzillaname != form.cleaned_data['BugzillaName']:
- b.Bugzillaname = form.cleaned_data['BugzillaName']
- b.save()
- request.session['bugzillapassword'] = form.cleaned_data['BugzillaPassword']
- return HttpResponseRedirect('/home/')
-
- else:
- form = BugzillaUser()
- TmpDict['form'] = form
- return render(request, 'registration/bugzillauser.html', TmpDict)