Ставим дату выполнения задачи в redmine автоматически
Еще один пост про редмайн.
У каждой задачи в этой замечательной управлялке проектами есть поле "дата выполнения". Примерно пол года назад у нас очень озаотились тем, чтобы дату ставили при переводе задачи в "выполнена", однако может быть несколь случаев:
Задача сразу поставлена с этой датой, что подразумевает сделать к такому то числу
Человек получил задачу и сразу поставил дату, что подразумевает, что к этому числу она будет выполнена
Человек ставит дату при выполнении задачи.
Теперь еще немного отвлечемся и вспомним, что задачи можно закрывать коммитом в репу, привязанную к проекту вида fixes #<issue number> Таким образом задачу мы закрыли, а вот поставить дату придется руками + многие (и я в том числе) забывают при выполнении задачи ставить дату выполнения, что не есть хорошо.
Задача: ставить текущую дату как дату выполнения автоматом, при переводе задачи в статус "выполнена". Если дата уже стоит - ничего не менять.
Решение я придумал следующее: так как независимо от способа закрытия задачи все придет в БД и сделает апдейт записи о задаче, то можно написать триггер. Получилось примерно следующее:
create function close_issue_trigger() returns trigger AS ' begin if (NEW.status_id=15) then if (NEW.due_date is NULL) then NEW.due_date=current_date; end if; end if;
return NEW; end; ' language plpgsql;
create trigger close_issue_date before update on issues for each row execute procedure close_issue_trigger();
Что это делает?
Процедура меняет дату на текущую, если та не пустая. Триггер вызывает процедуру при апдейте талицы issues.











