如何用JIRA API筛选特定日期后添加的用户及设置项目查询条件
解决JIRA筛选指定日期后新增用户的问题
首先,search_users()方法本身不支持直接传入日期或项目过滤条件,因为JIRA的用户搜索API端点没有提供这类参数。可以通过以下两种方式实现需求:
方案1:拉取所有用户后本地过滤(无需管理员权限)
先获取所有用户,再通过用户对象的created字段筛选出指定日期之后创建的账号。代码示例:
from jira import JIRA from datetime import datetime # 初始化JIRA连接 jira = JIRA('<company-jira-url>', basic_auth=('username', 'password')) # 指定筛选起始日期(格式:YYYY-MM-DD) target_date = datetime.strptime('2024-01-01', '%Y-%m-%d') # 获取所有用户("."匹配所有用户) users = jira.search_users(".") # 遍历筛选符合条件的用户 for user in users: jira_user = jira.user(user.name) # 将用户创建时间转为datetime对象 user_created_date = datetime.strptime(jira_user.created[:10], '%Y-%m-%d') if user_created_date >= target_date: print(f"用户名: {jira_user.name}, 邮箱: {jira_user.emailAddress}, 创建时间: {jira_user.created}")
方案2:调用管理员API直接过滤(需管理员权限)
如果你的账号拥有JIRA管理员权限,可以直接调用JIRA的用户管理API,通过createdAfter参数直接过滤,避免拉取全部用户:
from jira import JIRA jira = JIRA('<company-jira-url>', basic_auth=('admin-username', 'admin-password')) # 指定日期格式为ISO 8601(例如:2024-01-01T00:00:00.000Z) created_after = '2024-01-01T00:00:00.000Z' # 调用管理员API获取符合条件的用户 response = jira._session.get( f"{jira.options['server']}/rest/api/3/users/search", params={'createdAfter': created_after, 'maxResults': 1000} ) response.raise_for_status() filtered_users = response.json() # 输出结果 for user in filtered_users: print(f"用户名: {user['name']}, 邮箱: {user['emailAddress']}, 创建时间: {user['created']}")
注意:
- 方案1的
search_users(".")可能受限于JIRA的用户搜索权限,如果无法获取全部用户,需要联系管理员调整权限。 - 方案2的API端点仅对管理员开放,普通账号无法调用。
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

