Ich habe die öffentliche API von Python verwendet, um das Backlog zu organisieren. Als Memorandum.
Wenn Sie es bemerken, ist es das Ende des Jahres. Im Verlauf der Geschichte ist der Ort, an dem ich für die Reinigung verantwortlich bin, Backlog. Wir haben viele Problemmanagementsysteme, denen wir täglich verpflichtet sind.
Automatisierung des Extrahierens von Ausstellungskarten für nicht zugewiesenes Personal und Zuweisen von neuem Personal. Da es nicht möglich ist, subjektiv darüber zu verfügen, habe ich mich zunächst entschlossen, eine verantwortliche Person zu bestimmen, um die Verantwortung zu klären. Auf einen Blick gibt es Dutzende von Tickets, für die die verantwortliche Person nicht festgelegt wurde, und es wird beurteilt, dass es schwierig ist, sie manuell einzufügen. Ich möchte es automatisch mit einem Werkzeug machen.
setup.py
from setuptools import setup
setup(
name='',
version='1.0.0',
author='Der Name der Person, die es gemacht hat',
author_email='Kontakt-E-Mailadresse',
install_requires=[
'requests==2.11.1',
'docopt==0.6.2'
],
entry_points="""\ #←←←←←←←← Dies!!!!!!!!!!!!
[console_scripts]
wariate = update_assignee_id:main
""",
)
setup.py verfügt über viele nützliche Funktionen, darunter entry_points. Es ist dasselbe wie pserve in Pyramids setup.py, wodurch die Notwendigkeit entfällt, Python-Befehle auszuführen. Es ist klein, aber nützlich, wenn der Name der Python-Datei lang oder die Hierarchie tief ist.
Beispiel) Wenn Sie das Tool ausführen möchten, ohne entry_points festzulegen, aktivieren Sie es zuerst
(venv)python /User/tool/backlog/update_assignee_id.py --api-key=uiwejaefdhpasid8fpa8etw3to
Wenn Sie das Tool mit festgelegten Eintrittspunkten ausführen, aktivieren Sie es zuerst (venv)wariate --api-key=uiwejaefdhpasid8fpa8etw3to
update_assignee_id.py
"""execute update assignee id
usage: wariate (--api-key=<api-key>)
options:
--api-key=<api-key> api key
"""
from docopt import docopt
def main():
args = docopt(__doc__)
update_assignee_id(args['--api-key'])
Nehmen Sie nur das Dokument am Anfang der Python-Datei und die Hauptfunktion auf. Wenn Sie es so schreiben, werden die erforderlichen Argumente überprüft. Es gibt andere nützliche Funktionen, daher sollten Sie sie verwenden. Im Gegensatz zu anderen Parsern bezieht es sich auf Dokumente. Daher ist es auch von Vorteil, dass Sie die Situation vermeiden können, in der nur Dokumente nicht verwaltet werden.
update_assignee_id.py
import json
import requests
__API_KEY = '?apiKey={}'
__BASE_END_POINT = 'https://domein.backlog.jp/api/v2/'
__PROJECT_END_POINT = __BASE_END_POINT + 'projects'
def get_project_ids(api_key):
r = requests.get(__PROJECT_END_POINT + __API_KEY.format(api_key))
projects = json.loads(r.text)
return list(map(lambda project: project['id'], projects))
Nehmen Sie das Teil zur Hand, um die Liste der Projekt-IDs zu erhalten. Immerhin ist Anfragen ein Push, und es ist einfach, es als intuitive Quelle für menschliches Lesen zu verwenden. Übrigens wurde bestätigt, dass diese Quelle mit Python 3.5 funktioniert. Im Fall der Python2-Serie war der Rückgabetyp der Kartenfunktion meiner Meinung nach eine Liste. Im Fall von 2 Serien war die Typkonvertierung in eine Liste meines Erachtens nicht erforderlich. Vielleicht.
update_assignee_id.py
__GET_ISSUE_QUERY = {
'statusId[]': [1, 2, 3],
'sort': 'assignee',
'order': 'asc'
}
__ISSUE_END_POINT = __BASE_END_POINT + 'issues'
def get_issues(api_key, project_ids):
is_continue = True
params = __GET_ISSUE_QUERY
params['projectId[]'] = project_ids
while is_continue:
r = requests.get(__ISSUE_END_POINT + __API_KEY.format(api_key), params=params)
issues = json.loads(r.text)
for issue in issues:
if issue['assignee'] is None:
yield issue
else:
is_continue = False
break
Es ist möglich, eine Liste der Probleme zu erhalten, indem Sie eine bestimmte verantwortliche Person angeben. Die verantwortliche Person kann jedoch ein nicht festgelegtes Problem nicht absichtlich erkennen (API-Spezifikation). Daher wagte ich es nicht, die verantwortliche Person einzugrenzen, sondern sortierte die verantwortliche Person in aufsteigender Reihenfolge und brachte daraufhin die Fragen ein, für die die verantwortliche Person nicht zuerst festgelegt wurde.
update_assignee_id.py
def update_issue(issue, api_key):
base_url = '/'.join([__ISSUE_END_POINT, issue['issueKey']]) + __API_KEY.format(api_key)
params = {
'assigneeId': issue['createdUser']['id']
}
r = requests.patch(base_url, params)
if r.status_code != 200:
raise Exception('update error occurred:{}'.format(issue['issueKey']))
print('updated:{}'.format(issue['issueKey']))
Auf diese Weise kann die verantwortliche Person vom Ersteller aktualisiert werden. Ich schäme mich, zum ersten Mal die Anforderungskategorie Patch zu kennen. Zur richtigen Verwendung mit Post post → ganzes Update Patch → Teilweise aktualisiert Es scheint. Ich habe etwas gelernt
Wir sind ein solches Unternehmen, aber wenn Sie interessiert sind, wären wir Ihnen dankbar, wenn Sie uns über am Ende unserer Ingenieur-Blog-Top-Seite von Qiita kontaktieren könnten. Wir freuen uns auf!
Recommended Posts