예제 #1
0
파일: support.py 프로젝트: Statoscop/blog
class BaseTest(object):
    def __init__(self):
        self.initSettings()

    def initSettings(self):
        self.old_locale = locale.setlocale(locale.LC_ALL)
        locale.setlocale(locale.LC_ALL, str('C'))
        self.settings = get_my_settings()
        self.settings['THEME'] = "../"
        self.settings['filenames'] = {}
        self.reader = RstReader(self.settings)
        self.writer = Writer("output", self.settings)

    def gen_article_and_html_from_rst(self, rstPath):
        content, metadata = self.reader.read(rstPath)
        article = Article(content=content, metadata=metadata)
        context = self.settings.copy()
        context['generated_content'] = {}
        context['static_links'] = set()
        context['static_content'] = {}
        context['localsiteurl'] = self.settings['SITEURL']
        generator = ArticlesGenerator(context=context,
                                      settings=self.settings,
                                      path=CONTENT_DIR,
                                      theme=self.settings['THEME'],
                                      output_path=OUTPUT_DIR)
        generator.generate_context()
        f = lambda a: True if (a.slug == article.slug) else False
        result = list(filter(f, generator.context["articles"]))[0]
        self.writer.write_file(result.save_as,
                               generator.get_template('article'),
                               generator.context,
                               article=result)
        soup = BeautifulSoup(
            open("./" + self.writer.output_path + '/' + result.save_as),
            "html.parser")
        return (result, soup)

    def gen_page_and_html_from_rst(self, rstPath):
        content, metadata = self.reader.read(rstPath)
        page = Page(content=content, metadata=metadata)
        context = self.settings.copy()
        context['generated_content'] = {}
        context['static_links'] = set()
        context['static_content'] = {}
        context['localsiteurl'] = self.settings['SITEURL']
        generator = PagesGenerator(context=context,
                                   settings=self.settings,
                                   path=CONTENT_DIR,
                                   theme=self.settings['THEME'],
                                   output_path=OUTPUT_DIR)
        generator.generate_context()
        f = lambda a: True if (a.slug == page.slug) else False
        result = list(filter(f, generator.context["pages"]))[0]
        self.writer.write_file(result.save_as,
                               generator.get_template('page'),
                               generator.context,
                               page=result)
        soup = BeautifulSoup(
            open("./" + self.writer.output_path + '/' + result.save_as),
            "html.parser")
        return (result, soup)

    def gen_tag_and_html_from_name(self, name):
        context = self.settings.copy()
        context['generated_content'] = {}
        context['static_links'] = set()
        context['static_content'] = {}
        context['localsiteurl'] = self.settings['SITEURL']
        generator = ArticlesGenerator(context=context,
                                      settings=self.settings,
                                      path=CONTENT_DIR,
                                      theme=self.settings['THEME'],
                                      output_path=OUTPUT_DIR)
        generator.generate_context()
        generator.generate_tags(self.writer.write_file)
        selectedTag = None

        for tag, articles in generator.tags.items():
            if tag.name == name:
                selectedTag = tag

        soup = BeautifulSoup(
            open("./" + self.writer.output_path + '/' + selectedTag.save_as),
            "html.parser")
        return (selectedTag, soup)

    def gen_category_and_html_from_name(self, name):
        context = self.settings.copy()
        context['generated_content'] = {}
        context['static_links'] = set()
        context['static_content'] = {}
        context['localsiteurl'] = self.settings['SITEURL']
        generator = ArticlesGenerator(context=context,
                                      settings=self.settings,
                                      path=CONTENT_DIR,
                                      theme=self.settings['THEME'],
                                      output_path=OUTPUT_DIR)
        generator.generate_context()
        generator.generate_categories(self.writer.write_file)
        selectedCategory = None

        for category, articles in generator.categories:
            if category.name == name:
                selectedCategory = category

        soup = BeautifulSoup(
            open("./" + self.writer.output_path + '/' +
                 selectedCategory.save_as), "html.parser")
        return (selectedCategory, soup)

    def gen_author_and_html_from_name(self, name):
        context = self.settings.copy()
        context['generated_content'] = {}
        context['static_links'] = set()
        context['static_content'] = {}
        context['localsiteurl'] = self.settings['SITEURL']
        generator = ArticlesGenerator(context=context,
                                      settings=self.settings,
                                      path=CONTENT_DIR,
                                      theme=self.settings['THEME'],
                                      output_path=OUTPUT_DIR)
        generator.generate_context()
        generator.generate_authors(self.writer.write_file)
        selectedAuthor = None

        for author, articles in generator.authors:
            if author.name == name:
                selectedAuthor = author

        soup = BeautifulSoup(
            open("./" + self.writer.output_path + '/' +
                 selectedAuthor.save_as), "html.parser")
        return (selectedAuthor, soup)