def cb_prepare(args):

    request = args['request']
    config = request.get_configuration()
    data = request.get_data()
    entries = data['entry_list']
    elems = {}

    if config.get('ogp_fb_app_id'):
        elems['fb:app_id'] = config.get('ogp_fb_app_id')
    if config.get('ogp_fb_admins'):
        elems['fb:admins'] = config.get('ogp_fb_admins')

    image = None

    if len(entries) == 1:
        entry = entries[0]
        elems['og:type'] = 'article'
        elems['og:title'] = tools.escape_text(entry['title'].strip())
        elems['og:url'] = "%s/%s.html" % (config['base_url'],
                                          entry['file_path'])
        if len(entries) == 1 and config.get('ogp_fb_author_url'):
            elems['article:author'] = config.get('ogp_fb_author_url')
        body = entry['body']
        if isinstance(body, unicode):
            body = body.encode(config.get('blog_encoding', 'utf-8'))
        line = _DESC_REGEXP.sub('', body.split("\n")[0])
        elems['og:description'] = tools.escape_text(line)
        images = [x[1] for x in _IMG_REGEXP.findall(body)]
        if images:
            image = images[0]
            if not image.startswith('http'):
                image = urlparse.urljoin(config.get('base_url', ''), image)

    else:
        elems['og:type'] = 'blog'
        elems['og:title'] = config['blog_title']
        elems['og:url'] = config['base_url']
        description = config.get('blog_description')
        if description:
            elems['og:description'] = tools.escape_text(description)

    elems['og:site_name'] = config['blog_title']

    if image:
        elems['og:image'] = image
    else:
        elems['og:image'] = config.get('blog_image_url', _IMAGE_URL)

    data['ogp_tag'] = '\n'.join(
        [_TAG_TEMPLATE % (key, elems[key]) for key in elems])
Exemple #2
0
    def __getitem__(self, key, default=None):
        """
        Retrieves an item from this dict based on the key given.  If 
        the item does not exist, then we return the default.

        If the item is CONTENT_KEY then we return the result from 
        self.getData().

        This is just a convenience method for getData(...) and 
        getMetadata(...).

        There's no reason to override this--override getData and
        getMetadata instead.

        @param key: the key being sought
        @type  key: varies

        @param default: the default to return if the key does not
            exist
        @type  default: varies

        @returns: the value of self._metadata.get(key, default) or 
            self.getData()
        @rtype: varies
        """
        if key == CONTENT_KEY:
            return self.getData()

        if key == CONTENT_KEY + "_escaped":
            return tools.escape_text(self.getData())

        return self.getMetadata(key, default)
Exemple #3
0
def escv(s):
    """
    Takes in a value.  If it's not a string, we repr it and turn it into
    a string.  Then we escape it so it can be printed in HTML safely.

    :param s: any value

    :returns: a safe-to-print-in-html string representation of the value
    """
    if not s:
        return ""

    if not isinstance(s, str):
        s = repr(s)

    return tools.escape_text(s)
Exemple #4
0
def escv(s):
    """
    Takes in a value.  If it's not a string, we repr it and turn it into
    a string.  Then we escape it so it can be printed in HTML safely.

    :param s: any value

    :returns: a safe-to-print-in-html string representation of the value
    """
    if not s:
        return ""

    if not isinstance(s, str):
        s = repr(s)

    return tools.escape_text(s)
Exemple #5
0
 def test_ampersand(self):
     self.eq_(tools.escape_text("a&b"), "a&b")
Exemple #6
0
 def test_empty_string_to_empty_string(self):
     assert tools.escape_text("") == ""
Exemple #7
0
 def test_everything_else_unchanged(self):
     for mem in ((None, None), ("", ""), ("abc", "abc")):
         self.eq_(tools.escape_text(mem[0]), mem[1])
Exemple #8
0
 def test_ampersand(self):
     self.eq_(tools.escape_text("a&b"), "a&b")
Exemple #9
0
 def test_greater_than(self):
     self.eq_(tools.escape_text("a>b"), "a>b")
Exemple #10
0
 def test_single_quote_to_pos(self):
     self.eq_(tools.escape_text("a'b"), "a'b")
Exemple #11
0
 def test_none_to_none(self):
     self.eq_(tools.escape_text(None), None)
Exemple #12
0
 def test_everything_else_unchanged(self):
     assert tools.escape_text(None) == None
     assert tools.escape_text("") == ""
     assert tools.escape_text("abc") == "abc"
Exemple #13
0
 def test_double_quote_to_quot(self):
     assert tools.escape_text("a\"b") == "a"b"
Exemple #14
0
 def test_single_quote_to_pos(self):
     assert tools.escape_text("a'b") == "a'b"
Exemple #15
0
 def test_complicated_case(self):
     self.eq_(tools.escape_text("a&>b"), "a&>b")
Exemple #16
0
 def test_everything_else_unchanged(self):
     for mem in ((None, None),
                 ("", ""),
                 ("abc", "abc")):
         self.eq_(tools.escape_text(mem[0]), mem[1])
Exemple #17
0
 def test_none_to_none(self):
     self.eq_(tools.escape_text(None), None)
Exemple #18
0
 def test_empty_string_to_empty_string(self):
     self.eq_(tools.escape_text(""), "")
Exemple #19
0
 def test_empty_string_to_empty_string(self):
     self.eq_(tools.escape_text(""), "")
Exemple #20
0
 def test_double_quote_to_quot(self):
     self.eq_(tools.escape_text('a"b'), "a"b")
Exemple #21
0
 def test_single_quote_to_pos(self):
     self.eq_(tools.escape_text("a'b"), "a'b")
Exemple #22
0
 def test_lesser_than(self):
     self.eq_(tools.escape_text("a<b"), "a&lt;b")
Exemple #23
0
 def test_double_quote_to_quot(self):
     self.eq_(tools.escape_text("a\"b"), "a&quot;b")
Exemple #24
0
 def test_complicated_case(self):
     self.eq_(tools.escape_text("a&>b"), "a&amp;&gt;b")
Exemple #25
0
 def test_greater_than(self):
     self.eq_(tools.escape_text("a>b"), "a&gt;b")
Exemple #26
0
 def test_lesser_than(self):
     self.eq_(tools.escape_text("a<b"), "a&lt;b")
Exemple #27
0
 def test_none_to_none(self):
     assert tools.escape_text(None) == None