Могу ли я получить список пользователей, назначенных для проекта?
Используя модуль python-redmine, есть ли способ перечислить всех пользователей, назначенных проекту через API Redmine?
Я обнаружил, что могу запрашивать информацию об отдельных пользователях, и, возможно, пользователь API Key назначен только для определенного проекта, и он может видеть только других пользователей в проекте. Поэтому я могу сделать следующее, но это крайне неэффективно:
from redmine import Redmine
redmine = Redmine("https://myserver.net/", key="blahblah")
my_users = []
for x in range(1, 301):
try:
user = redmine.user.get(str(x))
my_users.append(user.id)
except:
print "",
Приведенный выше код дает мне то, что я хочу, список пользователей проекта... но это занимает слишком много времени, чтобы быть практичным. Плюс могут быть идентификаторы пользователей выше, чем любой диапазон, который я выбираю.
Обновление: вот что я получил, thnx @njzk2
my_users = []
project = redmine.project.get('myproject')
for membership in project.memberships:
my_users.append(membership.user.id)
2 ответа
Вероятно, что-то вроде:
for membership in redmine.project.get('my_project').memberships:
print membership.user_id
см. http://python-redmine.readthedocs.org/resources/project_membership.html и http://python-redmine.readthedocs.org/resources/project.html
Ответ от njzk2 хорош, но он все еще делает 2 отдельных вызова API:
redmine.project.get('my_project')
redmine.project.get('my_project').memberships
Поэтому, если вам нужно сначала получить все доступные данные о проекте, а затем всех участников проекта, тогда это лучший доступный вариант. Но если вам нужно только получить членов, вы можете сделать это за один вызов API через:
redmine.project_membership.filter(project_id='my_project')
( документы)
Вы, наверное, задаетесь вопросом, почему существует так много способов сделать что-то одно, ну, потому что могут быть разные варианты использования, и Python-Redmine пытается лучше всего предложить разные способы достижения цели. Таким образом, вам придется тщательно просматривать документацию и найти лучший доступный способ, который подходит именно для вашего случая.