Как использовать API bugzilla в существующем коде bugzilla?

Что ж, на данный момент у меня две цели.

  1. У пользователя нет прав на редактирование ошибки в bugzilla, но он / она должен писать / публиковать комментарии к этой ошибке. Я думаю, что это возможно с помощью следующего API, но я не уверен, так как я новичок в bugzilla и Perl. http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html#add_comment

  1. Я хочу импортировать ошибки с помощью importxml.pl, но мне не нужны новые записи в БД. Я просто хочу изменить некоторые поля существующих ошибок bugzilla на основе файла bug.xml, который содержит информацию об ошибке.

    т.е. perl -T C: \ bugzilla \ bugzilla \ importxml.pl -v C: \ bugzilla \ bugzilla \ mybugs \ bug.xml

Возможно, следующее API может быть полезным, но я не уверен.

http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html#update


Итак, каковы возможные способы достижения этих целей?

Как я думаю, может быть, мне стоит использовать методы этих API в существующем коде bugzilla, и мои мечты таковы:

  1. комментарии будут включены для пользователей, у которых нет права на редактирование ошибок.
  2. Я запускаю сценарий importxml.pl из командной строки, передав некоторые параметры, и изменю некоторые поля существующих ошибок.

Но я не уверен, правильно я думаю или ошибаюсь. Я тоже не знаю, как использовать метод этих API ??


person Khokhar    schedule 26.04.2012    source источник


Ответы (2)


Скрипт email_in.pl может делать то, о чем вы просите. Однако вам нужно будет создать пользователя, у которого есть разрешения на внесение изменений, и вам нужно будет преобразовать данные в форму, понятную для email_in.pl.

http://www.bugzilla.org/docs/4.2/en/html/api/email_in.html

person Wayne Allen    schedule 26.04.2012

Могу помочь по первому пункту:

Вот отрывок из сценария svn_bz_append.pl (http://www.telegraphics.com.au/svn/svn_bz/trunk/), которые я изменил, которые я использую для обновления комментариев bugzilla при коммитах svn. Обратите внимание, что у меня этот сценарий работает на том же компьютере, что и установка Bugzilla, поскольку он использует модули из каталога Bugzilla. У меня это работает для Bugzilla v 4.2.3.

Я пропустил часть этого скрипта, чтобы вытащить отрывок ниже:

use strict;
use warnings;

use Bugzilla;
use Bugzilla::Config;
use Bugzilla::Bug;

use Data::Dumper;

... создать / получить идентификатор пользователя и несколько идентификаторов ошибок для работы ...

eg:

my $userid = 1;
my @bugs = ( 1, 2, 3 );
my $message = 'Say something here';

... теперь переберите идентификаторы ошибок и добавьте комментарий ...

foreach my $bugId (@bugs) {

my $user = new Bugzilla::User({ id => $userid}) 
 || ThrowUserError('invalid_username', { id => $userid}); #get the user from bugzilla
print STDERR 'user: '. Dumper($user); #pretty prints the user object

Bugzilla->set_user($user); #this authenticates the user so that you may perform actions on bugs that the user has permissions to.

my $bug = Bugzilla::Bug->check($bugId); #gets the bug
print STDERR 'bug: '. Dumper($bug); #pretty prints the bug object

$bug->add_comment($message); #adds a comment to the bug
$bug->update(); #updated the bug - don't forget to do this!

}

Обратите внимание, что функции Dumper просто используют отличный модуль Data :: Dumper: http://perldoc.perl.org/Data/Dumper.html - кроме отладки, они вам не нужны.

Информация для входа поступила из: Как мне пройти аутентификацию при использовании Bugzilla Perl API в скрипте?

person Lanceomagnifico    schedule 25.04.2014