diff options
Diffstat (limited to 'python/tbc_www/views.py')
-rw-r--r-- | python/tbc_www/views.py | 459 |
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) |