Source code for gerrit.accounts.accounts
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
from gerrit.accounts.account import GerritAccount
[docs]
class GerritAccounts(object):
def __init__(self, gerrit):
self.gerrit = gerrit
self.endpoint = "/accounts"
[docs]
def search(
self,
query,
limit=25,
skip=0,
detailed=False,
suggested=False,
all_emails=False,
):
"""
Queries accounts visible to the caller.
:param query: Query string
:param limit: Int value that allows to limit the number of accounts
to be included in the output results
:param skip: Int value that allows to skip the given
number of accounts from the beginning of the list
:param detailed: boolean value, if True then full name,
preferred email, username and avatars for each account
will be added to the output result
:param suggested: boolean value, if True get account suggestions
based on query string. If a result limit n is not
specified, then the default 10 is used.
:param all_emails: boolean value, if True then all registered emails
for each account will be added to the output result
:return:
"""
option = filter(
None,
["DETAILS" if detailed else None, "ALL_EMAILS" if all_emails else None],
)
option = None if not option else option
params = {
k: v for k, v in (("n", limit), ("S", skip), ("o", option)) if v is not None
}
endpoint = self.endpoint + "/?"
if suggested:
endpoint += "suggest&"
endpoint += f"q={query}"
return self.gerrit.get(endpoint, params=params)
[docs]
def get(self, account, detailed=False):
"""
Returns an account
:param account: username or email or _account_id or 'self'
:param detailed: boolean type, If True then fetch info in more details, such as:
registered_on
:return:
"""
endpoint = self.endpoint + f"/{account}/"
if detailed:
endpoint += "detail"
result = self.gerrit.get(endpoint)
return GerritAccount(json=result, gerrit=self.gerrit)
[docs]
def create(self, username, input_):
"""
Creates a new account.
.. code-block:: python
input_ = {
"name": "John Doe",
"email": "john.doe@example.com",
"ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0T...YImydZAw==",
"http_password": "19D9aIn7zePb",
"groups": [
"MyProject-Owners"
]
}
new_account = client.accounts.create('john.doe', input_)
:param username: account username
:param input_: the AccountInput entity,
https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#account-input
:return:
"""
result = self.gerrit.put(
self.endpoint + f"/{username}",
json=input_,
headers=self.gerrit.default_headers,
)
return GerritAccount(json=result, gerrit=self.gerrit)