Several minor changes
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# find all subtasks of a story and keep description in sync
|
||||
# zisco 2022-05-03 07:25
|
||||
|
||||
from tkinter.tix import INTEGER
|
||||
from tokenize import Number
|
||||
from types import ClassMethodDescriptorType
|
||||
from jira import JIRA, Issue, Comment, exceptions
|
||||
import re
|
||||
import csv
|
||||
import xlsxwriter
|
||||
import logging
|
||||
import pymsteams
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
|
||||
def update_subtask(issue, parent):
|
||||
issue_dict = {
|
||||
'project': {'id': 12501},
|
||||
'summary': "[{}] {}".format(type, escaped),
|
||||
'description': issue.fields.description,
|
||||
'issuetype': {'name': issue_type},
|
||||
'priority': {'name': issue.fields.priority.name},
|
||||
'parent': {'key': parent},
|
||||
'labels': issue.fields.labels,
|
||||
#'customfield_10022' - Story Points
|
||||
'timetracking': {'originalEstimate': "{}d".format(subtask_sp)},
|
||||
'assignee': {'name': assignee}
|
||||
}
|
||||
new_issue = jira_server.create_issue(fields=issue_dict)
|
||||
|
||||
# consider components
|
||||
existingComponents = []
|
||||
for component in issue.fields.components:
|
||||
existingComponents.append({"name" : component.name})
|
||||
new_issue.update(fields={"components": existingComponents})
|
||||
#new_issue.update(priority={"name": issue.fields.priority.name})
|
||||
|
||||
logging.info('Created Sub-Task {}'.format(new_issue))
|
||||
|
||||
# set https_proxy
|
||||
os.environ['https_proxy'] = "http://uaproxy.wien.gv.at:3128"
|
||||
|
||||
logging.basicConfig(filename='sub_task_generator.log',
|
||||
filemode='a',
|
||||
format='%(asctime)s - %(levelname)s: %(message)s',
|
||||
level=logging.INFO,
|
||||
encoding='utf-8')
|
||||
|
||||
host = "https://jira.wien.gv.at/"
|
||||
pat = "OTAyMTM3MjY0MjE0Ovz6bu0ti1TlEdSegmmiWiJ2wGeD"
|
||||
|
||||
headers = JIRA.DEFAULT_OPTIONS["headers"].copy()
|
||||
headers["Authorization"] = f"Bearer {pat}"
|
||||
jira_server = JIRA(server=host, options={"headers": headers})
|
||||
|
||||
# use filter or single issue
|
||||
issues_Jql = jira_server.search_issues('filter=20262') #, expand='changelog')
|
||||
#issues_Jql = jira_server.search_issues('key in (WRGWR-905)') #, expand='changelog')
|
||||
#issues_Jql = jira_server.search_issues('labels in (Refinement11012022) AND type not in (Bug) AND status not in (Done) and ("Story Points" is EMPTY or "Story Points" = 0)') #, expand='changelog')
|
||||
|
||||
logging.info('Keep sub-task description in sync with story description')
|
||||
|
||||
issue: Issue
|
||||
parent_issue: Issue
|
||||
chng=0
|
||||
for issue in issues_Jql:
|
||||
logging.info('Working on {}'.format(issue))
|
||||
|
||||
# get parent-issue
|
||||
parent = issue.fields.parent
|
||||
|
||||
parent_issue = jira_server.issue(parent.key)
|
||||
|
||||
if parent_issue.fields.description != issue.fields.description:
|
||||
issue.update(notify=False, description=parent_issue.fields.description)
|
||||
logging.info('Updated sub-task description with story description')
|
||||
|
||||
chng += 1
|
||||
# send info to teams as well
|
||||
# TODO
|
||||
|
||||
# no changes detected
|
||||
# You must create the connectorcard object with the Microsoft Webhook URL
|
||||
if chng == 0:
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
# the async_connectorcard object is used instead of the normal one.
|
||||
myTeamsMessage = pymsteams.async_connectorcard("https://atos365.webhook.office.com/webhookb2/f107169d-26b9-46ff-a973-b7aa1f37e552@33440fc6-b7c7-412c-bb73-0e70b0198d5a/IncomingWebhook/6cf64f8f6f1b40e198c1a981921afed1/181686a4-0d13-4990-a87a-e4814c1abc55")
|
||||
|
||||
myTeamsMessage.title("JIRA Sub-Task Syncer")
|
||||
myTeamsMessage.text("No changes in description detected")
|
||||
myTeamsMessage.color("#F9EC26")
|
||||
|
||||
myTeamsMessage.printme()
|
||||
|
||||
# to send the message, pass to the event loop
|
||||
loop.run_until_complete(myTeamsMessage.send())
|
||||
Reference in New Issue
Block a user