Могу ли я получить список пользователей, назначенных для проекта?

Используя модуль 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:

  1. redmine.project.get('my_project')
  2. redmine.project.get('my_project').memberships

Поэтому, если вам нужно сначала получить все доступные данные о проекте, а затем всех участников проекта, тогда это лучший доступный вариант. Но если вам нужно только получить членов, вы можете сделать это за один вызов API через:

redmine.project_membership.filter(project_id='my_project') ( документы)

Вы, наверное, задаетесь вопросом, почему существует так много способов сделать что-то одно, ну, потому что могут быть разные варианты использования, и Python-Redmine пытается лучше всего предложить разные способы достижения цели. Таким образом, вам придется тщательно просматривать документацию и найти лучший доступный способ, который подходит именно для вашего случая.

Другие вопросы по тегам