Esempio n. 1
0
    def migrate_issues(self, started):
        """
        Migrates issues from SK to PUB.

        :param started:
        :return:
        """
        today = dt.today().replace(tzinfo=started.tzinfo)
        days = int((today - started).days) + 1

        sk_issues = self._sk_jira.search_issues(
            'createdDate >= startOfDay(-%dd) and (assignee=currentUser() or worklogAuthor=currentUser())'
            % days,
            maxResults=100000)

        pub_issues = self._pub_helper.get_issues_by_sk_links(
            [sk_issue.permalink() for sk_issue in sk_issues])

        exists_sk_links = [PubIssue(issue).sk_url for issue in pub_issues]

        new_issues = [
            issue for issue in sk_issues
            if issue.permalink() not in exists_sk_links
        ]

        if not new_issues:
            click.echo('Nothing to do')
            return

        hidden_keys = config.AppConfig.read_hidden_keys()

        new_issues = [
            issue for issue in new_issues if issue.key not in hidden_keys
        ]

        m_issues, s_issues, h_issues = io.edit_unsync_issues(new_issues)

        h_keys = [h_issue.key for h_issue in h_issues]
        config.AppConfig.write_hidden_keys(h_keys)

        for issue in m_issues:
            self.migrate(issue.key)
    def do_many(self, started):
        """
        Doing issues migration from started

        :param started:
        :return:
        """
        today = dt.today().replace(tzinfo=started.tzinfo)
        days = int((today - started).days) + 1

        sk_issues = self._sk_jira.search_issues(
            'createdDate >= startOfDay(-%dd) and assignee=currentUser()' %
            days)
        unsync_issues = []

        for sk_issue in sk_issues:
            pub_issues = self._pub_jira.search_issues(
                "'External issue ID' ~ '%s'" % sk_issue.permalink())
            if pub_issues:
                continue

            unsync_issues.append(sk_issue)

        if not unsync_issues:
            click.echo('Nothing to do')
            return

        hidden_keys = config.AppConfig.read_hidden_keys()

        unsync_issues = [
            issue for issue in unsync_issues if issue.key not in hidden_keys
        ]

        m_issues, s_issues, h_issues = io.edit_unsync_issues(unsync_issues)

        h_keys = [h_issue.key for h_issue in h_issues]
        config.AppConfig.write_hidden_keys(h_keys)

        for issue in m_issues:
            self.do(issue.key)