def assert_node_attributes(self, node): fragment = self.get_node_fragment(node) if node.type == "content": fragment = node.folder.get_fragment(self.site.content_folder) elif node.type == "media": fragment = node.folder.get_fragment(self.site.folder) if node.type in ("content", "media"): fragment = ("/" + fragment.strip("/")).rstrip("/") assert fragment == node.url assert settings.SITE_WWW_URL + fragment == node.full_url else: assert not node.url assert not node.full_url if node.type == "content": for ancestor in node.ancestors: assert( ancestor.folder.is_ancestor_of(node.folder) or ancestor.folder.same_as(node.folder)) assert node.source_folder == node.folder if not node == self.site and node.type not in ("content", "media"): assert not node.target_folder assert not node.temp_folder else: assert node.target_folder.same_as(Folder( os.path.join(settings.DEPLOY_DIR, fragment.lstrip("/")))) assert node.temp_folder.same_as(Folder( os.path.join(settings.TMP_DIR, fragment.lstrip("/"))))
def dopost(self, site): path = self.get_argument("path", None) original_path = self.get_argument("original_path", None) type = self.get_argument('type', None) repo = self.settings['sites'][site]['repo'] dvcs = DVCS.load_dvcs(self.siteinfo.folder.path, repo) if type == "file": f = File(self.siteinfo.folder.child(original_path)) newf = File(self.siteinfo.folder.child(path)) if not f.exists: newf.write("") dvcs.add_file(newf) else: f.move_to(newf) dvcs.add_file(newf, message="Renamed " + path) else: f = Folder(self.siteinfo.folder.child(original_path)) newf = Folder(self.siteinfo.folder.child(path)) if not f.exists: newf.make() else: f.move_to(newf) dvcs.add_file(newf, message="Renamed " + path) self.init_site(site, force=True)
def __init__(self, settings, site_path): super(SiteInfo, self).__init__(Folder(site_path)) self.settings = settings self.m = None self._stop = Event() self.nodemap = {site_path: self} self.resourcemap = {}
def dopost(self, site): path = self.get_argument("path", None) type = self.get_argument('type', None) repo = self.settings['sites'][site]['repo'] dvcs = DVCS.load_dvcs(self.siteinfo.folder.path, repo) f = None if type == "file": f = File(self.siteinfo.folder.child(path)) else: f = Folder(self.siteinfo.folder.child(path)) f.delete() dvcs.save_draft() self.init_site(site, force=True)
def simple_dict(self): ress = [] for resource in self.walk_resources(): fragment = Folder( resource.node.folder.get_fragment( self.site.folder.path)).child(resource.file.name) res = dict(name=resource.file.name, path=fragment) ress.append(res) nodes = [] for node in self.children: nodes.append(node.simple_dict) return dict(name=self.folder.name, path=self.folder.get_fragment(self.site.folder.path), resources=ress, nodes=nodes)
def test_folder_flattener(self): settings.MEDIA_PROCESSORS = {} settings.SITE_POST_PROCESSORS = { "blog": { "hydeengine.site_post_processors.FolderFlattener": { 'remove_processed_folders': True, 'pattern': "*.html" } } } self.generator = Generator(TEST_SITE.path) self.generator.generate() blog = Folder(settings.DEPLOY_DIR).child_folder("blog") class TestFlattener: def __init__(self): self.files = [] def visit_folder(self, folder): assert folder.name in ("blog") def visit_file(self, a_file): self.files.append(a_file.name) tester = TestFlattener() blog.list(tester) blog_src = Folder(settings.CONTENT_DIR).child_folder("blog") class VerifyFlattener: @staticmethod def visit_file(a_file): try: tester.files.index(a_file.name) except: assert False blog_src.walk(VerifyFlattener)
def render(self, context): sitemap_node = None self.path = self.path.render(context).strip('"') sitemap_node = context["site"].find_node(Folder(self.path)) if not sitemap_node: sitemap_node = context["site"] def later(page1, page2): return (page1, page2)[page2.created > page1.created] page = reduce(later, sitemap_node.walk_pages()) rendered = None rendered = render_to_string(str(page), context) excerpt_start = marker_start % "Excerpt" excerpt_end = marker_end % "Excerpt" start = rendered.find(excerpt_start) if not start == -1: context["latest_excerpt_url"] = page.url context["latest_excerpt_title"] = page.title start = start + len(excerpt_start) end = rendered.find(excerpt_end, start) return truncatewords_html(rendered[start:end], self.words) else: return ""
def test_folder_flattener(self): settings.MEDIA_PROCESSORS = {} settings.CONTENT_PROCESSORS = {} settings.SITE_POST_PROCESSORS = { "blog" : { "hydeengine.site_post_processors.FolderFlattener" : { 'remove_processed_folders': True, 'pattern':"*.html" } } } self.generator = Generator(TEST_SITE.path) self.generator.generate() blog = Folder(settings.DEPLOY_DIR).child_folder("blog") class TestFlattener: def __init__(self): self.files = [] def visit_folder(self, folder): assert folder.name in ("blog") def visit_file(self, a_file): self.files.append(a_file.name) tester = TestFlattener() blog.list(tester) blog_src = Folder(settings.CONTENT_DIR).child_folder("blog") class VerifyFlattener: @staticmethod def visit_file(a_file): try: tester.files.index(a_file.name) except: assert False blog_src.walk(VerifyFlattener)
from Queue import Empty from django.conf import settings from django.utils.html import strip_spaces_between_tags TEST_ROOT = os.path.dirname(os.path.abspath(__file__)) ROOT = os.path.abspath(TEST_ROOT + "/..") sys.path = [ROOT] + sys.path from hydeengine.file_system import File, Folder from hydeengine import url, Initializer, Generator, setup_env from hydeengine.siteinfo import SiteNode, SiteInfo, Page from hydeengine.site_post_processors import FolderFlattener TEST_ROOT = Folder(TEST_ROOT) TEST_SITE = TEST_ROOT.child_folder("test_site") def setup_module(module): Initializer(TEST_SITE.path).initialize(ROOT, force=True) setup_env(TEST_SITE.path) def teardown_module(module): TEST_SITE.delete() class TestFilters: def setup_method(self, method): self.files = [] def teardown_method(self, method):
def target_folder(self): return Folder(self.settings.DEPLOY_DIR)
def target_folder(self): deploy_folder = self.site.target_folder return deploy_folder.child_folder_with_fragment( Folder(self.site.media_folder.name).child(self.fragment))
import unittest from django.conf import settings from util import assert_html_equals TEST_ROOT = os.path.dirname(os.path.abspath(__file__)) ROOT = os.path.abspath(TEST_ROOT + "/..") sys.path = [ROOT] + sys.path from hydeengine.file_system import File, Folder from hydeengine import url, Initializer, Generator, setup_env from hydeengine.siteinfo import SiteNode, SiteInfo, Page from hydeengine.site_post_processors import FolderFlattener TEST_ROOT = Folder(TEST_ROOT) TEST_SITE = TEST_ROOT.child_folder("test_site") ORIGINAL_PRE_PROCESSORS = None if settings.configured: ORIGINAL_PRE_PROCESSORS = settings.SITE_PRE_PROCESSORS def setup_module(module): Initializer(TEST_SITE.path).initialize(ROOT, template='test', force=True) setup_env(TEST_SITE.path) ORIGINAL_PRE_PROCESSORS = settings.SITE_PRE_PROCESSORS settings.SITE_PRE_PROCESSORS = { '/': { 'hydeengine.site_pre_processors.NodeInjector': { 'variable': 'blog_node',
import os import sys from django.conf import settings TEST_ROOT = os.path.dirname(os.path.abspath(__file__)) ROOT = os.path.abspath(TEST_ROOT + "/..") sys.path = [ROOT] + sys.path from hydeengine.file_system import File, Folder from hydeengine import url, Initializer, setup_env from hydeengine.templatetags.hydetags \ import RenderHydeListingPageRewriteRulesNode as htaccessgen TEST_SITE = Folder(TEST_ROOT).child_folder("test_site") def setup_module(module): Initializer(TEST_SITE.path).initialize(ROOT, template="test", force=True) setup_env(TEST_SITE.path) def teardown_module(module): TEST_SITE.delete() class TestHtaccess: def test_listing_page_rewite_rule_generator(self): # test with two names settings.LISTING_PAGE_NAMES = ['listing', 'index']
def temp_folder(self): temp_folder = self.site.temp_folder return temp_folder.child_folder_with_fragment( Folder(self.site.media_folder.name).child(self.fragment))
def content_folder(self): return Folder(self.settings.CONTENT_DIR)
def assert_node_type(node_dir, type): node = self.site.find_child(Folder(node_dir)) assert node assert Folder(node_dir).same_as(node.folder) for child in node.walk(): assert child.type == type
def layout_folder(self): return Folder(self.settings.LAYOUT_DIR)
def media_folder(self): return Folder(self.settings.MEDIA_DIR)
def temp_folder(self): return Folder(self.settings.TMP_DIR)