#!/usr/bin/python
# -*- encoding: utf-8 -*-

import sys
import os
import subprocess

sys.path.insert(0, '/opt/direct-py/startrek-python-client-sni-fix')
from startrek_client import Startrek

pathlist = ["/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/usr/games", "/usr/local/games"]
os.environ["PATH"] = os.pathsep.join(pathlist)

HOSTNAME = subprocess.check_output(['hostname', '-f']).strip()
SCRIPT_NAME = os.path.basename(__file__)
SIGN = u"----\nСкрипт %s с машины %s" % (SCRIPT_NAME, HOSTNAME)

STARTREK_TOKEN_FILE = '/etc/direct-tokens/startrek'

with open(STARTREK_TOKEN_FILE) as st_fd:
    startrek_token = st_fd.readline().strip()

startrek_client = Startrek(token=startrek_token, useragent=SCRIPT_NAME)
TAG = u"testing_finish_checked"


def run():
    releases = startrek_client.issues.find(u'Queue: DIRECT Type: Release Components: "Releases: Direct" Status: Testing Tags: !%s "Sort by": key desc' % (TAG))

    for release in releases:
        finished = True
        query = u"Relates: %s" % release.key
        tickets = startrek_client.issues.find(query)
       
        for ticket in tickets:
            status = startrek_client.issues[ticket.key].status.key
            if not (status == "closed" or ticket.key.startswith(u'DIRECTMIGR-') and status != "needInfo"):
                finished = False
                break

        if finished:
            startrek_client.issues[release.key].update(tags=startrek_client.issues[release.key].tags + [TAG])
            startrek_client.issues[release.key].comments.create(text=u"Все регрессии, баги и тикеты уже закрыты\n%s" % (SIGN))
                
    return


if __name__ == '__main__':
    run()

