Beispiel #1
0
class ConfluenceInstance(object):
    def __init__(self):
        self.settings = ConfluenceSettings()
        self.server = Server(self.settings.uri).confluence2
        self.db = DatabaseWrapper()
        self.page = None

    def get_token(self):
        LOGGER.info('Logging in to Confluence as %s' % self.settings.login)
        token = self.server.login(self.settings.login, self.settings.password)
        return token

    def get_page(self):
        if self.page is None:
            LOGGER.info('Fetching page contents from Confluence')
            data = self.server.getPage(
                self.get_token(),
                self.settings.namespace,
                self.settings.pagename
            )
            self.page = ConfluencePage(data)
        return self.page

    def save_page(self, page):
        page = self.__attach_statistics(page)
        self.server.storePage(self.get_token(), page.data)

    def __attach_statistics(self, page):
        stats = Stats(self.db.get_dc_issues()).get_result()
        content = page.data['content']
        message = structured_macro_info(
            'Warning',
            paragraph(update_message(self.settings.login, strftime("%Y-%m-%d %H:%M:%S %z", gmtime())))
        )
        to_go_count = stats['total']['count'] - stats['ready']['count'] - stats['passed']['count'] - stats['failed'][
            'count']
        stat_info = paragraph(
            structured_macro_status('Grey', '%s total' % len(DatabaseWrapper.get_all_issues())) +
            structured_macro_status('Grey', '%s desk check' % stats['total']['count']) +
            structured_macro_status('Blue', '%s ready' % stats['ready']['count']) +
            structured_macro_status('Green', '%s pass' % stats['passed']['count']) +
            structured_macro_status('Red', '%s fail' % stats['failed']['count']) +
            structured_macro_status_subtle('%s to go' % to_go_count)
        )

        content = message + stat_info + content
        page.data.update({'content': str(content)})
        return page

    def __outdated_issues_block(self):
        items_for_list = []
        for issue in self.db.get_outdated_issues():
            items_for_list.append({
                'link': JiraSettings().browse + issue.key,
                'title': issue.key,
                'comment': ' (%s)' % issue.est_date,
            })

        if len(items_for_list) > 0:
            outdated = paragraph(
                structured_macro_expand('%s outdated issues' % len(items_for_list),
                                        unordered_list_with_hrefs(items_for_list))
            )
        else:
            outdated = ''
        return outdated