def generate_feed(config_agent, req_path, tpl_render): folder_pages_full_path = config_agent.config.get("paths", "pages_path") cache_file_full_path = os.path.join(folder_pages_full_path, ".zw_all_pages_list_cache") buf = cache.get_all_pages_list_from_cache(config_agent) md_list = buf.split() author = config_agent.config.get("main", "maintainer_email") or "Anonymous" e_author = atom.Element(name="author") child = atom.Element(name="name", text=author) e_author.append_children(child) ts = os.stat(cache_file_full_path).st_ctime updated = atom.generate_updated(ts) ts_as_id = "timestamp:" + commons.strutils.md5(updated) feed = atom.Feed(author=e_author, id=ts_as_id, updated=updated, title="Testing Feed Output") for md_file_name in md_list[:100]: req_path = commons.strutils.rstrips(md_file_name, ".md") req_path = commons.strutils.rstrips(req_path, ".markdown") local_full_path = mdutils.req_path_to_local_full_path( req_path, folder_pages_full_path) raw_text = commons.shutils.cat(local_full_path) page_title = mdutils.get_title_by_file_path_in_md( folder_pages_full_path, req_path) static_file_prefix = static_file.get_static_file_prefix_by_local_full_path( config_agent=config_agent, local_full_path=local_full_path, req_path=req_path) view_settings = page.get_view_settings(config_agent) page_content = mdutils.md2html(config_agent=config_agent, req_path=req_path, text=raw_text, static_file_prefix=static_file_prefix, **view_settings) text = cgi.escape(commons.strutils.safestr(page_content)) e_content = atom.Element(name="content", text=text, type="html") if not page_title: continue hash_title_as_id = "md5:" + commons.strutils.md5(page_title) updated = atom.generate_updated(os.stat(local_full_path).st_ctime) entry = atom.Entry(id=hash_title_as_id, title=page_title, updated=updated, content=e_content) feed.append_children(entry) buf = str(feed) return buf
def test_element_with_attributes(): e = atom.Element(name="name", text="Mark Pilgrim", age=18, sex="man") # assert str(e) == '<name age="18" sex="man">Mark Pilgrim</name>\n' tree = etree.fromstring(str(e)) assert tree.attrib == {'age': '18', 'sex': 'man'} assert tree.text == "Mark Pilgrim" assert (not tree.getchildren())
def test_element(): e = atom.Element(name="name", text="Mark Pilgrim") # assert str(e) == "<name>Mark Pilgrim</name>\n" tree = etree.fromstring(str(e)) assert tree.attrib == {} assert tree.tag == "name" assert tree.text == "Mark Pilgrim" assert (not tree.getchildren())
def test_feed(): e_link = atom.Element(name="link", href="http://example.org/2003/12/13/atom03") entry = atom.Entry(title="Atom-Powered Robots Run Amok", link=e_link, id="urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a", updated="2003-12-13T18:30:02Z", summary="Some text.") e_author = atom.Element(name="author") e_author.set_preverse_attrs("name", "John Doe") e_link = atom.Element(name="link", href="http://example.org/") feed = atom.Feed(title="Example Feed", link=e_link, updated="2003-12-13T18:30:02Z", author=e_author, id="urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6") feed.append_children(entry) buf = str(feed) # assert buf == ( # "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" # " <feed xmlns=\"http://www.w3.org/2005/Atom\">\n" # " <title>Example Feed</title>\n" # " <link href=\"http://example.org/\"/>\n" # " <updated>2003-12-13T18:30:02Z</updated>\n" # " <author>\n" # " <name>John Doe</name>\n" # " </author>\n" # " <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>\n" # " <entry>\n" # " <title>Atom-Powered Robots Run Amok</title>\n" # " <link href=\"http://example.org/2003/12/13/atom03\"/>\n" # " <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>\n" # " <updated>2003-12-13T18:30:02Z</updated>\n" # " <summary>Some text.</summary>\n" # " </entry>\n" # "</feed>\n" # ) tree = etree.fromstring(buf)
def test_element_with_children(): child = atom.Element(name="name", text="Mark Pilgrim") parent = atom.Element(name="author") parent.append_children(child) # assert str(parent) == ( # "<author>\n" # " <name>Mark Pilgrim</name>\n" # "</author>\n" # ) tree = etree.fromstring(str(parent)) assert tree.attrib == {} assert tree.tag == "author" assert tree.text.strip() == "" assert len(tree.getchildren()) == 1 child_tree = tree.getchildren()[0] assert child_tree.attrib == {} assert child_tree.tag == "name" assert child_tree.text.strip() == "Mark Pilgrim" assert (not child_tree.getchildren())
def test_entry(): e_link = atom.Element(name="link", href="http://example.org/2003/12/13/atom03") entry = atom.Entry(title="Atom-Powered Robots Run Amok", link = e_link, id="urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a", updated="2003-12-13T18:30:02Z", summary="Some text.") # assert str(entry) == ( # "<entry>\n" # " <summary>Some text.</summary>\n" # " <updated>2003-12-13T18:30:02Z</updated>\n" # " <link href=\"http://example.org/2003/12/13/atom03\"/>\n" # " <title>Atom-Powered Robots Run Amok</title>\n" # " <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>\n" # "</entry>\n" # ) tree = etree.fromstring(str(entry)) assert tree.attrib == {} assert tree.tag == "entry" assert not tree.text.strip() assert len(tree.getchildren()) == 5 e_summary = tree.xpath("/entry/summary")[0] assert e_summary.attrib == {} assert e_summary.tag == "summary" assert e_summary.text.strip() == "Some text." e_updated = tree.xpath("/entry/updated")[0] assert e_updated.attrib == {} assert e_updated.tag == "updated" assert e_updated.text.strip() == "2003-12-13T18:30:02Z" e_link = tree.xpath("/entry/link")[0] assert e_link.attrib == {'href' : "http://example.org/2003/12/13/atom03"} assert e_link.tag == "link" assert not e_link.text