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, 259 insertions, 200 deletions
diff --git a/python/tbc_www/views.py b/python/tbc_www/views.py
index b47cd88..305ed8c 100644
--- a/python/tbc_www/views.py
+++ b/python/tbc_www/views.py
@@ -1,40 +1,93 @@
-# Copyright 1998-2015 Gentoo Foundation
+# 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
+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 gentoo_www.models import SiteSettings, Layout, Pages, SubPages, Sponsors, Posts
+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
+ 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
- contact = get_object_or_404(SubPages, nav2 = 'contact')
TmpDict = {'site' : site}
TmpDict['page'] = page
TmpDict['pages'] = pages
TmpDict['subpages'] = subpages
- TmpDict['contact'] = contact
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['EM'] = EbuildsMetadata.objects.order_by('-Id')[:Lines]
+ 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.order_by('-TimeStamp')[:Lines]:
+ for BL in BuildLogs.objects.filter(New = True):
adict2 = {}
adict2['BuildLogId'] = BL.BuildLogId
adict2['C'] = BL.EbuildId.PackageId.CategoryId.Category
@@ -46,9 +99,9 @@ def home(request):
if BL.Fail:
adict2['BE_tmp'] = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
alist.append(adict2)
- TmpDict['BL'] = alist
+ TmpDict['BL_tmp'] = alist
adict = {}
- BJ_Tmp = BuildJobs.objects.order_by('-TimeStamp')[:Lines]
+ BJ_Tmp = BuildJobs.objects.filter(New = True)
for BJ in BJ_Tmp:
adict2 = {}
adict2['EbuildId'] = BJ.EbuildId.EbuildId
@@ -56,6 +109,7 @@ def home(request):
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 == []:
@@ -84,178 +138,85 @@ def home(request):
def categories(request):
pagerequest = 'packages'
TmpDict = default_TmpDict(pagerequest)
- alist = []
- for CM in CategoriesMetadata.objects.filter(CategoryId__Active = True).order_by('CategoryId__Category'):
- adict = {}
- adict['CategoryId'] = CM.CategoryId.CategoryId
- adict['Category'] = CM.CategoryId.Category
- adict['Descriptions'] = CM.Descriptions
- packages = []
- for P in Packages.objects.filter(Active = True).filter(CategoryId_id = CM.CategoryId.CategoryId).order_by('Package'):
- packages.append(P.Package + '\n')
- adict['Packages'] = packages
- alist.append(adict)
- TmpDict['CM_tmp'] = alist
- return render(request, 'pages/' + pagerequest + '/index.html', TmpDict)
+ 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 = []
- for PM in PackagesMetadata.objects.filter(PackageId__CategoryId_id = category_id).filter(PackageId__Active = True):
- adict = {}
- adict['PackageId'] = PM.PackageId.PackageId
- adict['Package'] = PM.PackageId.Package
- adict['Descriptions'] = PM.Descriptions
- adict['Commitlog'] =PM.Gitlog
- adict['Repoman'] = False
- adict['Qa'] = False
- adict['Bl'] = False
- adict['Blo'] = False
- adict['Blb'] = False
- PR = PackagesRepoman.objects.filter(PackageId__PackageId = PM.PackageId.PackageId)
- if PR.exists():
- adict['Repoman'] = True
- BLQ = BuildLogsQa.objects.filter(BuildLogId__EbuildId__PackageId__PackageId = PM.PackageId.PackageId).filter(BuildLogId__EbuildId__Active = True)
- if BLQ.exists():
- adict['Qa'] = True
- BL_tmp = BuildLogs.objects.filter(EbuildId__PackageId__PackageId = PM.PackageId.PackageId).filter(EbuildId__Active = True)
- if BL_tmp.exists():
- adict['Bl'] = True
- if BL_tmp.filter(Fail = True).exists():
- for BL in BL_tmp:
- BE_tmp = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
- for BE in BE_tmp:
- if BE.ErrorId.ErrorId == 3:
- adict['Blo'] = True
- if BE.ErrorId.ErrorId >= 4:
- adict['Blb'] = True
- ebuilds = []
- for E in Ebuilds.objects.filter(Active = True).filter(PackageId__Package = PM.PackageId.Package):
- ebuilds.append(E.Version + '::' + E.PackageId.RepoId.Repo + '\n')
- adict['Ebuilds'] = ebuilds
- alist.append(adict)
- TmpDict['PM_tmp'] = alist
- TmpDict['C'] = get_object_or_404(Categories, CategoryId = category_id)
- return render(request, 'pages/' + pagerequest + '/category/index.html', TmpDict)
+ 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 ebuilds(request, package_id):
+def versions(request, package_id):
pagerequest = 'packages'
TmpDict = default_TmpDict(pagerequest)
P = get_object_or_404(PackagesMetadata, PackageId__PackageId = package_id)
TmpDict['P'] = P
- TmpDict['EM_tmp'] = EbuildsMetadata.objects.filter(EbuildId__Active = True).filter(EbuildId__PackageId__Package = P.PackageId.Package)
- PR = PackagesRepoman.objects.filter(PackageId__PackageId = package_id)
- BLQ_tmp = BuildLogsQa.objects.filter(BuildLogId__EbuildId__PackageId__PackageId = package_id).filter(BuildLogId__EbuildId__Active = True)
- BL_tmp = BuildLogs.objects.filter(EbuildId__PackageId__PackageId = package_id).filter(EbuildId__Active = True)
- TmpDict['BLQ_tmp'] = BLQ_tmp
- TmpDict['BL_tmp'] = BL_tmp
- if PR.exists():
- TmpDict['PR'] = True
- else:
- TmpDict['PR'] = False
- if BLQ_tmp.exists():
- TmpDict['QA'] = True
- else:
- TmpDict['QA'] = False
- if BL_tmp.exists():
- TmpDict['Bl'] = True
- TmpDict['Blf'] = False
- if BL_tmp.filter(Fail = True).exists():
- TmpDict['Blf'] = True
- else:
- TmpDict['Bl'] = False
- alist = []
- for EM in TmpDict['EM_tmp']:
- BLe = BuildLogs.objects.filter(EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(EbuildId__Active = True)
- if BLe.exists():
- adict = {}
- adict['EbuildId'] = EM.EbuildId.EbuildId
- adict['fail'] = False
- adict['Blo'] = False
- adict['Blb'] = False
- if BLe.filter(Fail = True).exists():
- adict['fail'] = True
- for BL in BLe:
- BE_tmp = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
- for BE in BE_tmp:
- if BE.ErrorId.ErrorId == 3:
- adict['Blo'] = True
- if BE.ErrorId.ErrorId >= 4:
- adict['Blb'] = True
- adict['repoman'] = False
- BLRe = BuildLogsRepoman.objects.filter(BuildLogId__EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(BuildLogId__EbuildId__Active = True)
- if BLRe.exists():
- adict['repoman'] = True
- adict['qa'] = False
- BLQe = BuildLogsQa.objects.filter(BuildLogId__EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(BuildLogId__EbuildId__Active = True)
- if BLQe.exists():
- adict['qa'] = True
- alist.append(adict)
- print(alist)
- TmpDict['fi_tmp'] = alist
- return render(request, 'pages/' + pagerequest + '/ebuilds/index.html', TmpDict)
-
-def ebuild(request, ebuild_id):
- pagerequest = 'packages'
- TmpDict = default_TmpDict(pagerequest)
- TmpDict['E'] = get_object_or_404(Ebuilds, EbuildId = ebuild_id)
- TmpDict['EM_tmp'] = EbuildsMetadata.objects.filter(EbuildId__EbuildId = ebuild_id)
- TmpDict['EK_tmp'] = EbuildsKeywords.objects.filter(EbuildId__EbuildId = ebuild_id)
- BL_tmp = BuildLogs.objects.filter(EbuildId__EbuildId = ebuild_id)
- TmpDict['BL_tmp'] = BL_tmp
- alist = []
- for BL in BL_tmp:
+ alist =[]
+ EM_tmp = EbuildsMetadata.objects.filter(EbuildId__Active = True).filter(EbuildId__PackageId__PackageId = P.PackageId.PackageId)
+ for EM in EM_tmp:
adict = {}
- adict['BuildLogId'] = BL.BuildLogId
- adict['repoman'] = False
- adict['qa'] = False
- adict['Blo'] = False
- adict['Blb'] = False
- if BL.Fail:
- adict['fail'] = True
- BE_tmp = BuildLogsErrors.objects.filter(BuildLogId__BuildLogId = BL.BuildLogId)
- 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['Blo'] = True
- if BE.ErrorId.ErrorId >= 4:
- adict['Blb'] = True
+ 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['fi_tmp'] = alist
- TmpDict['EU_tmp'] = EbuildsIuse.objects.filter(EbuildId__EbuildId = ebuild_id)
- TmpDict['ER_tmp'] = EbuildsRestrictions.objects.filter(EbuildId__EbuildId = ebuild_id)
-
- return render(request, 'pages/' + pagerequest + '/ebuilds/ebuild/index.html', TmpDict)
+ TmpDict['EM_info'] = alist
+ return render(request, 'pages/categories/packages/versions/index.html', TmpDict)
-def new_main(request):
- pagerequest = 'new'
- Lines = 30
+def new_build_req(request):
+ pagerequest = 'build_req'
TmpDict = default_TmpDict(pagerequest)
- TmpDict['EM'] = EbuildsMetadata.objects.order_by('-Id')[:Lines]
- alist = []
- for BL in BuildLogs.objects.order_by('-TimeStamp')[:Lines]:
- 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['FailB'] = False
- adict2['SummeryText'] = BL.SummeryText
- if BL.Fail:
- adict2['BE_tmp'] = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
- for BE in adict2['BE_tmp']:
- if BE.ErrorId.ErrorId >= 3:
- adict2['FailB'] = True
- alist.append(adict2)
- TmpDict['BL'] = alist
adict = {}
- BJ_Tmp = BuildJobs.objects.order_by('-TimeStamp')[:Lines]
+ BJ_Tmp = BuildJobs.objects.order_by('-TimeStamp')
for BJ in BJ_Tmp:
adict2 = {}
adict2['EbuildId'] = BJ.EbuildId.EbuildId
@@ -286,8 +247,7 @@ def new_main(request):
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)
+ return render(request, 'pages/build_req/index.html', TmpDict)
def new_repoman(request):
pagerequest = 'new'
@@ -297,11 +257,10 @@ def new_repoman(request):
return render(request, 'pages/' + pagerequest + '/repoman/index.html', TmpDict)
def new_logs(request):
- pagerequest = 'new'
- Lines = 30
+ pagerequest = 'logs'
TmpDict = default_TmpDict(pagerequest)
alist = []
- for BL in BuildLogs.objects.order_by('-TimeStamp')[:Lines]:
+ for BL in BuildLogs.objects.order_by('-TimeStamp').filter(New = True):
adict2 = {}
adict2['BuildLogId'] = BL.BuildLogId
adict2['C'] = BL.EbuildId.PackageId.CategoryId.Category
@@ -311,20 +270,48 @@ def new_logs(request):
adict2['Fail'] = BL.Fail
adict2['SummeryText'] = BL.SummeryText
if BL.Fail:
- adict2['BE_tmp'] = BuildLogsErrors.objects.filter(BuildLogId = BL.BuildLogId)
- try:
- PackagesRepomanInfo = PackagesRepoman.objects.get(PackageId__PackageId = BL.EbuildId.PackageId.PackageId)
- except PackagesRepoman.DoesNotExist as e:
- adict2['PR'] = False
- else:
- adict2['PR'] = PackagesRepomanInfo.RepomanText
+ adict['FI'] = fail_status(BL.BuildLogId)
alist.append(adict2)
TmpDict['BL_tmp'] = alist
- return render(request, 'pages/' + pagerequest + '/logs/index.html', TmpDict)
+ 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 = 'new'
+ 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)
@@ -346,7 +333,7 @@ def new_logs_build(request, buildlog_id):
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 = BC.BuildLogId)
+ BU_tmp = BuildLogsUse.objects.filter(BuildLogId = buildlog_id)
config_eoption = []
BLI['configid'] = BC.ConfigId.ConfigId
BLI['hostname'] = BC.ConfigId.HostName
@@ -370,22 +357,7 @@ def new_logs_build(request, buildlog_id):
BLI['use_enable'] = use_enable
if not use_disable == []:
BLI['use_disable'] = use_disable
- adict = {}
- adict['repoman'] = False
- adict['qa'] = False
- adict['Blo'] = False
- adict['Blb'] = False
- 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['Blo'] = True
- if BE.ErrorId.ErrorId >= 4:
- adict['Blb'] = True
- TmpDict['FI'] = adict
+ TmpDict['FI'] = fail_status(buildlog_id)
try:
BRQ = BuildLogsQa.objects.get(BuildLogId = B.BuildLogId)
BLI['QA'] = BRQ.SummeryText
@@ -397,4 +369,91 @@ def new_logs_build(request, buildlog_id):
except BuildLogsRepoman.DoesNotExist as e:
BLI['Repoman'] = False
TmpDict['BLI'] = BLI
- return render(request, 'pages/' + pagerequest + '/logs/build/index.html', TmpDict) \ No newline at end of file
+ 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)