From 8ec323b76f91c1fe3eb5da1a103853e7e39462cd Mon Sep 17 00:00:00 2001 From: Kalpesh Krishna Date: Mon, 29 Aug 2016 13:22:51 -0400 Subject: Bug 1294478 - Move JSON serialization out of the templates and into perl to improve performance --- enter_bug.cgi | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'enter_bug.cgi') diff --git a/enter_bug.cgi b/enter_bug.cgi index afaffd752..697b6c8df 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -52,6 +52,7 @@ use Bugzilla::Token; use Bugzilla::Field; use Bugzilla::Status; use Bugzilla::UserAgent; +use JSON::XS qw(encode_json); my $user = Bugzilla->login(LOGIN_REQUIRED); @@ -438,7 +439,33 @@ my $format = $template->get_format("bug/create/create", scalar $cgi->param('format'), scalar $cgi->param('ctype')); +my %data; +my $count = 0; +foreach my $c (@{ $product->components }) { + next if not $c->is_active; + $data{components}[$count] = $c->name; + $data{comp_desc}[$count] = $c->description; + $data{initialowners}[$count] = $c->default_assignee->login; + my @flag_list; + foreach my $f (@{ $c->flag_types->{bug} }) { + push @flag_list, $f->id; + } + foreach my $f (@{ $c->flag_types->{attachment} }) { + push @flag_list, $f->id; + } + $data{flags}[$count] = join(',', @flag_list); + $count++; + if (Bugzilla->params->{'useqacontact'}) { + $data{initialqacontacts}[$count] = $c->default_qa_contact->login; + } + my @initial_cc_list; + foreach my $cc_user (@{ $c->initial_cc }) { + push @initial_cc_list, $cc_user->login; + } + $data{initialccs}[$count] = join(', ', @initial_cc_list); +} +$vars->{data} = encode_json(\%data); print $cgi->header($format->{'ctype'}); $template->process($format->{'template'}, $vars) - || ThrowTemplateError($template->error()); + || ThrowTemplateError($template->error()); -- cgit v1.2.3-24-g4f1b