рдкрд╛рдЗрдерди рдХреЗ рд╕рд╛рде рдЬреАрд░рд╛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред рдЬреАрд░рд╛ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рдЪреВрдВрдХрд┐ рдкрд╛рдпрдерди рдПрдХ рдкрд╕рдВрджреАрджрд╛ рдЙрдкрдХрд░рдг рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдХрд▓реНрдк JIra рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрдирдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдореИрдВ рдХреИрдЯ рдкрд░ рдкреВрдЫрддрд╛ рд╣реВрдВред

рдЫрд╡рд┐

рдПрдЯрд▓рд╕рд┐рдпрди рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ ред рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣реА "рдЬреАрд░рд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:

pip install jira 

рдлрд┐рд░ рд╣рдо рдХреЛрдб рдореЗрдВ рд╕реАрдзреЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:

 from jira import JIRA 

рд╕рд░реНрд╡рд░ рд╕реЗ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдХреЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:

 jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key)) 

рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЗ рдмрдЬрд╛рдп рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдХреНрд░рд┐рдп рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдмрд┐рддрд╛рдП рдЧрдП рдШрдВрдЯреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛, рдпрд╛ JQL рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЦреЛрдЬ рдЙрдкрдХрд░рдг рдХрд╛рдлреА рд▓рдЪреАрд▓реЗ рдФрд░ рд╕рд░рд▓ рд╣реИрдВред рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдо рдПрдХ jql рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:

 jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql) 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЛрдИ рдХрд╛рд░реНрдп-рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред рдЬреЛ рдХреБрдЫ рдЧрд▓рдд рдерд╛, рдЙрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рдХреБрдЫ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╡рд┐рдирдореНрд░рддрд╛ рд╕реЗ рдЬреАрд░рд╛ рд╕реЗ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкреВрдЫрд╛:

 issue = jira.issue(issue_key) 

рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдХрд╛рд░реНрдп рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ jql рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдХрд╛рд░реНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП, рдЙрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛:

 worklogs = issue.fields.worklog.worklogs 

рдПрдХ рд╕рдорд╛рди рд░реЗрдЦрд╛ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╕реЗ рд╕рднреА рд╕рдордп рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рд╕реЗрдХрдВрдб рдФрд░ рдкрд╛рдареАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (1h, 3 рдбреА рдЖрджрд┐) рдореЗрдВ рд╕рдордп рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдРрд╕реЗ рдбрд┐рд╕реНрдХреНрд╕ рд▓реЗрдВ рдЬреЛ рдХрд┐ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдкреНрддрд╛рд╣ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА:

 worklog_date_str = re.search(r'(\d{4}-\d{2}-\d{2})', worklog.started) worklog_date = datetime.strptime(worklog_date_str.group(0), '%Y-%m-%d') if worklog_date.isocalendar()[1] == weak_number: 

рдЪреВрдВрдХрд┐ рддрд╛рд░реАрдЦ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реВрдВред рдПрдХреНрд╕рдкреНрд░реЗрд╢рди worklog_date.isocalendar () [1] рдЖрдкрдХреЛ рд╕рдкреНрддрд╛рд╣ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдпрд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рдбреЗрдЯрд╛ рдкрд░ рд╕реНрдЯреЙрдореНрдк рдХрд░реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрд░реЛрдХреНрдд рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдордп рдФрд░ рдЗрдЪреНрдЫрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпреБрдкреАрдбреА

рдЖрдк рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ
github.com/pycontribs/jira/blob/master/jira/client.py#L2371
рдзрдиреНрдпрд╡рд╛рдж HSerg

Source: https://habr.com/ru/post/hi442078/


All Articles