Example #1
0
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
Example #2
0
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())
Example #3
0
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())
Example #4
0
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)
Example #5
0
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())
Example #6
0
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