Как мне обновить пользовательское поле Bugzilla в пользовательском расширении Bugzilla, используя Perl? - PullRequest
0 голосов
/ 30 января 2019

У меня есть настраиваемое поле в Bugzilla, которое мне нужно обновить после выполнения вызова JSON на другой сервер после обновления ошибки.Я могу позвонить и получить ответ, но попытка обновить ошибку не удалась.

Я попытался установить поле в перехватчиках bug_end_of_update и object_end_of_set_all, но оно не сработалосовсем.Если я попытаюсь сделать это в bug_end_of_update, сам объект обновится в памяти, но он никогда не будет установлен в базе данных.Вызов update для объекта $bug в этом методе отправляет Bugzilla в бесконечный цикл, который требует полного перезапуска для исправления.В приведенном ниже коде я могу корректно обновить поле assigned_to.Использование такого же точного вызова не работает для настраиваемого поля.

sub object_end_of_set_all {
    my ($self, $args) = @_;

    my $object = $args->{'object'};

    if ($object->isa('Bugzilla::Bug')) {        
        $object->{'assigned_to'} = $object->{'reporter_id'};    #this works
        $object->{'cf_custom_field'} = 'hello world';         #this doesn't
        my $blessedField = {cf_custom_field};
        bless $blessedField;
        $object->set($blessedField, 'hello world');         #also doesn't work
        $object->update;                                    #puts bugzilla into an infinite loop that never returns
    }
}

Я ожидаю, что установка настраиваемого поля будет работать точно так же, как assigned_to, но это не так, и документация по этому вопросукрайне не хватает.

...