openSUSE-release-tools/osclib/unignore_command.py

46 lines
1.6 KiB
Python
Raw Normal View History

import dateutil.parser
from datetime import datetime
from osc.core import get_request
from osclib.comments import CommentAPI
2017-03-17 14:41:11 -05:00
from osclib.request_finder import RequestFinder
class UnignoreCommand(object):
MESSAGE = 'Unignored: returned to active backlog.'
def __init__(self, api):
self.api = api
self.comment = CommentAPI(self.api.apiurl)
2017-03-17 14:41:11 -05:00
def perform(self, requests, cleanup=False):
"""
Unignore a request by removing from ignore list.
"""
requests_ignored = self.api.get_ignored_requests()
2017-03-17 14:41:11 -05:00
if len(requests) == 1 and requests[0] == 'all':
requests_ignored = {}
else:
2017-03-17 14:41:11 -05:00
for request_id in RequestFinder.find_sr(requests, self.api):
if request_id in requests_ignored.keys():
2024-05-07 17:55:17 +02:00
print(f'{request_id}: unignored')
del requests_ignored[request_id]
2019-11-20 08:17:36 +01:00
self.api.del_ignored_request(request_id)
self.comment.add_comment(request_id=str(request_id), comment=self.MESSAGE)
if cleanup:
now = datetime.now()
for request_id in set(requests_ignored):
request = get_request(self.api.apiurl, str(request_id))
if request.state.name not in ('new', 'review'):
changed = dateutil.parser.parse(request.state.when)
diff = now - changed
if diff.days > 3:
print('Removing {} which was {} {} days ago'
.format(request_id, request.state.name, diff.days))
2019-11-20 08:17:36 +01:00
self.api.del_ignored_request(request_id)
return True