Видимость задач

Обсуждаем TrackStudio по-русски

Видимость задач

Postby sunshinetk » Tue Aug 10, 2010 5:02 pm

TrackStudio 3.5.68
Пользователь может видеть только задачи где он автор или ответственный.
В задаче есть UDF поле "Заявитель", если задачу создает Оператор, то Пользователь добавляется в это поле.
Вопрос: Как сделать, что бы пользователь видел задачи где он не автор и не ответственный, но присутствует в поле "Заявитель"?
Буду благодарен за идеи.
sunshinetk
 
Posts: 63
Joined: Wed Sep 16, 2009 8:27 am

Re: Видимость задач

Postby admin » Thu Aug 12, 2010 1:11 am

sunshinetk wrote:TrackStudio 3.5.68
Пользователь может видеть только задачи где он автор или ответственный.
В задаче есть UDF поле "Заявитель", если задачу создает Оператор, то Пользователь добавляется в это поле.
Вопрос: Как сделать, что бы пользователь видел задачи где он не автор и не ответственный, но присутствует в поле "Заявитель"?
Буду благодарен за идеи.


С видимостью задачи где он ответственный уже много проблем, в 4.0 эту фичу вырезали. Лучше давать/забирать права явно, скриптом, при создании задачи или добавлении сообщения.
Maxim Kramarenko (mailto: maximkr@trackstudio.com)
TrackStudio - Hierarchical Bug & Issue Tracking Software
http://www.trackstudio.com
admin
Site Admin
 
Posts: 7305
Joined: Thu Jan 01, 1970 3:00 am
Location: Smolensk, Russia

Re: Видимость задач

Postby sunshinetk » Fri Aug 13, 2010 11:16 am

А как давать и забирать права в Trigger / Create Task / AFTER Trigger ?
Проблема в том, что скрипт должен выполняться под пользователем у которого нет разрешения на раздачу прав.
Смотрел ваш пример, где +login - доступ на задачу,
Получился такой скрипт:
String Сust = task.getUdfValue("Заявитель");
String UserId = CSVImport.findUserIdByLogin(Сust);
String usId = task.getSubmitter().getId();
String groupId = CSVImport.findUserStatusIdByName("Оператор SD");
if (Сust != null || task.getSubmitter().getLogin() != Cust)
AdapterManager.getInstance().getSecuredAclAdapterManager().createAcl(task.getSecure(), task.getId(), UserId, usId, groupId);
return task;

При выполнении под пользователем с правами выдает такое сообщение: InvalidParameterException: className=com.trackstudio.securedkernel.SecuredAclAdapterManager, method=createAcl, parameter=taskId||toUserId, userId=8a485db029eac24a0129eebeafdf0626
делал все по javadoc
public java.lang.String createAcl(SessionContext sc,
java.lang.String taskId,
java.lang.String toUserId,
java.lang.String userId,
java.lang.String groupId)
throws GranException
Create a new acl rule for task, user or group.
sc - session context
taskId - task's id for which acl rule will be created.
toUserId - user's id. For this user acl rule will act.
userId - user's id for which acl rule will be created.
groupId - group's id for which acl rule will be created.

В вашем примере в качестве sc почему то передается message.getTaskId().
Подскажите, где ошибка и как правильно выполнить раздачу прав доступа к задаче, если скрипт выполняется из под юзера без прав на раздачу?
sunshinetk
 
Posts: 63
Joined: Wed Sep 16, 2009 8:27 am

Re: Видимость задач

Postby Petr » Fri Aug 13, 2010 12:54 pm

это метод общий для настройки прав для пользователей и задач, поэтому вам надо передавать в метод либо userId != null и taskId == null - это правило создается для пользователя, либо наоборот userId == null и taskId != null - это правило для задачи.
то есть в вашем случая надо вместо параметра userId передавать null
TS Support
email: parsentev@yandex.ru
Petr
 
Posts: 1125
Joined: Wed Aug 12, 2009 4:38 pm

Re: Видимость задач

Postby sunshinetk » Fri Aug 13, 2010 5:46 pm

Petr wrote:это метод общий для настройки прав для пользователей и задач, поэтому вам надо передавать в метод либо userId != null и taskId == null - это правило создается для пользователя, либо наоборот userId == null и taskId != null - это правило для задачи.
то есть в вашем случая надо вместо параметра userId передавать null

Я так тоже пробовал, в таком случае создается правило, но в корневой папке, а не в задаче и создается оно для группы, а пользователя там нет, т.е. получается группа "Оператор SD" входит в группу "Оператор SD".
И работает это все, если у пользователя есть права назначать группы доступа. Если нет прав, то скрипт не отрабатывает.
sunshinetk
 
Posts: 63
Joined: Wed Sep 16, 2009 8:27 am

Re: Видимость задач

Postby Petr » Fri Aug 13, 2010 5:52 pm

пришлите дамп базы анонимной, и вопросы по поводу скриптов, что бы их проверить можно было. тогда дело быстрее пойдет.
TS Support
email: parsentev@yandex.ru
Petr
 
Posts: 1125
Joined: Wed Aug 12, 2009 4:38 pm

Re: Видимость задач

Postby sunshinetk » Wed Sep 01, 2010 6:43 pm

Попытался давать права таким скриптом:
import com.trackstudio.kernel.manager.AclManager;

SessionContext sc = task.getSecure();
Сust = task.getUdfValue("Заявитель");
UserId = CSVImport.findUserIdByLogin(Сust);
groupId = CSVImport.findUserStatusIdByName("Заявители");
if (Сust != null || task.getSubmitter().getLogin() != Cust){
AclManager.getAcl().createAcl(task.getId(), null, UserId, null, sc.getUserId(null));
}
return task;

Права раздаются для задачи, но почему то для Пользователя с UserId назначается его родная группа, а не группа "Заявители".
Как сделать так, что бы пользователь для конкретной задачи попадал в группу "Заявители"?
пробовал еще так:
String aclId = AclManager.getAcl().createAcl(task.getId(), null, UserId, null, sc.getUserId(null));
aclManager.updateAcl(aclId, groupId, false);

но выдает ошибку: Attempt to resolve method: updateAcl() on undefined variable or class name: aclManager
sunshinetk
 
Posts: 63
Joined: Wed Sep 16, 2009 8:27 am

Re: Видимость задач

Postby sunshinetk » Tue Sep 07, 2010 12:18 pm

В принципе более менее заработало в таком виде:
import com.trackstudio.kernel.manager.KernelManager;
SessionContext sc = task.getSecure();
Сust = task.getUdfValue("Заявитель");
UserId = CSVImport.findUserIdByLogin(Сust);
groupId = CSVImport.findUserStatusIdByName("Заявители");
if (Сust != null || task.getSubmitter().getLogin() != Cust){
String aclId = KernelManager.getAcl().createAcl(task.getId(), null, UserId, null, sc.getUserId(null));
KernelManager.getAcl().updateAcl(aclId, groupId, false);
}
Всем спасибо за помощь!
Тему можно закрыть.
sunshinetk
 
Posts: 63
Joined: Wed Sep 16, 2009 8:27 am


Return to TrackStudio Support [Russian]

Who is online

Users browsing this forum: No registered users and 0 guests

cron